O raciocínio matemático por trás de cada bloco da apresentação.
Esta página torna transparente toda decisão técnica do trabalho — desde o conceito mais básico até a escolha estatística mais específica. Cada seção do site interativo tem um link discreto que leva direto para o bloco correspondente aqui. A ideia é que qualquer pessoa, com ou sem formação em estatística, consiga seguir o raciocínio e entender por que cada escolha foi feita.
A análise em três camadas.
Antes do detalhamento técnico, este é o resumo conceitual da metodologia em ~90 segundos de leitura.
Camada 1 — Decomposição. Toda série temporal pode ser pensada como a soma (ou o produto) de três componentes: tendência, sazonalidade e resíduo. O critério para escolher entre soma e produto é se a "altura" do padrão sazonal cresce com o nível da série. Aqui ela cresce: o pico de jul-ago vale ~10% do nível em 2018 e também ~10% em 2024 — mas em valores absolutos é três vezes maior. Por isso o modelo correto é multiplicativo.
Camada 2 — Estimação. Para extrair esses componentes usamos STL, uma técnica robusta que tolera bem dados atípicos (como o COVID em 2020). Para a apresentação calculamos um índice mais simples — base 100 — que mostra cada mês relativo ao mês médio do ano. Esse índice é fácil de interpretar: 110 significa "10% acima do mês médio".
Camada 3 — Previsão. Como a sazonalidade é multiplicativa, escolhemos o Holt-Winters multiplicativo, que respeita essa estrutura. Comparamos com três alternativas: ETS aditivo (especificação errada de propósito, para mostrar contraste), SARIMA (modelo clássico canônico) e Naive sazonal (baseline mais simples possível). Holt-Winters foi o melhor (MAPE 8,1%), mas o Naive ficou muito perto (8,8%) — e essa proximidade é o achado central da análise: a sazonalidade carrega quase toda a informação previsível. Portanto, o ganho marginal de modelos sofisticados está em prever cada cidade × setor separadamente, não em refinar mais o modelo agregado.
Por que confiar nesse padrão sazonal.
O padrão jul-ago como pico e dezembro como vale é contraintuitivo (a maioria das pessoas acha que o ciclo de empresas é janeiro-dezembro). Por isso vale explicitar três evidências independentes que se reforçam.
Repetição em cada ano individualmente
Não é média de um ano. O padrão aparece em cada um dos 8 anos da série (2018 a 2025) — não é artefato matemático, é regularidade observada.
Explicação no mundo real
O calendário fiscal brasileiro prevê o padrão: IRPF + DAS-MEI até maio escancaram a tributação CLT; renovação contratual em saúde/TI/criativos no meio do ano; recesso de Junta Comercial + 13º + festas em dez-jan.
Confirmação preditiva
O modelo que assume esse padrão (Holt-Winters multiplicativo) erra 4,5 pontos percentuais menos que o modelo que assume um padrão diferente (ETS aditivo). Se o padrão estivesse errado, o modelo correto erraria mais.
As três evidências são independentes: nenhuma depende das outras. Ver o mesmo padrão em 8 anos é evidência empírica. Ter explicação no calendário fiscal é evidência teórica. E o modelo correto vencer no teste é evidência preditiva. Quando três tipos diferentes de evidência apontam para o mesmo lugar, a probabilidade de ser coincidência cai muito.
Por que o dataset é o ICP, não o Brasil inteiro.
A primeira decisão de qualquer análise é definir o que está sendo medido. Confundir "universo do dataset" com "universo Brasil" leva a comparações erradas e metas mal calibradas.
O que está dentro e o que está fora
O dataset cobre 30 setores, todos prestadores de serviço profissional — Medicina, Psicologia, TI/DEV, Engenharia, Advocacia, Contabilidade, Apoio Administrativo, etc. Não há comércio (lojas), indústria (fábricas) nem MEI (Microempreendedor Individual).
| Universo | Aberturas em 2025 | % do Brasil |
|---|---|---|
| Brasil total (Mapa de Empresas, todos os tipos) | 4.700.000 | 100% |
| ICP do dataset (este case) | ~327.000 | ~7% |
| Base atual de clientes Contabilizei | ~100.000 | ~2% |
Por que essa distinção importa
- Comparações com o agregado Brasil ficariam erradas. O Brasil cresce numa taxa diferente porque inclui MEI e comércio, que respondem a estímulos econômicos distintos. Para falar do mercado endereçável pela Contabilizei, é preciso isolar o ICP.
- Toda a sazonalidade observada é específica de serviço-PJ. Comércio teria pico em dezembro (Natal). Indústria teria pico em outubro (Black Friday B2B). A ausência desses picos no dataset é, por si só, evidência de que o universo está corretamente segmentado.
- O cálculo de market share faz sentido. 20% de ~340k em 2026 = ~67k vendas — meta ambiciosa mas concebível, dado que a Contabilizei já abre 35-40k empresas/ano. Se compararmos contra o Brasil total (4,7M), a meta de 20% seria ~940k e perderia o sentido.
Decomposição clássica, STL e índice base 100.
Esta é a parte estatisticamente mais densa da apresentação. Vamos do conceito mais básico (o que é decompor uma série) até a fórmula final do índice.
1 · O que significa "decompor" uma série?
Quando olhamos para o gráfico de aberturas mês a mês, vemos três coisas se misturando ao mesmo tempo:
- Uma tendência — a curva sobe ao longo dos anos.
- Um padrão sazonal — alguns meses sempre são mais altos, outros mais baixos.
- Variação aleatória — ruído mês a mês que não tem padrão.
Decompor é separar essas três coisas matematicamente, para conseguir analisar cada uma sozinha.
Aditivo ou multiplicativo?
Existem duas formas de pensar a relação entre os componentes:
No aditivo, a "altura" do pico sazonal é constante em valor absoluto: se em 2018 o pico estava 10 mil acima da tendência, em 2024 também está 10 mil acima. No multiplicativo, a altura cresce proporcionalmente ao nível: se o nível dobra, a altura do pico dobra também. Pense na diferença entre uma onda do mar (multiplicativa: oscilações aumentam quando a maré sobe) e uma marquise de telhado (aditiva: pinga sempre a mesma quantidade).
Como escolher entre os dois
É um teste empírico. Olhamos o gráfico e medimos:
- Em 2018, o pico de julho-agosto vibrava cerca de 10k acima da tendência. Nível médio: ~140k. Proporção: ~7% do nível.
- Em 2024, o pico vibrava cerca de 30k acima da tendência. Nível médio: ~330k. Proporção: ~9% do nível.
A proporção se mantém estável (~7-10%), mas o valor absoluto triplicou. Esse é exatamente o comportamento multiplicativo. Por isso a decomposição usada no caso é a multiplicativa.
2 · STL — uma técnica robusta para extrair os componentes
Uma vez decidido que a relação é multiplicativa, precisamos de uma técnica para de fato calcular Tt, St e Rt a partir dos dados. Existem várias — usamos STL (Seasonal-Trend decomposition using LOESS).
LOESS é uma técnica de "suavização local". Imagine que você quer desenhar uma linha suave que passe perto dos pontos do gráfico, mas dando mais peso aos pontos próximos de cada região. É como se você desenhasse a linha em pedacinhos, cada pedacinho ajustado aos pontos vizinhos. STL aplica isso primeiro nos meses iguais (todos os janeiros, todos os fevereiros…) para extrair a sazonalidade, depois nos dados sem sazonalidade para extrair a tendência.
Por que STL e não a decomposição clássica?
- A clássica (médias móveis centradas) perde 6 meses no início e 6 no fim da série. Com 96 pontos, perderíamos 1/8.
- A clássica supõe sazonalidade rígida; STL deixa o padrão evoluir suavemente entre anos.
- STL é robusto a outliers — pontos atípicos (como o trimestre do COVID em 2020) não distorcem o resto.
Como STL funciona (visão geral)
Em ciclo:
- Primeiro estima a sazonalidade aplicando LOESS dentro de cada subsérie (todos os janeiros, fevereiros…)
- Depois, com a sazonalidade fora, estima a tendência aplicando LOESS no que sobrou.
- Repete dando menos peso aos pontos com resíduo grande.
Resultado: três séries — tendência, sazonalidade, resíduo — que somadas (ou multiplicadas) reconstituem a original.
3 · Índice base 100 — a forma de comunicar a sazonalidade
O STL é ótimo para diagnóstico, mas o resultado bruto não é direto de comunicar (é uma série com mesma escala dos dados). Para a apresentação calculamos um índice mais legível, em três passos:
Passo 1. Para cada mês de cada ano, calcular a participação daquele mês no total do ano:
Passo 2. Tirar a média dessa participação entre os 8 anos:
Passo 3. Multiplicar por 12 e por 100, normalizando para a base 100:
A interpretação fica imediata: 100 = mês médio do ano. 110 = 10% acima da média. 85 = 15% abaixo da média. Por construção, a média dos 12 índices é exatamente 100 — a normalização garante isso. Qualquer pessoa, sem conhecimento de estatística, consegue ler a tabela.
Por que essa fórmula e não usar St direto do STL?
- O índice é invariante à tendência por construção. Como dividimos cada mês pelo total do seu ano, o crescimento de longo prazo é cancelado automaticamente. Não precisamos estimar nem subtrair tendência.
- É robusto a um único ano atípico. A média entre 8 anos suaviza qualquer variação idiossincrática de um deles.
- É comunicável. A diretoria entende "+10% no inverno". Não precisaria entender "St = 0,38 desvio-padrão acima da média móvel ajustada".
O STL fica como validação cruzada: ele confirma visualmente que o padrão é estável entre anos. Se não fosse estável, a média seria enganosa e o índice perderia significado.
Holt-Winters multiplicativo, naive sazonal e a hierarquia dos modelos.
Aqui escolhemos o modelo que vai gerar o número de mercado 2026. A escolha não foi por força bruta ("rodei vários e fiquei com o melhor"), foi por análise da estrutura da série.
1 · O método de teste — hold-out
Hold-out é uma técnica simples e honesta de avaliar previsão. Em vez de deixar o modelo ver toda a série e depois "prever" o que ele já viu (o que não é prever, é interpolar), escondemos um pedaço do final e treinamos só no resto.
Aqui:
- Treino: 2018-01 até 2024-12 (84 meses)
- Hold-out: 2025-01 até 2025-12 (12 meses)
O modelo nunca vê o hold-out durante o treino. Depois pedimos a ele para prever os 12 meses de 2025 e comparamos com o que aconteceu de verdade. O erro nessa comparação é o MAPE.
2 · Holt-Winters multiplicativo — a escolha por estrutura
Holt-Winters é um modelo de previsão que aprende três coisas simultaneamente, atualizando-as a cada novo mês observado:
α, β e γ são pesos entre 0 e 1 que controlam o "quanto o modelo escuta o passado recente vs o passado distante". Eles são estimados automaticamente por máxima verossimilhança — o computador encontra os valores que fazem o modelo errar menos no treino. O importante é a forma da equação de previsão: a sazonalidade multiplica o nível. É isso que faz o modelo respeitar a estrutura multiplicativa que descobrimos no bloco anterior.
Por que multiplicativo aqui (e não aditivo)?
Se usássemos a versão aditiva, a equação de previsão seria:
Aqui o componente sazonal é somado, não multiplicado. Como o nível foi de ~140k em 2018 para ~330k em 2024, o componente sazonal absoluto teria que crescer junto. Mas como γ é finito e a atualização é lenta, ele nunca consegue acompanhar a curva de crescimento. O resultado é uma subestimação sistemática do pico nos anos finais.
Foi exatamente o que apareceu no teste: ETS aditivo errou 12,6%, Holt-Winters multiplicativo errou 8,1%. Diferença de 4,5 pontos percentuais — não é cosmética, é a diferença entre a especificação correta e a errada.
3 · Naive sazonal — o baseline que não pode ser ignorado
Em previsão, existe uma máxima clássica do estatístico Rob Hyndman: "um modelo sofisticado só é defensável se bate o naive de forma consistente."
O naive sazonal é o modelo mais simples possível: a previsão para um mês é igual ao valor desse mês um ano antes. Zero parâmetros para estimar. Como a série tem tendência, fizemos uma pequena correção (multiplicamos pelo CAGR dos últimos 12 meses sobre os 12 anteriores), mas a essência é a mesma.
O que aconteceu
| Modelo | MAPE 2025 | Comentário |
|---|---|---|
| Holt-Winters multiplicativo | 8,14% | Vencedor — especificação correta |
| Naive sazonal (com correção CAGR) | 8,78% | Quase tão bom — apenas 0,7 p.p. atrás |
| SARIMA(1,1,1)(1,1,1,12) | 10,39% | Modelo clássico, comparativo |
| ETS aditivo | 12,61% | Especificação errada (controle) |
O que isso quer dizer
O Naive sazonal acertar quase tão bem quanto o Holt-Winters não é um problema do Holt-Winters. É uma informação sobre a série: ela é tão sazonal e tão estável que "repetir o ano passado" já captura a maior parte da informação útil. Modelos sofisticados ganham pouco porque não há muito mais para ganhar no agregado.
A leitura prática: se você quer reduzir o erro da previsão, não vai conseguir muito mais refinando o modelo agregado. O caminho é ir para granularidade fina — prever por cidade × setor separadamente. É exatamente o que o Bloco 03 explora, e é por isso que o erro lá é maior (22,7% mediano por corte vs 8,1% no agregado): séries pequenas têm mais ruído. Mas é nessa granularidade que decisões operacionais reais são tomadas.
4 · Por que SARIMA também aparece
Holt-Winters não dá intervalo de confiança nativo no statsmodels (é um modelo de espaço de
estados, mas a implementação não expõe a banda de incerteza diretamente). SARIMA dá. Por isso, na projeção
2026 final, usamos SARIMA como cenário-base para conseguir traçar bandas de IC 80% e IC 95% — fundamentais
para mostrar incerteza honestamente. Holt-Winters fica como sanity check: se as duas projeções fossem muito
diferentes, haveria razão para investigar; como são parecidas, ganhamos confiança no número.
Por que MAPE agregado é 8% e por corte salta para 22,7%.
Não é o modelo que ficou pior. É a granularidade que muda — e a relação sinal/ruído com ela.
O experimento
Em vez de treinar um modelo só na série agregada, treinamos 240 modelos separados — um para cada combinação (cidade × setor). Cada um vê só o histórico da sua própria combinação. Depois calculamos o MAPE de 2025 em cada um.
Duas leituras do erro: mediano e ponderado
- MAPE mediano (22,7%): a metade dos cortes tem erro abaixo disso, a outra metade acima. É a "experiência típica" se você pegar um corte aleatório.
- MAPE ponderado por volume (18,7%): cortes grandes pesam mais. É o erro real se você somar todos os cortes — porque os pequenos quase não contribuem para o total.
A diferença entre os dois (22,7% vs 18,7%) já conta uma história: cortes grandes erram menos que cortes pequenos. Isso não é coincidência — é estatística básica: séries com volume alto têm sinal mais forte em relação ao ruído, então o modelo aprende melhor. Cortes pequenos são dominados por ruído mês a mês e o modelo tem pouco onde se apoiar.
Top 5 cortes mais difíceis (em 2025)
| Cidade | Setor | Vol 2025 | MAPE | CV histórico |
|---|---|---|---|---|
| São Paulo | Serviços Automotivos | 1.043 | 53,4% | 0,41 |
| Porto Alegre | Apoio Adm | 1.730 | 43,8% | 0,54 |
| São Paulo | Advocacia | 2.702 | 43,4% | 0,37 |
| Porto Alegre | TI/DEV | 1.749 | 42,9% | 0,57 |
| São Paulo | Apoio Adm | 19.548 | 41,0% | 0,40 |
Por que esses cortes erram — quatro mecanismos
- Quebra de regime. Setores como Saúde explodiram a partir de 2020. Um modelo treinado em "antes" não sabe descrever "depois". Ele projeta o crescimento médio histórico, mas a realidade acelerou.
- Volume baixo + crescimento alto. Quando a série tem poucos dados por mês, ruído natural domina o sinal. Crescer de 50 para 100 é +100%, mas pode ser flutuação aleatória.
- Cauda heterogênea. "Apoio Administrativo" é um catch-all que mistura microempresários muito diferentes. Não há um padrão único para o modelo aprender.
- Sazonalidade fraca. Alguns nichos não têm pico claro — sem padrão sazonal, o Holt-Winters perde uma de suas três pernas.
CV histórico — diagnóstico antes do modelo
O coeficiente de variação (CV) é uma medida da volatilidade da série relativa ao seu próprio
nível: CV = desvio-padrão / média. CV alto significa que a série oscila muito.
Cortes com CV > 0,7 são intrinsecamente difíceis de prever — por puro motivo estatístico, antes mesmo do modelo. Exemplo: Psicologia em BH tem CV 1,07 — o desvio é maior que a média. Não há modelo que conserte isso, porque o ruído está no fenômeno, não na técnica.
Como a meta anual vira distribuição mensal.
Definir "20% do mercado" é simples. Distribuir essa meta nos 12 meses respeitando a sazonalidade real do mercado é o que evita planejamento subestimado.
O cálculo
Em três passos:
Sensibilidade a premissas
Para mostrar que o número não depende de uma única hipótese, calculamos a meta sob 5 cenários de mercado e 5
níveis de share. A tabela completa está em outputs/sensibilidade_meta.csv. Pontos principais:
| Cenário de mercado | Share 17% | Share 20% | Share 23% |
|---|---|---|---|
| Holt-Winters (conservador) | ~55k | 64,8k | ~75k |
| SARIMA (base) | 57,4k | 67,5k | ~78k |
| YoY 2025 (acelerado) | ~66k | 77,9k | ~90k |
A faixa robusta para a meta de 20% fica entre 65k e 78k vendas dependendo do cenário. Esse é o número honesto para planejamento — não um único valor pontual.
Por que distribuir pela sazonalidade e não uniformemente
Distribuição uniforme = meta/12 = ~5,6k/mês. Distribuição sazonal = ~6,2k/mês em jul-ago, ~4,8k/mês em dezembro. A diferença entre o pico real e a média uniforme é de aproximadamente 30%.
Se o time comercial e a operação de onboarding forem dimensionados pela média, vão ficar curtos no pico e ociosos no vale. Distribuir pela sazonalidade real evita isso e expõe a necessidade de capacidade flexível (campanhas de mídia concentradas em mai-ago, talvez contratação temporária).
Por que medianas dividem os quadrantes.
A matriz volume × CAGR é uma adaptação da clássica matriz BCG. Eixo X = volume 2025 (em escala log para os setores grandes não dominarem visualmente). Eixo Y = CAGR 2018-2025. Cortes nas medianas dividem o gráfico em 4 quadrantes.
Por que medianas e não médias
- Robustez a outliers. Um setor gigante (Medicina) puxa a média de volume para cima e distorce a classificação dos demais. A mediana resiste a isso.
- Balanceamento garantido. Por construção, ~50% dos setores ficam acima de cada mediana. Quadrantes nunca ficam vazios artificialmente, e cada um tem população suficiente para análise.
- Sliders ajustáveis. O site permite mover as linhas para outro corte (ex: "considere apenas quem cresce mais que 15%") e ver como a classificação muda. As medianas são apenas o default.
O significado de cada quadrante
| Quadrante | Volume | CAGR | Recomendação |
|---|---|---|---|
| ATACAR | Alto | Alto | Investimento prioritário — tem escala e cresce |
| APOSTAR | Baixo | Alto | Tese de futuro — apostar na trajetória |
| MANTER | Alto | Baixo | Vaca leiteira — defender o share existente |
| DEPRIORIZAR | Baixo | Baixo | Não vale o esforço de aquisição |
Por que filtramos volume mínimo (1.500 default)
Setores microscópicos (com menos de 500 aberturas/ano) entram na matriz com CAGR distorcido por base baixa. Crescer de 50 para 100 é +100% ao ano, mas é ruído estatístico. O filtro remove esses casos. O slider no site permite ajustar.
De quadrantes para 3 frentes — passagem da análise para a estratégia
A matriz mostra onde investir, mas não como. As 3 frentes priorizadas (Vertical Saúde, TI/DEV freelancer fora de SP, Reforma Tributária como gatilho) são a operacionalização dessa leitura: cada frente tem mensagem definida, canais de aquisição, KPI de 90 dias e KPI de 12 meses. Total = 61k aberturas atribuídas, equivalente a ~90% da meta de 20% de market share, sem inventar canal novo nem dobrar o time.
Decisões técnicas e por quê.
Perguntas naturais que surgem ao examinar o trabalho, e a explicação de cada decisão. Tudo o que
aparece aqui está em outputs/ no repositório — apenas ficou fora da apresentação principal por
foco e tempo.
SARIMA(1,1,1)(1,1,1,12) aplica duas diferenciações (regular e sazonal), o que equivale a
estacionarizar antes de modelar. Holt-Winters multiplicativo é um modelo de espaço de
estados com nível e tendência adaptativos, que naturalmente acomoda séries não estacionárias. ADF/KPSS na
série diferenciada e dessazonalizada passariam, mas o teste seria redundante dada a especificação dos
modelos.SARIMA(1,1,1)(1,1,1,12) é a especificação canônica para séries
com tendência e sazonalidade mensal. Auto-ARIMA por AIC/BIC frequentemente oscila em ±1 lag, com ganho
marginal que não justifica o custo computacional e a perda de simplicidade interpretativa. O foco foi
entregar um sinal claro, não otimizar centésimos de ponto percentual.cv_por_corte.csv. CV é diagnóstico a priori da dificuldade
de previsão, independente do modelo. Cortes com CV > 0,7 são intrinsecamente difíceis de
prever (ex: Psicologia em BH com CV 1,07). Esse dado nos ajuda a explicar por que alguns cortes
erram — não é o modelo que está mal, é o fenômeno que tem ruído alto demais para o tamanho da série.