Period censoring: como corrigir ADU em SKUs com histórico de ruptura
ADU calculada sobre período com ruptura subestima a demanda real. Period censoring corrige o histórico — entenda como aplicar no DDMRP em Odoo com a stack ForgeFlow.
Luis Felipe Miléo
ADU — Average Daily Usage — é o consumo médio diário do SKU calculado sobre uma janela histórica. É um dos três insumos principais do dimensionamento de buffer (junto com lead time e variabilidade).
ADU tem um problema sutil. Quando o SKU teve ruptura (estoque zero) num intervalo do histórico, o consumo registrado nesses dias é zero — não porque a demanda foi zero, mas porque não havia o que consumir. ADU calculada sobre essa janela fica artificialmente baixa. Buffer dimensionado fica artificialmente pequeno. SKU continua tendo ruptura. Loop fechado.
A correção desse efeito é o que a literatura DDMRP chama de period censoring — censurar (excluir, ou ajustar) os períodos de ruptura no cálculo do ADU.
O efeito do problema, em números
Suponha SKU com demanda real de 100 unidades por dia. Operação tem ruptura ao longo de 20 dos últimos 60 dias (33% do tempo em estoque zero).
Sem period censoring:
ADU = (40 dias × 100 + 20 dias × 0) / 60 = 67 unidades/dia
Com period censoring (excluindo dias de ruptura):
ADU = (40 dias × 100) / 40 = 100 unidades/dia
Diferença: 33% para baixo. Buffer dimensionado com 67 em vez de 100 é insuficiente em 33%. Ruptura continua. ADU se mantém artificialmente baixa. O método entra em equilíbrio errado.
Como detectar período “censurável”
Tecnicamente, um dia é candidato a censoring quando:
- Estoque on-hand foi zero ou abaixo de Top of Red durante um intervalo significativo do dia
- Houve demanda perdida documentada (pedido recusado, pedido transferido para concorrente)
- Estoque permaneceu em vermelho profundo apesar de ordens em curso
Sinais “frouxos” — saldo baixo mas com vendas — não são censoring. O período só é censurado quando há evidência de que a demanda foi reprimida.
Como aplicar period censoring na prática
Há três abordagens, em ordem de sofisticação:
1. Exclusão simples
A janela de cálculo do ADU exclui os dias marcados como rupturas. Equivalente a:
ADU = sum(consumo_dia_i para i não-rupturados) / count(dias não-rupturados)
Simples, robusto. É o padrão na maioria das implementações.
2. Imputação por média
Em vez de excluir, imputa-se nos dias rupturados o consumo médio dos dias adjacentes não-rupturados.
consumo_estimado_dia_rupturado = média dos N dias adjacentes não-rupturados
Útil quando a janela tem muitos dias rupturados e excluí-los reduz amostra demais.
3. Imputação ponderada por demanda perdida
Se houver registro de demanda perdida (pedidos não atendidos por falta de estoque), o consumo “real” do dia é estimado como consumo_atendido + demanda_perdida_estimada.
Mais preciso, mas exige disciplina de registrar pedido perdido — pouco comum no Brasil.
Como a stack ForgeFlow expõe isso
A camada DDMRP da ForgeFlow suporta period censoring nativamente no stock.buffer. O planejador define:
- Janela de cálculo do ADU (em dias)
- Threshold de ruptura para considerar dia censurável (geralmente: on-hand < Top_of_Red por mais de X horas no dia)
- Estratégia de censoring (exclusão ou imputação)
A configuração é por SKU ou por buffer profile. O recálculo acontece em cada cron de atualização de ADU.
A tela de ADU Dashboard (uma das 13 do dashboard ForgeFlow) mostra ADU bruto vs ADU censurado lado a lado, permitindo ao planejador entender o efeito.
Onde period censoring é crítico
Em distribuidor recém-implantado DDMRP
A operação tinha rupturas frequentes antes do método. Aplicar DDMRP sobre histórico cru subestima ADU em todo o catálogo. Period censoring é etapa obrigatória da implantação.
Em SKU sazonal com ruptura no pico
Se o item rompeu no Natal anterior, o ADU do pico está subestimado. Sem censoring, o buffer do próximo Natal vai ser pequeno demais. Esse é o caso onde DAF sozinho não basta — precisa censoring junto.
Em fábrica com histórico de fornecedor instável
MP que faltou repetidamente subestima ADU dos subconjuntos que dependem dela. Censoring corrige a base de cálculo do método.
Onde period censoring NÃO se aplica
- SKU em descontinuação — demanda baixa por mercado, não por ruptura
- SKU novo, sem histórico — usa ADU semente (manual) até estabilizar
- SKU com substituto declarado — quando o cliente migrou para outro item, o consumo zero é real
Caso real
Em um cliente brasileiro em Odoo 18, a primeira rodada de implantação DDMRP encontrou 12% dos SKUs com ADU subestimado por mais de 25% devido a histórico de ruptura. Após aplicar period censoring (exclusão simples), os buffers desses 12% foram redimensionados, e a ruptura mensal caiu pela metade no segundo trimestre. Sem o censoring, esses SKUs teriam permanecido em loop de ruptura mesmo com DDMRP em operação.
Stack e papéis
Period censoring é suportado tanto na camada community (OCA) quanto na camada Professional da ForgeFlow (Espanha) — esta última com tela visual de comparação ADU bruto vs censurado. A KMEE é parceira oficial brasileira para implantação Enterprise — incluindo o trabalho de calibragem inicial de censoring e treinamento.
Leituras relacionadas:
Sobre o autor
Luis Felipe Miléo
Desenvolvedor Odoo · KMEE
Desenvolvedor especializado em localização fiscal e projetos open source no ecossistema Odoo/OCA, com foco em integrações para o mercado latino-americano.
Ver perfil no LinkedInArtigos relacionados
Open Finance regulado vs APIs proprietárias: qual usar para cada caso
7 de jul. de 2026
Gestão EmpresarialDDA no Odoo: contas a pagar 100% automatizadas
30 de jun. de 2026
Gestão EmpresarialTOTVS está descontinuando sua API bancária — Odoo é a alternativa neutra
9 de jun. de 2026