A/B Tests Predictions

How Apphud predicts future revenue per A/B test variation — predicted metrics and the payback iteration methodology.

Overview

A/B test predictions use the same approach as the main LTV Predictions. They let you compare variations on projected revenue before the test has actually run for that long.

Available predicted metrics:

MetricWindowPredicts
pARPU 1M / 3M / 6M / 1Y1 month / 3 months / 6 months / 1 yearARPU at that horizon
pARPPU 1M / 1Y1 month / 1 yearARPPU at that horizon
pARPAS 1M / 1Y1 month / 1 yearARPAS at that horizon
pProceeds 1M / 3M / 6M / 1Y1 month / 3 months / 6 months / 1 yearProceeds at that horizon

Analyzing predicted metrics is identical to analyzing their factual counterparts (ARPU, ARPPU, ARPAS, Proceeds) — see Analyzing Experiments.

Enable predictions

Experiment predictions require LTV Predictions to be enabled for your app.

  • Enable LTV Predictions per app via App settings → LTV predictions banner at the top of the App settings page.
  • Once enabled, predicted metrics become available in the experiment column picker (marked Only admin). Toggle them on via Edit columns.

For the LTV Predictions setup process and feature scope, see Predictions.

Payback period calculation

Subscriptions are contractual — purchases happen at fixed intervals (1 week, 1 month, 3 months, etc.). That creates several reasonable ways to define a "payback period". The example below shows why.

We compare two subscriptions over a 1-year payback period:

  • Product 1 — 3-month duration, no trial, $20 price.
  • Product 2 — 3-month duration, 7-day trial, $20 price.

Predicted rebill rates:

ProductIterationPredicted rebill rateS(t)
product_101.000
product_111.52652.63%
product_121.88936.30%
product_132.16927.92%
product_142.39622.79%
product_201.000
product_211.60060.00%
product_222.00040.00%
product_232.28628.57%
product_242.50021.43%

Assume 100 subscriptions of product_1. The prediction plays out over days like this:

DateEventIterationAmount
2023-01-01install-1000
2023-01-01subscription_started (current iteration)0100
2023-04-01subscription_renewal (predict)152.6
2023-06-30subscription_renewal (predict)236.3
2023-09-28subscription_renewal (predict)328
2023-12-27subscription_renewal (predict)422.7
2024-01-011-year payback (from first paid transaction)(4)

For product_2:

DateEventIterationAmount
2022-12-25install-1000
2023-01-01trial_started-400
2023-01-08subscription_renewal0100
2023-04-08 – 2023-04-22billing issue + grace period
2023-04-22subscription_renewal (current iteration)160
2023-07-21subscription_renewal (predict)240
2023-10-19subscription_renewal (predict)328.6
2023-12-251-year payback (from install)(3)
2024-01-011-year payback (from trial)(3)
2024-01-081-year payback (from first paid transaction)(4)
2024-01-17subscription_renewal (predict)421.4

The prediction method differs based on which "payback point" you use.

In LTV Predictions the calculation would look like:

  • Product 1: pARPPU = (fact revenue (0) + predicted revenue (1, 2, 3, 4)) / paid subs = (100 * $20 + (52.6 + 36.3 + 28) * $20) / 100 = $47.92
  • Product 2: pARPPU = (fact revenue (0, 1) + predicted revenue (2, 3)) / paid subs = ((100 + 60) * $20 + (40 + 28.6) * $20) / 100 = $45.72

This counts how many renewals are predicted within 365 days from the install date — but that produces a different number of iterations for the two products because of the trial delay. Comparing them isn't fair.

To fix this, A/B test predictions ignore the install date and 365-day window and instead use the maximum number of iterations that could happen within the payback period regardless of trial. A 3-month subscription can produce up to 5 transactions (iterations 0–4) in a year, so both products predict to iteration 4:

  • Product 1: pARPPU = (fact (0) + predicted (1, 2, 3, 4)) / paid subs = (100 * $20 + (52.6 + 36.3 + 28) * $20) / 100 = $47.92
  • Product 2: pARPPU = (fact (0, 1) + predicted (2, 3, 4)) / paid subs = ((100 + 60) * $20 + (40 + 28.6 + 21.4) * $20) / 100 = $50.00

Now they're comparable, and product_2 performs better.

Iteration boundaries by duration and payback window:

1M3M6M1Y
1 week4122552
1 month12612
2 month0136
3 month0124
6 month0012
1 year0001

Notes

  • Trials vs no-trials variations. If one variation has only trial subscriptions and the other has only non-trial subscriptions, pARPAS isn't a valid comparison metric — the p-value isn't calculated for pARPAS in that case.

  • ARPPU alone can mislead. Optimizing for ARPPU doesn't always optimize total revenue. Example with a 50/50 split:

    • Variation A — 1000 installs, 100 paid subscriptions, $40 pARPPU → $4000 total.
    • Variation B — 1000 installs, 200 paid subscriptions, $30 pARPPU → $6000 total.

    Variation A looks better on pARPPU, but Variation B brings more revenue. Check pARPU alongside pARPPU when overall revenue matters.