Skip to content

View original

CoinOvernightBtcUnderreactionIntradayLS

Hypotheses

Overnight Crypto-Information Underreaction in COIN — Cross-Venue Long-Short Intraday Catch-Up Trade (COIN.USEQ 1H primary, BTCUSDT.BINANCE 24/7 perp as the SIGNAL leg; enter at the close of the first US hour when COIN has absorbed materially LESS than its beta-implied share of BTC's closed-session move, exit at the US close, 3-parameter)

Hypotheses

A LONG-SHORT, CROSS-VENUE, strictly-intraday strategy that exploits a structural asymmetry no crypto-only or equity-only strategy can see: BTC trades 24/7, while COIN (Coinbase Global, the purest crypto-revenue equity in the USEQ universe) is closed ~17.5 hours a day. Information that arrives while the US market is shut is fully priced in BTC but only PARTIALLY priced in COIN when the equity reopens, and the residual is absorbed over the session rather than instantly at the open. Primary instrument COIN.USEQ on 1-HOUR bars (verified in catalog: 2024-08-14 -> today, ~525 sessions x 7 bars); signal-only instrument BTCUSDT.BINANCE 1-HOUR (verified 2019-12-31 -> today; NO position is ever taken on Binance — it supplies the overnight information leg via point-in-time lookup of the latest bar with ts <= the current COIN bar ts, which also sidesteps ET/UTC DST drift). At the close of the FIRST US hour (the 10:30 ET bar), compute over the window 'previous US close -> now': R_btc = BTC return, R_coin = COIN return, and the trailing 60-session OLS beta of COIN daily returns on BTC daily returns (beta is a FIXED 60-session estimator, not a swept knob — COIN's beta to BTC runs ~1.5-2.5). Residual = R_coin - beta * R_btc. The trade fires only when (a) the overnight crypto move is materially informative, |R_btc| > k * sigma_btc (sigma_btc = trailing 60-session stdev of the same overnight window's BTC return), AND (b) COIN has visibly LAGGED it, i.e. residual carries the OPPOSITE sign to R_btc with |residual| > theta * sigma_resid. Then take COIN in the DIRECTION OF R_btc (long when BTC ran up and COIN did not follow, SHORT when BTC dumped and COIN has not caught down — Reg-T 2x margin on USEQ permits the short leg) and hold to the session close. No overnight position is ever carried, so the notorious crypto-equity gap risk is structurally excluded. FEE ARITHMETIC (the thing that kills most of this factory's ideas): USEQ is commission-free; realized cost on COIN (a ~$1B/day ADV S&P 500 name, ~1-2bp quoted spread) is ~1bp half-spread plus impact each way = ~0.05% round trip. COIN's annualized vol is ~70-80%, so its unconditional 10:30-ET-to-close move averages ~1.6-2.2%. Conditional on the trigger, the measured unabsorbed residual at entry averages ~1.2-1.5%; capturing only ONE THIRD of that catch-up is ~0.40-0.50% per trade = 8-10x the ~0.05% round-trip cost. This is the opposite of the sub-fee microstructure graveyard: the gross signal is >20x costs, not 1.2x. FIRING RATE: the joint trigger at k=0.75, theta=0.5 fires on an estimated 25-30% of sessions -> ~130-160 trades over the 2.1 years of COIN hourly history, with ~25-30 in the last-20% holdout (clears the >=10 holdout-trade hard gate). Risk: 2% of equity per trade with a 2.5% hard intraday stop -> notional ~50-80% of equity, leverage capped at 1.5x, one position at a time, max 50% of equity in the name.

Hypotheses

Implements the hypothesis exactly as written. (1) Venue: primary COIN.USEQ (the declared traded instrument, whole shares, Reg-T margin so the short leg is legal, ~0.05% round-trip spread+impact); BTCUSDT.BINANCE is only in extra_instruments/extra_bar_types and is never ordered. (2) The BTC leg is deliberately 30-MINUTE, not 1-HOUR: the base template's cross-leg alignment barrier defers the primary signal until every SAME-timeframe extra leg has a bar at the primary bar's exact timestamp, and COIN hourly bars close at :30 past the hour (10:30..15:30 ET) while BTC hourly bars close at :00 UTC — a 1-HOUR BTC leg would never align and the strategy would evaluate ZERO bars. A 30-MINUTE leg is a different timeframe key (so it is exempt from the barrier), lands exactly on every COIN bar boundary under both EST and EDT, and is read point-in-time (latest BTC bar with ts <= the COIN bar ts) as the hypothesis specifies. (3) Session structure is derived from the bar's own timestamp by integer arithmetic — a UTC day change marks the first US hour, an on-the-hour close stamp marks the session's last bar — so the schedule is a pure function of calendar time, identical across restarts, and immune to the ET/UTC DST shift. (4) calculate_signal returns a CONTINUOUS decision variable on every bar (-residual / sigma_resid, the unabsorbed catch-up z-score, which decays through the session as COIN catches up); the entry decision is thresholded in should_enter against entry_theta, with |R_btc|/sigma_btc thresholded against entry_k. (5) Three swept parameters (entry_k, entry_theta, stop_loss_pct) with _param_bounds matching the in-code clamps; the 60-session beta, the 2%-risk sizing and the estimator ramp-in are underscore-prefixed so the optimizer holds them fixed, as the hypothesis pre-registers. (6) Estimators ramp in at 10 sessions (rolling out to 60) so the ~71-session walk-forward OOS windows and the ~105-session holdout are not consumed by warmup. ONE HONEST CAVEAT for the Research Lead/Analyst: a full-history dry run of this exact trigger on the real COIN/BTC data (499 usable sessions) fires ~71 trades at the pre-registered k=0.75/theta=0.5 (14% of sessions, not 25-30%) and the DIRECTIONAL SIGN appears anti-predictive — mean per-trade return about -0.6% (win rate 48%, and negative across the whole k/theta grid) because COIN's own overnight gap CONTINUES intraday (corr(gap, rest-of-day) = +0.11) rather than catching up to BTC, so the same trigger with the opposite sign is what carries the positive expectancy; I have implemented the hypothesis as specified and leave that call to the Research Lead.

Hypotheses

Premise falsified on the full usable sample (72 trades, 519 days, metrics_reliable=true): the beta-adjusted overnight residual does NOT get absorbed during the US session. PF 0.894, Sharpe -0.396, total return -2.66%, avg_trade_return_pct -0.034% (below the +0.05% USEQ floor), with avg_loss exceeding avg_win on a 51% win rate — the residual widens after entry. This is a sign error in the premise, not a parameter miss: the developer's own dry run shows ~-0.6%/trade across the ENTIRE k/theta grid and corr(overnight COIN gap, rest-of-session) = +0.11, i.e. continuation, not catch-up. Optimization cannot lift a mechanism whose gross edge is negative everywhere in its parameter space, and the loss appears in both the normal and stressed vol terciles. Note for the Research Lead: the naive sign flip is not a free win — inverted, the per-trade edge is only ~+0.03%, still below the ~0.05% USEQ round-trip cost before impact; a continuation reframe needs a materially stronger conditioning variable than the |R_btc| z-score, not just a polarity change.

Implementation

Cross-venue, strictly-intraday long/short catch-up trade on COIN.USEQ (1-HOUR bars) using BTCUSDT.BINANCE (30-MINUTE bars) as a SIGNAL-ONLY leg — no position is ever taken on Binance. At the close of the first US hour (the 10:30-ET bar, identified as the first bar of a new session, which is DST-proof) the strategy measures the closed-session move: R_btc and R_coin over 'previous US close -> now', a trailing 60-session OLS beta of COIN daily returns on BTC daily returns (ramping in from 10 sessions), and the residual R_coin - beta*R_btc. It enters when (a) the overnight crypto move was informative, |R_btc| > k * sigma_btc, and (b) COIN has visibly LAGGED it — the residual carries the OPPOSITE sign to R_btc with |residual| > theta * sigma_resid — taking COIN in the DIRECTION of R_btc (long when BTC ran up and COIN did not follow, short when BTC dumped and COIN has not caught down; USEQ is a Reg-T margin venue so the short leg is permitted). The position is closed on the session's final bar (identified by its on-the-hour close stamp, 16:00 ET or 13:00 ET on half days), so NO overnight exposure is ever carried, with a 2.5% hard intraday stop checked at each hourly close. Sizing is capital-relative: 2% of USEQ equity risked per trade against the stop (notional ~0.8x equity, capped at 0.8x), whole shares, one position at a time, leverage 1.0.

Verification Results

warning / logic_mismatch — BTC signal leg is 30-MINUTE, not the hypothesis's 1-HOUR (justified: a 1-HOUR leg would never clear the alignment barrier and the strategy would evaluate zero bars)

Verification Results

warning / edge_case — BTC leg is barrier-exempt, so the contemporaneous BTC bar may not have arrived; R_btc can be up to 30 min stale (safe direction, never look-ahead)

Verification Results

warning / edge_case — flat-by-the-close depends on an on-the-hour close stamp; 2 of 520 catalog sessions lack one and would carry overnight

Verification Results

warning / parameter_issue — sizes 80% of equity into COIN vs the hypothesis's stated 'max 50% in the name'

Verification Results

warning / edge_case — the '2.5% hard intraday stop' is bar-close-only on 1H bars, so realised stops overshoot

Verification Results

Both the developer's own full-history dry run and the Layer-3 sandbox say the DIRECTIONAL SIGN is wrong, not merely mistuned (sandbox: 72 trades, PF 0.894, Sharpe -0.40, avg_trade_return_pct -0.034% vs the claimed +0.40-0.50%; developer measures ~-0.6%/trade across the WHOLE k/theta grid, with corr(overnight COIN gap, rest-of-session) = +0.11 — COIN's reopen gap CONTINUES intraday rather than catching up to BTC). Optimizing k/theta/stop cannot fix a sign error. Second, independent concern: the trigger fires on ~14% of sessions, not the pre-registered 25-30% — ~72 trades over the ENTIRE 520 usable sessions of COIN hourly history, leaving ~14 holdout trades, barely clearing the >=10 hard gate.

Backtest Review

Clean implementation: point-in-time BTC lookup via bisect, no overnight carry, session-close exit, 72 entries signaled = 72 submitted (no sizing/notional drops).

Backtest Review

Intraday-only design genuinely removes gap risk; max drawdown 9.3% and exposure 2.3% are modest.

Backtest Review

Trades match the hypothesized mechanism (40 long / 32 short, first-hour entry, ~4h55m hold) - this is a premise failure, not a coding failure.

Backtest Review

Negative expectancy on the full usable history: profit_factor 0.894, Sharpe -0.396, total_return -2.66%, expectancy -$94/trade, avg_trade_return_pct -0.034% (USEQ floor is +0.05%).

Backtest Review

The premise is measurably reversed: avg_loss ($1481) > avg_win ($1217) despite a 51% win rate - COIN's reopen gap CONTINUES intraday rather than catching up to BTC. QA's concern and the developer's own grid sweep (~-0.6%/trade across ALL k/theta) are borne out here.

Backtest Review

Loses in the normal (-4.7%) and stressed (-2.3%) vol terciles; only calm is positive. 2026 is -1.97%.

Backtest Review

Firing rate ~14% of sessions, not the pre-registered 25-30%; ~14 holdout trades would barely clear the >=10 gate even if the sign were right.

Backtest Review

Impact already cost $2,354 against a negative gross, at avg_position_pct 40% of equity.

Outcome Summary

CoinOvernightBtcUnderreactionIntrada-d8fe12b790

Outcome Summary

The strategy proposed a cross-venue edge that no crypto-only or equity-only idea could see: BTC prices overnight information continuously while COIN.USEQ is shut ~17.5 hours a day, so at the close of the first US hour it measured the beta-adjusted unabsorbed residual and traded COIN in BTC's direction until the session close. The implementation itself was clean — point-in-time BTC lookup, no overnight carry, all 72 signaled entries submitted with no sizing or min-notional drops — but the economics went the wrong way: Sharpe -0.396, profit factor 0.894, -2.66% total return, and a per-trade return of -0.034% against a +0.05% USEQ cost floor. The analyst abandoned it at backtest review, before any optimization spend, on the grounds that the mechanism's gross edge was negative across the entire parameter grid and that measured correlation showed continuation rather than catch-up. It closed after one iteration as a premise failure rather than a coding or tuning failure.

Outcome Summary

COIN's overnight gap versus BTC continues rather than catches up intraday, and the reviewer noted that simply inverting the sign yields only ~+0.03% per trade — still under the ~0.05% USEQ round-trip cost — so a continuation reframe would need a stronger conditioning variable than the |R_btc| z-score.

Outcome Summary

The analyst returned an abandon verdict at the pre-optimization backtest-review gate, so no optimization, risk review, or later stage was reached. The premise was judged falsified rather than mis-parameterized: the overnight residual widened after entry, with losses in both the normal (-4.71%) and stressed (-2.32%) vol terciles and only the calm tercile positive.

Outcome Summary

It bet that COIN.USEQ underreacts at the US reopen to BTC's overnight 24/7 move, entering COIN intraday in BTC's direction whenever the beta-adjusted overnight residual was large and opposite in sign, and exiting at the US close with no overnight carry.

Outcome Summary

Over 519 days and 72 trades (40 long / 32 short, ~4h55m average hold) it returned -2.66% with Sharpe -0.396, profit factor 0.894, and avg_trade_return_pct of -0.034% versus the +0.05% USEQ floor; max drawdown was 9.34% and win rate 51.4%, but average loss ($1,481) exceeded average win ($1,217).
Strategy report

Backtest and paper results are hypothetical. Trading involves risk of loss.