Voltar ao Blog Gestão Empresarial

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

Luis Felipe Miléo

· 5 min de leitura

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:

#ddmrp #pcp

Compartilhar

Sobre o autor

Luis Felipe Miléo

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 LinkedIn