Idea 2 — unhedged funding capture¶
Claim. Drop the spot leg. Short the perp alone and collect funding. Half the fees, a third of the capital.
Result. Rejected on measurement. The saving is real and it is irrelevant: funding is 2.66% of one standard deviation of the price move it would have to survive.
Spec: 2026-08-04-funding-capture-hypothesis.md
Charts below are interactive Plotly figures. GitHub strips the script that draws them, so read this page on hypertrade.vsh852.com to see them.
import json
from pathlib import Path
import plotly.io as pio
from hypertrade_research.backtest import directional_pnl_bps, funding_to_noise_ratio
from hypertrade_research.charts import funding_to_noise_figure, pnl_distribution_figure
# Required for the published site, not cosmetic. Without an explicit renderer a figure
# is stored only as `application/vnd.plotly.v1+json`, which nbconvert cannot represent
# -- the notebook still executes green and the exported page shows *no chart at all*.
pio.renderers.default = "notebook_connected"
FIXTURES = Path("../packages/research/tests/fixtures")
window = json.loads(
(FIXTURES / "carry_window_HYPE_2026-07-05_2026-08-04.json").read_text()
)
bars = window["daily_perp_candles"]
# HYPE's measured funding over the replayed window.
FUNDING_BPS_PER_HOUR = 0.1067
HOLD_DAYS = 30
The distribution, with funding drawn to scale¶
Every 30-day window in 16 months, as the outcome an unhedged short would have had. The dotted line is the funding earned over the same 30 days.
pnl_distribution_figure(
directional_pnl_bps(bars, hold_days=HOLD_DAYS),
hold_days=HOLD_DAYS,
funding_bps=FUNDING_BPS_PER_HOUR * HOLD_DAYS * 24,
)
The funding line is indistinguishable from breakeven at this scale. That is the finding — not that the income is fake, but that it is invisible next to the risk taken to earn it. Zoom in on the two lines to see how far apart they are; the axis will have to shrink by two orders of magnitude first.
Does a longer hold fix it?¶
The one structural argument for patience: funding is linear in time, price dispersion grows with its square root. So the ratio must improve. The question is whether it improves enough.
ratios = {
days: funding_to_noise_ratio(
bars, hold_days=days, funding_bps_per_hour=FUNDING_BPS_PER_HOUR
)
for days in (1, 3, 7, 14, 30, 90)
}
funding_to_noise_figure(ratios)
It improves 7.2× across a 90× increase in holding period, from 202× down to 28×, and never approaches parity. Log axis on purpose — on a linear one this reads as a collapse to zero and invites exactly the wrong conclusion.
Reaching parity at 30 days needs funding 38× current, about 351% annualized. The hedge idea 2 removes costs 0.0054 bps per bp of dispersion it takes off, which is why idea 1 keeps it.