Skip to main content

Benchmark methodology

This is the page a quant or treasury needs: exactly how every published Gaia number is computed, so you can reproduce each one from the raw deployments. There is no magic and no hidden parameter — every figure is a closed-form function of the deployments and the 4H closes in the window. The whole window is available keyless from GET /v1/program/preview.

Throughout, a fire is a single deployment; the window is the set of 4H bars over which the basket deployed; usd_i, btc_i and price_i are the USD deployed, BTC accumulated and reference price at fire i.

avg cost basis​

The headline number. The average cost basis is total USD deployed divided by total BTC accumulated, across every fire in the window:

avg_cost = Σ usd_i ÷ Σ btc_i (sum over all fires in the window)

Because each fire buys btc_i = usd_i / price_i, this is a deployment-weighted average price — it is pulled down hard by the fires that landed at the cheapest prices.

VWAP​

The window's volume-weighted average price over the 4H bars — what you'd have paid on average if you bought continuously in proportion to traded volume:

VWAP = Σ (close_b × volume_b) ÷ Σ volume_b (sum over all 4H bars b in the window)

naive DCA​

A calendar dollar-cost-average of the same total capital — equal-USD buys on a fixed cadence, the honest "just buy a fixed amount every payday" baseline:

equal_usd = (Σ usd_i) ÷ N_contributions
dca_avg = (Σ usd_i) ÷ Σ (equal_usd ÷ price_at_contribution)

The cadence is Gaia's own contribution cadence — the reference basket contributes every 84 × 4H bars (≈ biweekly), so the DCA buys on that same biweekly cadence: N_contributions is the number of those periods in the window, each buying equal_usd of BTC at that period's price. Same cadence, same total dollars as Gaia — the only difference is timing: Gaia holds the contribution and deploys into statistical dips; calendar-DCA spends it on the contribution date.

The DCA benchmark uses your exact contribution schedule. In the Model your treasury simulator, change the contribution frequency (weekly / biweekly / monthly) and the DCA benchmark re-computes to that same cadence — the "% cheaper than DCA" you see is always Gaia-vs-DCA on your schedule, never a mismatched-cadence comparison. (Equal-USD avg cost is scale-invariant, so the benchmark is set by the cadence, not the dollar size.)

lump-sum​

Deploy everything at the start of the window — the single buy at the window's first close:

lump_sum = first_close_of_window

HODL​

Buy-and-hold from the same entry. The HODL entry is the same window-start price, so for cost purposes:

HODL = first_close_of_window (= lump_sum)

(HODL and lump-sum share the window-start entry price; they report identically as a cost benchmark.)

advantage_bps and "% cheaper"​

For any benchmark B, the two comparison figures are:

advantage_bps = (B − avg_cost) ÷ B × 10000
pct_cheaper = (1 − avg_cost ÷ B) × 100

These are the same quantity in different units: advantage_bps = pct_cheaper × 100. Both say "how far below the benchmark did Gaia's average cost land."

% capital in the cheapest quartile​

How concentrated the deployment was at genuinely cheap prices: the USD deployed at fires whose reference_price was at or below the 25th-percentile price of the window, over total USD deployed:

pct_cheapest_quartile = ( Σ usd_i where price_i ≤ P25 ) ÷ ( Σ usd_i )

where P25 is the 25th percentile of the window's 4H closes.

Worked example — the current reference numbers​

These are the live reference figures published on the sales page. The average cost basis is:

avg_cost = $7,172.66
BenchmarkValue"% cheaper"advantage_bps
naive DCA$15,46253.6%5361
VWAP$28,81975.1%7511
lump-sum$12,92044.5%4448
HODL$12,92044.5%4448

You can recompute every percentage from just two numbers — avg_cost and the benchmark value:

DCA : (1 − 7172.66 / 15462) × 100 = 53.6% → cheaper than buying on a calendar
VWAP : (1 − 7172.66 / 28819) × 100 = 75.1% → cheaper than the window's volume-weighted price
lump : (1 − 7172.66 / 12920) × 100 = 44.5% → cheaper than deploying everything at the start
HODL : (1 − 7172.66 / 12920) × 100 = 44.5% → cheaper than buy-and-hold from window start

And the same numbers in basis points, e.g. DCA:

advantage_bps = (15462 − 7172.66) / 15462 × 10000 = 5361 bps (= 53.6% × 100)

:::note Every number is reproducible from the keyless preview Every figure on this page is reproducible from GET /v1/program/preview — no API key required. The preview returns avg_cost_basis and each benchmark's value, advantage_bps and pct_cheaper; the formulas above are all you need to derive one from the others and confirm they agree. :::

Verify it yourself​

Pull the keyless preview and recompute the percentages from the two raw numbers:

# 1. Pull the reference basket + benchmark table (no key needed)
curl -s https://signals.btcalpha.com.au/v1/program/preview

# 2. Recompute "% cheaper" vs DCA from avg_cost_basis and benchmarks.dca.value
curl -s https://signals.btcalpha.com.au/v1/program/preview \
| jq '(1 - .avg_cost_basis / .benchmarks.dca.value) * 100'
# → 53.6

Run a bounded simulation against your own equity and cadence, then check the same identity holds:

curl -s -X POST https://signals.btcalpha.com.au/v1/program/preview/simulate \
-H "Content-Type: application/json" \
-d '{ "equity_usd": 100000, "contribution_cadence_bars": 84 }' \
| jq '{ avg: .avg_cost_basis,
dca_pct_cheaper: ((1 - .avg_cost_basis / .benchmarks.dca.value) * 100) }'

If your recomputed pct_cheaper matches the pct_cheaper the API returns, you have reproduced the sales-page numbers end-to-end from the keyless preview.