Marketing

    pLTV e Modelos BTYD em Mídia Paga: BG/NBD, Gamma-Gamma e Value-Based Bidding Além do ROAS Imediato

    Aprenda a aplicar modelos BG/NBD e Gamma-Gamma para calcular o pLTV. Otimize lances no Google e Meta Ads por valor futuro real.

    2026-08-3015 minEquipe MaxVision
    CLIP_001 · DJI O4FPV · 4K · 60FPS
    MARKETING · 2026.08.30

    Otimizar leilões de mídia paga pelo ROAS de primeiro pedido atrai clientes de compra única e estrangula a margem de longo prazo.

    Motores de lances inteligentes priorizam a conversão imediata mais barata. Essa mecânica favorece caçadores de cupom e ignora o valor acumulado no ciclo de vida do cliente.

    Estação de trabalho analítica e econométrica com monitores de telemetria e luminária industrial com acento carmim

    Por que a otimização por ROAS imediato cria um teto artificial de escala?

    O ROAS do primeiro pedido penaliza safras de alto valor residual que iniciam sua jornada com tickets de entrada moderados.

    Quando o algoritmo busca maximizar o faturamento imediato, ele inflaciona o lance para compradores oportunistas de produtos em promoção.

    Nos leilões do Google Smart Bidding e Meta Advantage+, o lance calcula a probabilidade de conversão multiplicada pelo valor declarado.

    Se o anunciante envia apenas o valor da primeira compra, o leilão trata um cliente fiel e um comprador avulso com o mesmo peso.

    A tabela abaixo compara o retorno aparente no dia zero contra o retorno real acumulado em 12 meses:

    Métrica de AquisiçãoSafra A (Promoção Agressiva)Safra B (Linha Recorrente Core)
    Ticket Médio no Dia 0R$ 450,00R$ 200,00
    Custo de Aquisição (CAC)R$ 90,00R$ 80,00
    ROAS Imediato (Dia 0)5.0x (Priorizado no leilão)2.5x (Despriorizado no leilão)
    Probabilidade de Recompra (12m)4%68%
    Transações Médias no Ano1,05 pedidos4,80 pedidos
    LTV Realizado em 365 DiasR$ 472,50R$ 960,00
    LTV / CAC Real em 12 Meses5,25x12,00x

    A plataforma de anúncios reduz o investimento na Safra B por causa do ROAS inicial mais baixo. Essa decisão priva o negócio de sua maior fonte de lucro líquido anual.

    O que é a modelagem BTYD e como funciona o BG/NBD?

    A modelagem Buy 'Til You Die estima probabilisticamente quando clientes não contratuais realizam novas compras e quando abandonam a marca.

    Diferente de negócios com assinatura formal, o varejo e o e-commerce operam em regime não contratual. Nesses mercados, o cliente deixa de comprar silenciosamente.

    O modelo BG/NBD (Beta-Geometric/Negative Binomial Distribution), introduzido por Fader, Hardie e Lee (2005), baseia-se em duas premissas estocásticas:

    1. Frequência de Transação: O número de transações segue um processo de Poisson com taxa individual λ. Essa taxa varia entre indivíduos conforme uma distribuição Gamma.
    2. Abandono Latente: A cada compra, o cliente decide abandonar a relação comercial com probabilidade p. Essa propensão ao churn segue uma distribuição Beta.

    O modelo exige três variáveis históricas por cliente, consolidadas na matriz RFM:

    • Recência (t_x): Tempo decorrido entre a primeira transação e a última compra observada.
    • Frequência (x): Número de compras de recompra realizadas após o pedido inicial (x ≥ 0).
    • Tempo Total (T): Intervalo de tempo entre a primeira compra e o final do período analisado.

    A probabilidade de um cliente com histórico (x, t_x, T) continuar ativo no momento atual é expressa por:

    P(Alive | x, t_x, T) = 1 ÷ [ 1 + (b ÷ (a + b + x - 1)) × ((α + T) ÷ (α + t_x))^(r + x) ]

    Com a probabilidade P(Alive) calibrada, o modelo projeta o número esperado de compras futuras E[X(t)] para a janela t.

    Console de modelagem estatística com dial de ajuste paramétrico e iluminação carmim focada

    Como o modelo Gamma-Gamma projeta o valor monetário futuro?

    O modelo Gamma-Gamma calcula o ticket médio esperado de transações futuras assumindo independência entre frequência e valor monetário.

    O modelo BG/NBD estima quantas vezes o cliente comprará. O Gamma-Gamma, documentado por Fader e Hardie (2013), estima o montante financeiro médio de cada uma dessas visitas.

    A formulação assume que o gasto médio observado m_x em x compras de recompra é uma estimativa do ticket latente v.

    A distribuição dos gastos individuais segue uma distribuição Gamma. Entre clientes distintos, a escala média também varia conforme uma distribuição Gamma.

    O ticket médio esperado para transações futuras E[M] é calculado por média ponderada bayesiana:

    E[M | x, m_x] = [ (p × x) ÷ (p × x + q - 1) ] × m_x + [ (q - 1) ÷ (p × x + q - 1) ] × (γ × p ÷ (q - 1))

    Multiplicando as compras esperadas E[X(t)] pelo ticket projetado E[M], obtemos o Lifetime Value Preditivo Contínuo Descontado (DCLV):

    pLTV(t) = E[X(t)] × E[M] × (1 ÷ (1 + d)^t)

    O termo d representa a taxa de desconto financeiro no horizonte considerado.

    Como treinar e calibrar modelos probabilísticos em Python?

    O treinamento dos modelos BG/NBD e Gamma-Gamma utiliza otimização por máxima verossimilhança sobre a matriz de transações do banco de dados.

    Bibliotecas abertas como a Lifetimes e pacotes compatíveis com BTYD processam os dados diretamente de data warehouses modernos.

    O script abaixo executa a preparação da matriz RFM, o ajuste dos parâmetros dos modelos e a predição do pLTV para 180 dias:

    import pandas as pd
    import numpy as np
    from lifetimes import BetaGeoFitter, GammaGammaFitter
    from lifetimes.utils import summary_data_from_transaction_data
    
    # 1. Carregamento dos dados transacionais de primeira parte
    df_transactions = pd.read_parquet("transacoes_historicas.parquet")
    
    # 2. Construção da matriz RFM com corte temporal
    rfm_summary = summary_data_from_transaction_data(
        df_transactions,
        customer_id_col="customer_id",
        datetime_col="transaction_date",
        monetary_value_col="order_value",
        observation_period_end="2026-08-30",
        freq="D"
    )
    
    # 3. Ajuste do modelo de frequência BG/NBD com regularização L2
    bgf = BetaGeoFitter(penalizer_coef=0.01)
    bgf.fit(rfm_summary["frequency"], rfm_summary["recency"], rfm_summary["T"])
    
    # 4. Ajuste do modelo de ticket médio Gamma-Gamma (apenas recompradores)
    recompradores = rfm_summary[
        (rfm_summary["frequency"] > 0) & (rfm_summary["monetary_value"] > 0)
    ]
    ggf = GammaGammaFitter(penalizer_coef=0.01)
    ggf.fit(recompradores["frequency"], recompradores["monetary_value"])
    
    # 5. Predição de transações e pLTV para o horizonte de 180 dias
    dias_predicao = 180
    rfm_summary["prob_alive"] = bgf.conditional_probability_alive(
        rfm_summary["frequency"], rfm_summary["recency"], rfm_summary["T"]
    )
    rfm_summary["exp_purchases_180d"] = bgf.conditional_expected_number_of_purchases_up_to_time(
        dias_predicao, rfm_summary["frequency"], rfm_summary["recency"], rfm_summary["T"]
    )
    rfm_summary["exp_monetary_value"] = ggf.conditional_expected_average_profit(
        rfm_summary["frequency"], rfm_summary["monetary_value"]
    )
    rfm_summary["pltv_180d"] = ggf.customer_lifetime_value(
        bgf,
        rfm_summary["frequency"],
        rfm_summary["recency"],
        rfm_summary["T"],
        rfm_summary["monetary_value"],
        time=6,  # 6 meses (180 dias)
        discount_rate=0.01,
        freq="D"
    )
    

    O pipeline grava as estimativas de probabilidade de sobrevivência e valor predito na tabela de audiências para uso no ecossistema de mídia.

    Como integrar o pLTV no Google Ads e na Meta Conversions API?

    A ingestão de lances baseados em valor requer o envio de sinais preditivos via APIs server-side no momento da conversão ou em lotes offline.

    O leilão algorítmico utiliza o valor da conversão para calibrar o lance nas estratégias de Maximize Conversion Value com Target ROAS.

    Para clientes recorrentes, o valor é enriquecido na nuvem com soluções como BigQuery ML.

    Para novos compradores no dia zero, o sistema injeta o pltv_180d predito a partir do SKU inicial adquirido.

    Rack de servidores escuro com cabo de dados de telemetria exibindo conector metálico carmim

    A arquitetura de ingestão opera em três frentes principais:

    1. Ingestão em tempo real via Meta Conversions API (CAPI)

    O evento de compra dispara do servidor com o valor predito no campo custom_data.value. Isso permite que o recurso de Value Optimization da Meta priorize perfis de alto retorno:

    {
      "data": [
        {
          "event_name": "Purchase",
          "event_time": 1788105600,
          "event_id": "order_ord_998124_pltv",
          "action_source": "system_generated",
          "user_data": {
            "em": ["f660ab912ec121d1b1e928a0bb4bc61b15f5ad44d5efdc4e1c92a25e99b8e44a"],
            "client_ip_address": "177.18.210.45",
            "client_user_agent": "Mozilla/5.0..."
          },
          "custom_data": {
            "currency": "BRL",
            "value": 1150.00,
            "predicted_ltv_horizon": "180d",
            "original_transaction_value": 280.00,
            "model_version": "btyd_gamma_gamma_v2.4"
          }
        }
      ]
    }
    

    2. Ajustes de conversão no Google Ads via Conversion Adjustments

    O Google Ads permite atualizar conversões em até 55 dias através de Conversion Adjustments na Google Ads API.

    Quando uma safra atinge novos marcos, o job envia eventos RESTATE com o valor predito revisado:

    from google.ads.googleads.client import GoogleAdsClient
    from datetime import datetime
    
    def upload_pltv_adjustment(
        client: GoogleAdsClient,
        customer_id: str,
        conversion_action_id: str,
        order_id: str,
        predicted_ltv_value: float,
        adjustment_time: datetime
    ):
        adjustment_service = client.get_service("ConversionAdjustmentUploadService")
        adjustment = client.get_type("ConversionAdjustment")
        adjustment.conversion_action = f"customers/{customer_id}/conversionActions/{conversion_action_id}"
        adjustment.adjustment_type = client.enums.ConversionAdjustmentTypeEnum.RESTATE
        adjustment.order_id = order_id
        adjustment.adjustment_date_time = adjustment_time.strftime("%Y-%m-%d %H:%M:%S+00:00")
        adjustment.restatement_value.adjusted_value = predicted_ltv_value
        adjustment.restatement_value.currency_code = "BRL"
    
        request = client.get_type("UploadConversionAdjustmentsRequest")
        request.customer_id = customer_id
        request.conversion_adjustments.append(adjustment)
        request.partial_failure = True
    
        return adjustment_service.upload_conversion_adjustments(request=request)
    

    Adicionalmente, anunciantes podem configurar Regras de Valor de Conversão do Google Ads para aplicar multiplicadores sobre públicos de alto valor.

    3. Audiências preditivas e Lookalikes de alto LTV

    A base de clientes é segmentada em decis de valor futuro. O decil superior (Top 10% pLTV) sincroniza diariamente com o Customer Match e serve de semente para públicos semelhantes (Lookalike 1%).

    Essa segmentação impede a dispersão de verba em perfis com baixo potencial de retenção.

    Quais resultados reais a migração para lances por pLTV entrega?

    Empresas que migram de lances por ROAS estático para lances por pLTV registram aumentos de 20% a 38% no lucro líquido acumulado por safra.

    O ROAS aparente de dia zero pode sofrer uma leve redução de 10% a 15%. Em contrapartida, a densidade de recompradores na safra cresce expressivamente.

    Os dados consolidados de implementação em diferentes verticais demonstram a eficiência do modelo:

    Setor de AtuaçãoEstratégia InicialEstratégia pLTV-VBB (180d)Impacto Mensurado
    E-commerce de Moda & VestuárioROAS D0 = 4,2x (35% recompra em 12m)ROAS D0 = 3,4x (54% recompra em 12m)+28,4% no LTV Líquido Anual
    D2C de Cosméticos & SkincareCAC = R$ 65,00 (Ticket = R$ 110,00)CAC = R$ 78,00 (Ticket = R$ 145,00)+38,5% no Lucro Bruto por Cliente
    Nutrição Esportiva & SuplementosChurn em 90 dias = 62%Churn em 90 dias = 41%+31,2% na Frequência de Recompra
    Clubes de Assinatura & ConsumoPayback do CAC = 5,2 mesesPayback do CAC = 3,6 meses-30,7% no Tempo de Payback

    A engenharia de tráfego deixa de ser uma compra de cliques avulsos e passa a operar como alocação de capital financeiro.

    Perguntas frequentes sobre pLTV e modelos BTYD em mídia paga

    Qual é o volume mínimo de dados para treinar modelos BG/NBD e Gamma-Gamma com segurança?

    Recomenda-se uma base de 12 meses de transações e ao menos 2.000 clientes com duas ou mais compras. Em bases menores, utilize penalização L2 mais rigorosa para evitar sobreajuste estatístico.

    O envio de valores preditivos não distorce os relatórios contábeis do painel de anúncios?

    Crie ações de conversão secundárias dedicadas à otimização algorítmica ou utilize parâmetros customizados no payload. O relatório contábil consome o faturamento real, enquanto a estratégia de lances consome o valor predito.

    Como estimar o pLTV para clientes que realizam apenas uma compra no primeiro dia?

    Para novos clientes sem histórico prévio, o modelo estima o pLTV com base na média observada da safra de entrada daquele SKU inicial.

    Qual horizonte de tempo é ideal para calibrar o pLTV em campanhas de tráfego pago?

    Para e-commerces de recompra frequente, o horizonte de 180 dias oferece equilíbrio ideal entre previsibilidade e liquidez. Para produtos duráveis, estenda para 365 dias.

    TAGS
    • Marketing
    • Agência
    • Tráfego Pago
    • pLTV
    • LTV
    • BTYD
    • BG/NBD
    • Gamma-Gamma
    • Value-Based Bidding
    • Google Ads
    • Meta Ads
    • CAPI
    • Machine Learning
    Mascote da MaxVision para contato rápido no WhatsAppFale agora pelo WhatsApp