I. RESUMEN EJECUTIVO

FarmaPlus Colombia presenta un desempeño empresarial sólido con $262.6 millones en ventas brutas durante el primer semestre de 2025. Sin embargo, el análisis detallado revela oportunidades críticas de optimización en rentabilidad, diversificación de ingresos y control de calidad.

Este documento presenta un análisis integral del desempeño de ocho líneas de productos farmacéuticos, con recomendaciones estratégicas para mejorar indicadores clave.


II. CONTEXTO EMPRESARIAL

FarmaPlus opera en un mercado dinámico donde la concentración de ventas en pocas categorías representa tanto fortaleza como riesgo. Con márgenes de ganancia fluctuando entre $6,891 y $32,112 por transacción, existe una brecha de rentabilidad de 4.6x que requiere intervención estratégica.

Período de análisis: Enero - Junio 2025 (26 semanas laborales)
Total de transacciones: 5,000 registros
Categorías analizadas: 8 líneas de productos farmacéuticos


III. CARGA Y PREPARACIÓN DE DATOS

library(readxl)
library(dplyr)
library(ggplot2)
library(plotly)
library(knitr)

# Cargar datos
transacciones <- read_excel("FarmaPlus_Para_PowerBI.xlsx", sheet = "Transacciones")

# Preparar datos
datos <- transacciones %>%
  mutate(
    Categoria_Producto = Categoria,
    Estado = ifelse(Devolución == 1, "Devolución", "Venta")
  )

# Análisis agregado
analisis <- datos %>%
  group_by(Categoria_Producto) %>%
  summarise(
    Ventas = sum(Venta_Bruta),
    Costo = sum(Costo),
    Margen = sum(Margen),
    Margen_Prom = mean(Margen),
    Margen_Pct = mean(Margen_Porcentaje),
    Transacciones = n(),
    Devoluciones = sum(Devolución),
    Tasa_Dev = round((sum(Devolución) / n()) * 100, 2),
    .groups = 'drop'
  ) %>%
  mutate(
    Rentabilidad = case_when(
      Margen_Prom > 20000 ~ "Muy Alta",
      Margen_Prom > 10000 ~ "Alta",
      Margen_Prom > 5000 ~ "Media",
      TRUE ~ "Baja"
    )
  ) %>%
  arrange(desc(Ventas))

IV. INDICADORES CLAVE

cat("
## Métricas Principales

| Indicador | Valor |
|-----------|-------|
| **Ventas Totales** | $", format(round(sum(datos$Venta_Bruta)/1e6, 1), decimal.mark="."), " Millones |
| **Margen Total** | $", format(round(sum(datos$Margen)/1e6, 1), decimal.mark="."), " Millones |
| **Margen Promedio** | ", round(mean(datos$Margen_Porcentaje), 2), "% |
| **Tasa de Devoluciones** | ", round((sum(datos$Devolución) / nrow(datos)) * 100, 2), "% |
| **Transacciones Totales** | ", nrow(datos), " |
| **Categorías Analizadas** | ", n_distinct(datos$Categoria_Producto), " |

")

Métricas Principales

Indicador Valor
Ventas Totales $ 262.6 Millones
Margen Total $ 76.2 Millones
Margen Promedio 28.9 %
Tasa de Devoluciones 1.92 %
Transacciones Totales 5000
Categorías Analizadas 8

V. HALLAZGO 1: CONCENTRACIÓN DE VENTAS

Análisis

Las ventas se concentran en pocas categorías, generando dependencia operacional. Suplementos y Antibióticos representan 42.2% del ingreso total, mientras que otras categorías contribuyen menos del 20% cada una.

Riesgo identificado: Si una categoría clave experimenta disminución, el impacto en ingresos totales es significativo.

p1 <- ggplot(analisis, aes(x = reorder(Categoria_Producto, -Ventas), 
                            y = Ventas/1e6, 
                            fill = Ventas/1e6)) +
  geom_col() +
  scale_fill_gradient(low = "#ffcccc", high = "#2E75B5") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1),
        plot.title = element_text(face = "bold", size = 12)) +
  labs(title = "Distribución de Ventas Brutas por Categoría",
       x = "Categoría de Producto", 
       y = "Ventas (Millones $)", 
       fill = "Ventas") +
  theme(legend.position = "none")

ggplotly(p1, tooltip = "y")

Recomendación: Desarrollar estrategia de diversificación para reducir dependencia de categorías líderes.


VI. HALLAZGO 2: DISPARIDAD DE RENTABILIDAD

Análisis

Existe una brecha crítica de 4.6x en márgenes promedio entre categorías. Suplementos genera $32,112 por transacción mientras Antidiarreicos solo $6,891. Esta disparidad indica:

  • Diferencias en costos de adquisición
  • Variabilidad en estrategia de precios
  • Posibles ineficiencias operacionales en categorías de bajo margen
p2 <- ggplot(analisis, aes(x = reorder(Categoria_Producto, -Margen_Prom), 
                            y = Margen_Prom,
                            fill = Rentabilidad)) +
  geom_col() +
  scale_fill_manual(values = c("Muy Alta" = "#5cb85c", "Alta" = "#90ee90", 
                               "Media" = "#f0ad4e", "Baja" = "#d9534f")) +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1),
        plot.title = element_text(face = "bold", size = 12)) +
  labs(title = "Margen Promedio por Categoría - Clasificación de Rentabilidad",
       x = "Categoría de Producto", 
       y = "Margen Promedio ($)", 
       fill = "Nivel de Rentabilidad")

ggplotly(p2, tooltip = "y")

Recomendación: Revisar estructura de costos y estrategia de precios en categorías de baja rentabilidad (Antidiarreicos y Antihistamínicos).


VII. HALLAZGO 3: CALIDAD OPERACIONAL

Análisis

La tasa global de devoluciones es 1.92%, que es aceptable pero mejorable. Importante notar que la variabilidad entre categorías es mínima, sugiriendo que los problemas de devolución son sistémicos, no específicos de productos individuales.

Esto implica que las mejoras en control de calidad beneficiarían a toda la organización.

p3 <- ggplot(analisis, aes(x = reorder(Categoria_Producto, -Tasa_Dev), 
                            y = Tasa_Dev,
                            fill = Tasa_Dev)) +
  geom_col() +
  scale_fill_gradient(low = "#5cb85c", high = "#d9534f") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1),
        plot.title = element_text(face = "bold", size = 12)) +
  labs(title = "Tasa de Devoluciones por Categoría",
       x = "Categoría de Producto", 
       y = "Devoluciones (%)", 
       fill = "% Devoluciones") +
  theme(legend.position = "none")

ggplotly(p3, tooltip = "y")

Recomendación: Implementar programa integral de control de calidad que abarque toda la cadena de suministro.


VIII. HALLAZGO 4: RELACIÓN MARGEN-CALIDAD

Análisis

El análisis de correlación entre margen y devoluciones muestra NO existe relación significativa: productos con márgenes altos no tienen necesariamente tasas de devolución bajas.

Implicación estratégica: Invertir en mejora de calidad NO afectaría negativamente la rentabilidad, representando una oportunidad de valor agregado.

p4 <- ggplot(analisis, aes(x = Tasa_Dev, 
                           y = Margen_Prom,
                           size = Ventas,
                           color = Rentabilidad,
                           label = Categoria_Producto)) +
  geom_point(alpha = 0.6) +
  scale_color_manual(values = c("Muy Alta" = "#5cb85c", "Alta" = "#90ee90", 
                                "Media" = "#f0ad4e", "Baja" = "#d9534f")) +
  scale_size_continuous(range = c(5, 15)) +
  theme_minimal() +
  theme(plot.title = element_text(face = "bold", size = 12)) +
  labs(title = "Análisis Bidimensional: Margen vs Devoluciones",
       subtitle = "Tamaño de burbuja = Volumen de ventas",
       x = "Tasa de Devoluciones (%)", 
       y = "Margen Promedio ($)",
       color = "Rentabilidad",
       size = "Volumen")

ggplotly(p4, tooltip = c("label", "x", "y", "size"))

IX. TABLA RESUMEN ANALÍTICA

tabla_final <- analisis %>%
  select(Categoria_Producto, Ventas, Margen, Margen_Prom, Margen_Pct, Transacciones, Tasa_Dev, Rentabilidad) %>%
  mutate(
    Ventas_M = paste("$", format(round(Ventas/1e6, 2), decimal.mark="."), "M"),
    Margen_M = paste("$", format(round(Margen/1e6, 2), decimal.mark="."), "M"),
    Margen_Prom_F = paste("$", format(round(Margen_Prom), big.mark=","))
  ) %>%
  select(Categoria_Producto, Ventas_M, Margen_M, Margen_Prom_F, Margen_Pct, Transacciones, Tasa_Dev, Rentabilidad) %>%
  rename(
    "Categoría" = Categoria_Producto,
    "Ventas" = Ventas_M,
    "Margen Total" = Margen_M,
    "Margen Prom" = Margen_Prom_F,
    "Margen %" = Margen_Pct,
    "# Transacciones" = Transacciones,
    "Devoluciones %" = Tasa_Dev,
    "Rentabilidad" = Rentabilidad
  )

kable(tabla_final, caption = "Análisis Agregado por Categoría de Producto")
Análisis Agregado por Categoría de Producto
Categoría Ventas Margen Total Margen Prom Margen % # Transacciones Devoluciones % Rentabilidad
Suplementos $ 59.61 M $ 19.33 M $ 19,331,469 32.43 602 2.82 Muy Alta
Antibióticos $ 51.14 M $ 11.80 M $ 11,800,650 23.08 624 1.60 Muy Alta
Vitaminas $ 38.69 M $ 12.01 M $ 12,008,336 31.03 620 2.10 Muy Alta
Cremas/Tópicos $ 32.02 M $ 10.67 M $ 10,671,946 33.33 617 1.78 Muy Alta
Analgésicos $ 27.35 M $ 7.09 M $ 7,091,585 25.93 624 1.92 Muy Alta
Antinflamatorios $ 22.90 M $ 6.31 M $ 6,305,436 27.54 644 1.71 Muy Alta
Antihistamínicos $ 16.60 M $ 4.74 M $ 4,743,764 28.57 654 1.53 Muy Alta
Antidiarreicos $ 14.33 M $ 4.24 M $ 4,238,128 29.58 615 1.95 Muy Alta

X. RECOMENDACIONES ESTRATÉGICAS

1. OPTIMIZACIÓN DE RENTABILIDAD

  • Acción: Revisar estructura de costos en Antidiarreicos y Antihistamínicos
  • Meta: Aumentar margen promedio a mínimo $15,000
  • Impacto: +$8M anuales en margen total

2. DIVERSIFICACIÓN DE INGRESOS

  • Acción: Incrementar participación de categorías medianas
  • Meta: Reducir concentración de 42% a 35%
  • Impacto: Reducción de riesgo operacional

3. MEJORA DE CALIDAD

  • Acción: Programa integral de control de calidad
  • Meta: Reducir devoluciones de 1.92% a 1.0%
  • Impacto: +$1.3M anuales en ventas netas

4. DESARROLLO DE PORTFOLIO

  • Acción: Crear nuevas líneas en segmentos de alto margen
  • Meta: Replicar modelo de Suplementos en otras categorías
  • Impacto: Crecimiento de 15-20% anual

XI. INDICADORES DE SEGUIMIENTO

cat("
## KPIs Recomendados para Monitoreo

| KPI | Actual | Meta (6 meses) | Responsable |
|-----|--------|----------------|------------|
| Margen Promedio Global | $", round(mean(datos$Margen), 0), " | $16,000 | Finanzas |
| Tasa de Devoluciones | 1.92% | 1.00% | Calidad |
| Margen en Antidiarreicos | $6,891 | $12,000 | Operaciones |
| Concentración Top 2 | 42.2% | 35.0% | Ventas |
| Margen % Promedio | ", round(mean(datos$Margen_Porcentaje), 2), "% | ", round(mean(datos$Margen_Porcentaje), 2) + 2, "% | Finanzas |

")
## 
## ## KPIs Recomendados para Monitoreo
## 
## | KPI | Actual | Meta (6 meses) | Responsable |
## |-----|--------|----------------|------------|
## | Margen Promedio Global | $ 15238  | $16,000 | Finanzas |
## | Tasa de Devoluciones | 1.92% | 1.00% | Calidad |
## | Margen en Antidiarreicos | $6,891 | $12,000 | Operaciones |
## | Concentración Top 2 | 42.2% | 35.0% | Ventas |
## | Margen % Promedio |  28.9 % |  30.9 % | Finanzas |

XII. CONCLUSIONES

FarmaPlus Colombia tiene fundamentos sólidos con ingresos significativos y operaciones estables. Sin embargo, existen cuatro oportunidades críticas para optimizar indicadores:

  1. Rentabilidad dispareja → Requiere revisión de costos
  2. Concentración de ingresos → Necesita diversificación
  3. Calidad sistémica → Impacto transversal de mejoras
  4. Portfolio limitado → Oportunidad de expansión

La implementación de estas recomendaciones podría generar +$9M anuales en valor agregado.


XIII. NOTA METODOLÓGICA

Análisis realizado con: - Herramienta: R + RMarkdown - Datos: 5,000 transacciones (Enero-Junio 2025) - Período: Primer Semestre 2025 - Método: Análisis exploratorio + visualización interactiva - Reproducibilidad: Código R completo incluido

Fecha: 2026-06-04