Shock Engine research · shock-engine-2026.10.13

Shock Engine BTC/ETH Portfolio

BTC-calibrated strategy · applied unchanged to Ethereum

Common period 2018-09-01 → 2026-09-30 · official allocation 50/50, no rebalancing · commission 0.045 % per order · daily Sharpe, √365.25, risk-free 0

Executive summary

Common period
2018-09-01 → 2026-09-30
8.1 years · 2,952 days
BTC Sharpe
1.46
daily, common period
ETH Sharpe
1.93
daily, common period
Portfolio Sharpe
2.02
50/50, no rebalancing
Portfolio CAGR
67.7%
total 6436%
Portfolio max DD
−17.8%
−19.6% on 15-min marks
BTC/ETH daily correlation
0.36
strategy returns (spot: 0.82)
Worst month
−13.9%
2022-02
Number of trades
716
358 BTC · 358 ETH

Ethereum parameters were inherited from Bitcoin and were not calibrated on ETH.

New positions are only opened in the calm volatility regime, and short entries only when the daily trend regime is bearish. Both conditions were set in October 2026 with knowledge of the historical data: the figures are in-sample, not an independent out-of-sample test.

Historical simulation after modeled transaction costs. Not live performance.

Historical simulation

Every figure in this report. Frozen rules replayed on historical 15-minute bars, 2018-09-01 → 2026-09-30, with a commission of 0.045 % per order. No slippage, no funding and no market impact are modeled.

Live / forward results

None in this report. No figure here comes from live trading, paper trading or a forward test. Forward results, when they exist, are to be reported separately, from the date the rules were frozen, and never blended with this simulation.

1Scope and method

Two sleeves run the same Shock Engine: the adaptive-volatility 15-minute preset (two parameter sets, calm and agitated, selected by a causal daily volatility regime), with full entry signals, except that new positions are only opened while the regime is calm (an open position keeps its exits if the regime changes) and a short entry after a shock is only allowed when the daily trend regime, computed causally on closed days, is bearish. The preset was selected on Bitcoin; Ethereum runs it unchanged (identical parameter hash c6ac30464bce14dd… for both sleeves).

SleeveDataSimulated from (after warm-up)Validated referenceTrades in common period
BTCBTC/USD, Bitstamp spot, 15 min2017-01-01 (warm-up from 2016-01-01)shock-15m-zeroshot-btc-calm.json358
ETHETH/USDT, Binance spot, 15 min2018-09-01 (warm-up from 2017-08-17)shock-15m-zeroshot-ethusdt-calm.json358

Common period

Rule: first UTC day on which both strategies are simulated after warm-up (ETH simulation start) → last complete UTC day covered by both. Result: 2018-09-01 → 2026-09-30, 2,952 days (8.08 years). BTC, ETH and the portfolio are all measured on exactly these days.

Capital

Initial capital 100. At t0 the BTC sleeve receives 50 and the ETH sleeve 50. Each sleeve compounds only its own capital: it opens every position with 100 % of its own equity, one position at a time, without leverage. The portfolio value is the sum of the two sleeves:

VP(t) = 50 · EBTC(t) / EBTC(t0) + 50 · EETH(t) / EETH(t0)

where E is each strategy's equity as computed by the validated backtest. The engine sizes positions as a fraction of equity without lot rounding, so a sleeve of 50 behaves exactly like the strategy's own account rescaled. Neither sleeve ever uses the other's capital: when both are invested, gross notional exposure is about 100 % of the portfolio, not 200 %. Measured exposure: average gross 16.0%, maximum 103.6% (above 100 % only through price moves against open shorts and the entry commission).

Aggregation and conventions

2Reconciliation with the validated backtests

Before any portfolio calculation, the script replays both validated backtests with the same code path and checks that the full-period results match the stored reports. Any difference stops the run.

Validated run (full history)Total returnCAGRSharpe (15-min)Max DD (15-min)Tradesvs stored report
BTC · costs ×03967%46.2%1.75−24.8%396identical
BTC · costs ×12754%41.0%1.59−26.5%396identical
BTC · costs ×21903%36.0%1.43−28.1%396identical
ETH · costs ×015842%87.3%2.19−25.6%358identical
ETH · costs ×111490%80.0%2.05−26.7%358identical
ETH · costs ×28324%73.1%1.92−28.7%358identical

The headline figures of the validated reports (BTC: Sharpe 1.59, CAGR 41.0%, max DD −26.5%, 396 trades; ETH: 2.05, 80.0%, −26.7%, 358 trades) use the full history of each asset and Sharpe ratios on 15-minute returns. The BTC history (2017-01-01 → 2026-10-04) is longer than the common period, and the daily convention used in this report gives slightly lower Sharpe ratios:

Common periodSharpe 15-minSharpe dailyMax DD 15-minMax DD dailyCAGRTrades
BTC1.551.46−26.5%−24.8%39.6%358
ETH2.051.93−26.7%−24.1%80.0%358
Portfolio 50/502.132.02−19.6%−17.8%67.7%716

3Performance on the common period

MetricBTCETHPortfolio 50/50
Total return1381%11490%6436%
CAGR39.6%80.0%67.7%
Annualized volatility25.0%33.3%27.4%
Sharpe1.461.932.02
Sortino3.234.624.73
Max drawdown (daily closes)−24.8%−24.1%−17.8%
Max drawdown (15-min marks)−26.5%−26.7%−19.6%
Calmar (CAGR / max DD)1.603.313.79
Skewness of daily returns4.254.093.65
Downside deviation (annualized)11.3%13.9%11.7%
Profit factor (trades)1.932.732.59
Profit factor (daily returns)1.631.821.79
Exposure: time in market14.8%17.1%24.7%
Exposure: average gross notional14.4%16.4%16.0%
Turnover (one-way, per year)44×43×43×
Transaction costs (% of equity per year)4.0%3.9%3.9%
Number of trades358358716
Winning trades106 (30%)117 (33%)223 (31%)
Average winner5.31%7.43%3.45%
Average loser−1.03%−1.35%−0.62%
Payoff ratio5.185.525.58
Best day18.5% 2019-04-0219.9% 2018-09-0516.2% 2026-08-19
Worst day−7.2% 2020-06-02−7.6% 2020-09-03−6.2% 2026-02-06
Best month30.3% 2022-0662.1% 2018-1145.8% 2018-11
Worst month−8.8% 2022-02−15.2% 2022-02−13.9% 2022-02
Best year105.2% 2024224.3% 2018*120.3% 2018*
Worst year1.2% 2025−9.0% 20198.0% 2019

Sleeve trades: return = PnL / sleeve equity at entry (validated convention). Portfolio trades: the 716 sleeve trades pooled, each expressed as its contribution to portfolio equity at entry, so the average winner and loser are roughly half the sleeve figures. Both sleeves trade different instruments and never net against each other, so a sleeve trade is a well-defined portfolio trade. *2018 covers September–December and 2026 covers January–September.

Equity (log scale, 100 at 2018-09-01)

BTCETHPortfolio
1002005001,0002,0005,00010,00020192020202120222023202420252026ETH 11,590Portfolio 6,536BTC 1,481

Drawdown from previous peak (daily closes)

BTCETHPortfolio
−25%−20%−15%−10%−5%0%20192020202120222023202420252026

Rolling 12-month Sharpe (365-day window)

BTCETHPortfolio
0.01.02.03.020192020202120222023202420252026
Rolling 12-month SharpeWindowsMedianMinimumShare > 0Share > 1
BTC2,5881.40−0.2699%79%
ETH2,5881.80−0.3499%86%
Portfolio 50/502,5881.940.27100%93%

Sub-periods (diagnostic; the official period is unchanged)

PeriodBTC SharpeETH SharpePortfolio SharpePortfolio CAGRPortfolio max DDBTC/ETH correlation
Full common period 2018-09-01 → 2026-09-301.461.932.0267.7%−17.8%0.36
First half 2018-09-01 → 2022-09-151.392.052.1278.7%−17.8%0.31
Second half 2022-09-16 → 2026-09-301.571.811.9850.9%−15.2%0.44
From 2019 (without Sep–Dec 2018) 2019-01-01 → 2026-09-301.441.661.8650.9%−17.7%0.36

The portfolio Sharpe is lower in the second half than in the first (1.98 against 2.12): higher for BTC (1.57 against 1.39) and lower for ETH (1.81 against 2.05), while the correlation between the sleeves is higher (0.44 against 0.31).

4Rebalancing

VariantSharpeCAGRVolatilityMax DDCalmarRebalancing cost / yrRebalancesBTC weight at end
A · 50/50, no rebalancing (official)2.0267.7%27.4%−17.8%3.790.000%011%
B · 50/50, monthly rebalancing (diagnostic)2.0861.3%24.3%−17.4%3.520.002%9750%
C · equal risk, 90-day vol, monthly (exploratory)2.0056.0%23.6%−20.4%2.740.013%9764%

A is the official portfolio and stays so whatever this table shows. B and C were defined before the results as mechanical diagnostics. They are not candidates to replace A after seeing them.

What rebalancing does here. Without rebalancing, the sleeve that compounds faster takes a growing share of the capital. ETH gained 224% between September and December 2018, so the BTC weight fell to 26% by the end of 2018. Over the period it ranged from 11% to 50%, with an average of 25%, and ended at 11%. Variant A was therefore on average an ETH-overweight portfolio, with less diversification than 50/50. Monthly rebalancing (B) puts the weights back to 50/50 at each month end. This has two effects. It keeps the mix closer to the diversified point (A held on average 75% in ETH). And it systematically sells the sleeve that has just outperformed to buy the other, which adds return when relative performance does not trend and costs return when it does. In this sample B had lower volatility (24.3% against 27.4%), a lower CAGR (61.3% against 67.7%) and a higher Sharpe (2.08 against 2.02). That is a property of this history, not a rule. Its cost is negligible: 0.002% a year, because only the part of each transfer that sits in an open position has to be traded.

C (exploratory / secondary): the BTC weight is proportional to 1/σBTC, with σ the volatility of daily sleeve returns over the 90 days ending at the rebalancing close (causal). Weights sum to 1, there is no leverage, and the allocation is 50/50 until 90 days of history exist. The BTC weight ranged from 8% to 82% (median 56%). Its Sharpe is 2.00, against 2.08 for B and 2.02 for A.

A: BTC weight at year end201820192020202120222023202420252026
BTC sleeve / portfolio26%38%29%25%19%24%28%16%11%

5Transaction costs

SeriesCommissions / yrSlippage / yrTotal cost / yrTurnover one-way / yrTurnover two-way / yrCAGR lost to costs
BTC4.0%0.0%4.0%44×88×5.6%
ETH3.9%0.0%3.9%43×87×7.2%
Portfolio 50/503.9%0.0%3.9%43×87×6.8%

Costs are in % of average equity per year. Turnover is traded notional per year divided by average equity: one-way counts entries only (the validated reports' convention), two-way counts entries and exits. CAGR lost to costs is CAGR at zero cost minus CAGR at modeled cost. Slippage is 0 in the validated BTC and ETH reference runs; it is not added here. The cost stress below is the way to read sensitivity to it.

Cost stress (nothing else changes: same signals, same rules)

CostsCommission / orderBTC SharpeETH SharpePortfolio SharpePortfolio CAGRPortfolio max DDPortfolio costs / yrB (monthly) Sharpe
×00.000%1.622.052.1774.5%−17.2%0.0%2.25
×10.045%1.461.932.0267.7%−17.8%3.9%2.08
×20.090%1.291.801.8861.2%−19.7%7.8%1.92

Costs take about 7% of CAGR a year at ×1: the strategy turns its capital over about 43× a year. Doubling costs (0.09 % per order, which is equivalent to adding 0.045 % of slippage on every fill) lowers the portfolio Sharpe to 1.88. Execution quality is the first-order implementation risk.

6BTC/ETH correlation

Measure (strategy returns)ValueObservations
A. Pearson, daily0.3582,952 days
B. Spearman, daily0.2682,952 days
C. Pearson, weekly (complete ISO weeks)0.387421 weeks
D. Pearson, monthly0.37097 months
Pearson, daily, days when both sleeves were exposed0.542423 days
For reference: BTC vs ETH spot (buy and hold), daily0.8202,952 days
Rolling PearsonWindowsMedianP10P90MinMax
E. 30 days2,2280.36−0.050.84−1.000.99
F. 90 days2,7410.350.020.66−1.000.90
G. 252 days2,7010.330.190.600.000.75

The two underlying markets are highly correlated (0.82). The two strategies are much less so (0.36): each is out of the market most of the time (BTC 15%, ETH 17% of the time in a position), and the correlation is diluted by days when only one of them is exposed. On days when both are exposed it rises to 0.54. Weekly correlation is higher than daily (0.39) and monthly higher (0.37, on only 97 points). The 30-day measure is noisy (P10 −0.05, P90 0.84). The 252-day correlation stayed between 0.00 and 0.75.

Rolling 90-day correlation of daily strategy returns

−0.4−0.20.00.20.40.60.81.020192020202120222023202420252026full period 0.36

Daily strategy returns: BTC vs ETH

−10%−10%0%0%10%10%BTC strategy, daily returnETH strategy, daily return

Each dot is one day. 1,860 days (63%) sit at the origin: neither sleeve held a position. Points beyond ±15 % are drawn on the edge of the frame. The line is the least-squares fit of ETH on BTC (slope 0.48).

The cloud is dominated by the axes: on most active days only one of the two sleeves moves (669 days with one sleeve only, 423 with both).

7Downside and crisis correlation

Days usedDaysPearsonSpearmanConstant-dependence benchmark, mean [5–95 %]Reading
All days2,9520.360.27—
BTC strategy < 03940.200.230.27 [0.16, 0.37]within benchmark
ETH strategy < 04180.290.200.26 [0.17, 0.36]within benchmark
Both strategies < 01530.560.520.20 [0.06, 0.36]above benchmark
Portfolio < 05910.04−0.300.06 [−0.03, 0.15]within benchmark
Worst 10 % portfolio days2960.11−0.08−0.00 [−0.13, 0.14]within benchmark
Worst 5 % portfolio days1480.210.00−0.07 [−0.24, 0.12]above benchmark
Portfolio more than 10 % below its peak3080.160.25—
Decline phases of the 5 deepest portfolio drawdowns4020.380.31—
Market crash days (worst 5 % of BTC+ETH spot)1480.530.59—
Crypto bear market (BTC+ETH spot > 30 % below 1-year high)1,3700.380.26—
Named stress episodes (pooled)2890.620.35—
Non-stress days (no crash day, no bear market, no episode)1,4590.320.28—
Both sleeves exposed during the day4230.540.57—

Why a benchmark. Selecting days on returns changes a correlation mechanically, even when the dependence does not change (truncation bias). Keeping only days when BTC lost, for example, shrinks BTC's range and lowers the measured correlation. The benchmark applies the same selection to 400 simulated histories that keep each sleeve's actual daily returns (each simulated series is a permutation of the real one) and join them with a Gaussian copula calibrated to the full-sample correlation (copula parameter 0.56). A value inside the band is what constant dependence would produce; above it means losses are more joint than that. Selections on dates (drawdowns, spot stress) are not return-conditioned in the same way and are compared with the full-period 0.36 and the 90-day rolling range. "Portfolio < 0" uses the average portfolio weight for the benchmark; with actual weights the observed Pearson is 0.02. Market stress is defined only from spot prices: crash days are the worst 5 % of the equal-weight BTC+ETH spot return (≤ −5.6%), and the bear-market filter is the same index more than 30 % below its trailing 365-day high.

Joint losses

ProbabilityObservedUnder independenceConstant-dependence benchmark [5–95 %]
P(ETH < 0 | BTC < 0)38.8%14.2%41.8% [38.3%, 45.4%]
P(ETH in its worst 10 % days | BTC in its worst 10 % days)33.4%10.0%36.1% [32.1%, 39.9%]
P(ETH in its worst 5 % days | BTC in its worst 5 % days)27.7%5.0%28.2% [23.0%, 33.1%]

Named stress episodes (windows fixed from known market events; spot moves shown for reference)

EpisodeWindowDaysBTC spotETH spotBTC strategyETH strategyPortfolioDaily Pearson
2018 Q4 capitulation2018-11-08 → 2018-12-1538−51.1%−61.8%+25.7%+52.1%+41.7%0.84
COVID-19 crash2020-03-01 → 2020-03-3131−24.7%−38.9%−0.8%0.0%−0.3%—
May–July 2021 sell-off2021-05-10 → 2021-07-2072−48.9%−54.5%+1.9%+11.6%+9.0%0.02
Terra/LUNA and 3AC2022-05-05 → 2022-06-3057−49.8%−63.6%+50.4%+25.2%+30.2%0.65
FTX collapse2022-11-06 → 2022-11-3025−19.4%−20.4%−0.6%+0.8%+0.5%0.49
August 2024 carry unwind2024-08-01 → 2024-08-1010−5.7%−19.3%+4.4%0.0%+1.2%—
Oct–Nov 2025 deleveraging2025-10-06 → 2025-11-3056−26.8%−33.7%+3.0%+8.5%+7.6%0.79

Reading. Correlation is higher in market stress than on non-stress days, within the range of 90-day rolling correlations. Non-stress days: 0.32. Spot crash days: 0.53. Bear-market days: 0.38. Named episodes pooled: 0.62 (full period 0.36, 90-day rolling range 0.02–0.66 between P10 and P90). The portfolio's own drawdowns: decline phases 0.38, more than 10 % under water 0.16. Losses are not more frequent together than constant dependence implies: P(ETH < 0 | BTC < 0) is 39% against 42% for the benchmark. On the 153 days when both sleeves lost, the size of their losses is more aligned than the benchmark (0.56 against 0.20); some losing trades are the same shock traded on both markets and stopped out together (section 8). Over the 7 named episodes, the portfolio was positive in 6. In the portfolio's deepest drawdown (2022-01-22 → 2022-03-03, section 11), BTC moved −17.4% and ETH −18.0%.

8Trade overlap

WindowETH trades with a same-direction BTC entrychance levelBTC trades with a same-direction ETH entrychance levelETH trades with an opposite BTC entry
±15 min23.5%0.1%23.5%0.1%0.0%
±1 h25.4%0.5%25.4%0.5%0.0%
±2 h27.9%1.0%27.9%1.1%0.3%
±4 h31.8%2.1%32.1%2.2%1.7%
±8 h33.2%4.1%34.1%4.2%2.2%

Entry times are bar closes (UTC). "±15 min" means the two entries are on the same bar or adjacent bars. Chance level: the same measure after shifting the other sleeve's entries by a random offset (200 circular shifts of 30 days or more), which keeps each sleeve's clustering and removes any timing link.

Share of time (15-min slots)Value
No position75.3%
BTC only7.5%
ETH only9.8%
BTC and ETH7.3%
· both long (LONG/LONG)4.5%
· both short (SHORT/SHORT)2.7%
· BTC long, ETH short0.0%
· BTC short, ETH long0.1%
Trade-level overlap in timeShare
ETH trades that overlap a BTC position in the same direction51.4%
ETH trades that overlap a BTC position in the opposite direction2.8%
BTC trades that overlap an ETH position in the same direction52.5%
BTC trades that overlap an ETH position in the opposite direction3.1%
ETH long trades overlapping a BTC long (LONG/LONG)48.8%
ETH short trades overlapping a BTC short (SHORT/SHORT)57.0%

23% of ETH entries occur within 15 minutes of a same-direction BTC entry, against 0.1% by chance: the same market-wide shock often triggers both sleeves. 67% of ETH entries have no same-direction BTC entry even within ±8 hours. The two sleeves almost never take opposite sides at the same time (0.1% of the time). Most of the time at most one of them is exposed: 17% one sleeve only, 7% both.

9Risk contribution

SleeveCapital weightVolatility (ann.)Marginal risk contributionComponent risk contributionShare of portfolio variance
50/50: BTC50.0%25.0%0.1910.09539.6%
50/50: ETH50.0%33.3%0.2910.14660.4%
A average weights: BTC25.3%25.0%0.1370.03512.5%
A average weights: ETH74.7%33.3%0.3250.24387.5%

σP = √(w′Σw) from daily returns, annualized (24.1% at 50/50). Marginal contribution = (Σw)i / σP; component = wi × marginal; the components sum to σP and their shares sum to 100 %.

50/50 in capital is not 50/50 in risk. ETH is the more volatile sleeve (ETH 33%, BTC 25%); ETH carries 60% of the variance at 50/50 and BTC 40%. With the realized average weights of variant A (BTC 25%), the split becomes 12% / 88%.

Year201820192020202120222023202420252026
BTC share of variance at 50/5022%58%40%33%41%51%57%25%38%
BTC/ETH correlation0.390.270.270.340.410.230.480.450.72

10Diversification

MeasureValueReading
Sharpe portfolio / max(Sharpe BTC, Sharpe ETH)1.050+5.0% vs the better sleeve
Sharpe portfolio / Sharpe BTC1.390+39.0%
Sharpe portfolio / Sharpe ETH1.050+5.0%
Theoretical ratio for two equal-Sharpe, equal-vol sleeves at ρ = 0.361.214√(2 / (1 + ρ))
Max DD portfolio / max DD BTC0.721−17.8% vs −24.8%
Max DD portfolio / max DD ETH0.739−17.8% vs −24.1%
Volatility portfolio / weighted sleeve volatility0.939volatility reduction 6.1%
Volatility portfolio / BTC, / ETH1.095 · 0.82227.4% vs 25.0% and 33.3%
Diversification ratio DR = w′σ / √(w′Σw)1.2081 = no diversification; √2 ≈ 1.414 = two independent equal-vol sleeves
Effective number of independent bets, DR²1.46out of 2 (Choueifaty)
Effective number of bets, principal components1.21out of 2 (entropy of principal-component risk shares, Meucci)

The portfolio is better than each sleeve on Sharpe, Calmar and maximum drawdown: Sharpe 2.02 against 1.46 (BTC) and 1.93 (ETH); Calmar 3.79 against 1.60 and 3.31; maximum drawdown −17.8% against −24.8% and −24.1%. The gain over the better sleeve (+5%) is below the textbook +21% for two identical sleeves at this correlation; the sleeves do not have equal Sharpe or volatility and A drifts away from 50/50. The DR of 1.21 amounts to 1.46 independent bets out of a possible 2; the principal-component measure is 1.21. ETH adds a partial second stream, not an independent one.

11Drawdowns

Underwater curves are in section 3. Episodes run from a peak to the next new high, on daily closes. A drawdown that had not recovered by 2026-09-30 is marked as such, and its duration runs to that date.

Portfolio 50/50

#Start (peak)TroughRecoveryDepthDuration (days)Recovery (days)BTC over peak → troughETH over peak → trough
12022-01-222022-03-032022-06-12−17.8%141101−17.4%−18.0%
22019-09-182020-01-112020-02-12−17.8%14732−4.2%−24.1%
32026-02-052026-05-312026-08-19−14.3%19580−13.0%−14.5%
42022-07-182022-10-212023-01-11−13.1%17782+1.9%−16.2%
52020-09-012020-10-082021-03-29−12.8%209172−3.4%−16.5%
62024-11-112025-02-172025-02-28−11.7%10911−10.6%−12.1%
72021-10-202021-12-272022-01-12−11.1%8416+5.7%−15.6%
82020-08-012020-08-072020-09-01−9.8%3125−8.2%−10.5%
92019-02-102019-05-072019-05-15−9.7%948+10.6%−17.5%
102025-08-132025-09-302025-10-06−8.2%546−6.5%−8.6%

BTC

#Start (peak)TroughRecoveryDepthDuration (days)Recovery (days)ETH over peak → troughPortfolio over peak → trough
12026-02-052026-08-09not recovered−24.8%237—−8.7%−11.0%
22022-01-222022-05-052022-06-10−19.9%13936−11.2%−13.1%
32024-11-112025-02-272025-11-04−12.7%358250+1.7%−2.3%
42022-07-122022-07-182023-01-12−12.2%184178+24.6%+16.4%
52023-04-112023-05-182023-06-21−12.1%7134+2.1%−1.7%
62019-11-242020-03-072020-06-01−10.6%19086+13.9%+5.1%
72019-09-082019-11-182019-11-24−10.4%776−8.9%−9.4%
82020-10-272021-04-102021-07-26−10.2%272107+25.5%+13.9%
92020-06-012020-07-142020-07-27−9.0%5613−4.9%−6.2%
102019-02-232019-03-052019-04-02−8.3%3828−4.5%−5.7%

ETH

#Start (peak)TroughRecoveryDepthDuration (days)Recovery (days)BTC over peak → troughPortfolio over peak → trough
12019-09-182020-01-112020-02-09−24.1%14429−4.2%−17.8%
22022-01-222022-02-282022-06-12−18.0%141104−16.0%−17.6%
32019-02-102019-05-072019-08-09−17.5%18094+10.6%−9.7%
42020-09-012020-10-192021-03-29−16.9%209161−1.4%−12.6%
52022-07-182022-10-242023-01-14−16.2%18082+2.2%−13.1%
62021-10-202021-12-232022-01-20−15.6%9228+7.1%−10.8%
72026-02-052026-05-312026-06-05−14.5%1205−13.0%−14.3%
82024-11-112025-02-132025-02-26−12.1%10713−9.2%−11.2%
92026-06-062026-07-232026-08-19−11.4%7427−10.8%−11.3%
102020-08-012020-08-052020-09-01−10.5%3127−5.2%−9.0%

Does one sleeve help when the other is in drawdown?

Drawdowns consideredCountOther sleeve positiveOther sleeve, mean returnOwn mean depthPortfolio, mean return
10 largest BTC drawdowns: ETH1050%+2.9%−13.0%−1.4%
10 largest ETH drawdowns: BTC1030%−4.0%−15.7%−12.7%
BTC drawdowns deeper than 15 %: ETH20%−10.0%−22.3%−12.0%
ETH drawdowns deeper than 15 %: BTC650%−0.3%−18.0%−13.6%

During the 10 largest drawdowns of one sleeve, the other one was positive in 50% (ETH during BTC drawdowns) and 30% (BTC during ETH drawdowns) of cases. Over these windows the portfolio lost 11% of the BTC drawdown and 81% of the ETH drawdown. The largest ETH drawdown (−24.1%, 2019-09-18 → 2020-01-11) coincided with a −4.2% BTC move, and the portfolio lost 17.8%. Portfolio drawdowns are, almost by construction, periods when both sleeves lose: in 7 of the portfolio's 10 largest drawdowns both sleeves fell over the decline. The deepest (−17.8% from 2022-01-22) combined BTC −17.4% and ETH −18.0%.

12Years and months

YearDaysBTC returnETH returnPortfolio returnBTC SharpeETH SharpePortfolio SharpePortfolio max DDB (monthly) return
2018*122+16.2%+224.3%+120.3%1.715.425.22−6.4%+102.4%
2019365+55.5%−9.0%+8.0%1.52−0.230.45−14.3%+20.6%
2020366+21.2%+77.5%+56.1%0.871.861.82−12.8%+48.5%
2021365+28.3%+60.4%+50.9%1.421.711.80−11.1%+44.4%
2022365+40.1%+94.5%+80.9%1.311.982.00−17.8%+69.0%
2023365+59.3%+22.3%+29.5%1.980.941.35−7.1%+41.4%
2024366+105.2%+66.3%+75.6%3.032.673.13−4.7%+85.4%
2025365+1.2%+112.7%+81.6%0.152.382.24−8.6%+49.4%
2026*273+13.8%+63.9%+56.1%0.862.021.95−14.3%+37.3%

*Partial years: 2018-09-01 → 2018-12-31 and 2026-01-01 → 2026-09-30. Yearly Sharpe ratios use the days of that year only. Max DD is measured within the year, from its first day.

Annual returns

BTCETHPortfolio
0%50%100%150%200%2018* · BTC: 16.2%2018* · ETH: 224.3%2018* · Portfolio: 120.3%2018*2019 · BTC: 55.5%2019 · ETH: −9.0%2019 · Portfolio: 8.0%20192020 · BTC: 21.2%2020 · ETH: 77.5%2020 · Portfolio: 56.1%20202021 · BTC: 28.3%2021 · ETH: 60.4%2021 · Portfolio: 50.9%20212022 · BTC: 40.1%2022 · ETH: 94.5%2022 · Portfolio: 80.9%20222023 · BTC: 59.3%2023 · ETH: 22.3%2023 · Portfolio: 29.5%20232024 · BTC: 105.2%2024 · ETH: 66.3%2024 · Portfolio: 75.6%20242025 · BTC: 1.2%2025 · ETH: 112.7%2025 · Portfolio: 81.6%20252026* · BTC: 13.8%2026* · ETH: 63.9%2026* · Portfolio: 56.1%2026*

Portfolio monthly returns (%)

JanFebMarAprMayJunJulAugSepOctNovDecYear201812.62018 Sep: 12.55%1.22018 Oct: 1.23%45.82018 Nov: 45.76%32.62018 Dec: 32.63%120.32018 Year: 120.27%20191.12019 Jan: 1.07%−6.22019 Feb: −6.21%0.12019 Mar: 0.10%2.02019 Apr: 2.00%13.22019 May: 13.23%−1.12019 Jun: −1.12%0.02019 Jul: 0.00%13.02019 Aug: 12.98%−1.82019 Sep: −1.85%−5.32019 Oct: −5.32%2.52019 Nov: 2.45%−7.32019 Dec: −7.34%8.02019 Year: 8.00%20204.72020 Jan: 4.67%11.22020 Feb: 11.20%−0.32020 Mar: −0.25%2.82020 Apr: 2.85%7.82020 May: 7.80%−0.12020 Jun: −0.11%19.52020 Jul: 19.55%−1.82020 Aug: −1.77%−5.12020 Sep: −5.14%6.52020 Oct: 6.49%3.92020 Nov: 3.88%−1.52020 Dec: −1.49%56.12020 Year: 56.11%20211.52021 Jan: 1.52%0.02021 Feb: 0.00%5.02021 Mar: 5.03%6.02021 Apr: 6.02%0.02021 May: −0.05%8.12021 Jun: 8.10%3.32021 Jul: 3.28%13.42021 Aug: 13.37%6.12021 Sep: 6.08%1.62021 Oct: 1.62%−2.92021 Nov: −2.90%0.82021 Dec: 0.81%50.92021 Year: 50.94%202224.72022 Jan: 24.75%−13.92022 Feb: −13.91%10.52022 Mar: 10.50%−1.92022 Apr: −1.90%0.72022 May: 0.66%28.62022 Jun: 28.56%26.32022 Jul: 26.34%−2.12022 Aug: −2.06%0.02022 Sep: −0.03%−4.42022 Oct: −4.44%1.82022 Nov: 1.82%−0.32022 Dec: −0.25%80.92022 Year: 80.88%20238.02023 Jan: 7.98%4.72023 Feb: 4.74%−0.32023 Mar: −0.33%2.92023 Apr: 2.90%−1.02023 May: −1.01%2.22023 Jun: 2.17%−0.62023 Jul: −0.62%0.82023 Aug: 0.77%0.42023 Sep: 0.36%5.02023 Oct: 4.96%4.62023 Nov: 4.64%0.02023 Dec: 0.00%29.52023 Year: 29.48%20241.62024 Jan: 1.56%27.02024 Feb: 26.95%3.92024 Mar: 3.94%0.02024 Apr: 0.00%0.02024 May: 0.00%−1.02024 Jun: −0.97%2.02024 Jul: 2.02%1.22024 Aug: 1.21%−0.42024 Sep: −0.35%2.62024 Oct: 2.57%26.02024 Nov: 26.04%−0.52024 Dec: −0.53%75.62024 Year: 75.61%2025−3.62025 Jan: −3.62%7.42025 Feb: 7.37%−0.52025 Mar: −0.48%1.32025 Apr: 1.32%22.42025 May: 22.42%3.92025 Jun: 3.87%18.12025 Jul: 18.08%7.72025 Aug: 7.66%−1.42025 Sep: −1.42%8.42025 Oct: 8.41%5.22025 Nov: 5.17%−4.22025 Dec: −4.20%81.62025 Year: 81.61%202617.02026 Jan: 16.96%9.52026 Feb: 9.52%−4.12026 Mar: −4.06%2.62026 Apr: 2.55%−5.72026 May: −5.66%6.42026 Jun: 6.38%−2.52026 Jul: −2.49%28.02026 Aug: 28.00%−1.12026 Sep: −1.12%56.12026 Year: 56.09%

Blue: gain; red: loss; color intensity in steps of 4 % (capped at 20 %). Values in %. The "Year" column is the calendar-year return (partial in 2018 and 2026).

13Distribution and concentration

Distribution of daily returns (days with a non-zero return)

BTC0%10%20%BTC: −7.5% to −7.0% · 0.3% of daysBTC: −7.0% to −6.5% · 0.3% of daysBTC: −5.5% to −5.0% · 0.1% of daysBTC: −5.0% to −4.5% · 0.1% of daysBTC: −4.5% to −4.0% · 0.3% of daysBTC: −4.0% to −3.5% · 0.8% of daysBTC: −3.5% to −3.0% · 2.1% of daysBTC: −3.0% to −2.5% · 1.8% of daysBTC: −2.5% to −2.0% · 3.8% of daysBTC: −2.0% to −1.5% · 4.2% of daysBTC: −1.5% to −1.0% · 10.9% of daysBTC: −1.0% to −0.5% · 16.2% of daysBTC: −0.5% to 0.0% · 14.1% of daysBTC: 0.0% to 0.5% · 10.4% of daysBTC: 0.5% to 1.0% · 7.8% of daysBTC: 1.0% to 1.5% · 4.2% of daysBTC: 1.5% to 2.0% · 4.5% of daysBTC: 2.0% to 2.5% · 3.6% of daysBTC: 2.5% to 3.0% · 2.6% of daysBTC: 3.0% to 3.5% · 2.1% of daysBTC: 3.5% to 4.0% · 1.1% of daysBTC: 4.0% to 4.5% · 1.9% of daysBTC: 4.5% to 5.0% · 1.5% of daysBTC: 5.0% to 5.5% · 0.7% of daysBTC: 5.5% to 6.0% · 0.8% of daysBTC: 6.0% to 6.5% · 0.8% of daysBTC: 7.0% to 7.5% · 0.4% of daysBTC: 7.5% to 8.0% · 0.1% of daysBTC: 8.0% to 8.5% · 0.3% of daysBTC: 8.5% to 9.0% · 0.1% of daysBTC: 9.0% to 9.5% · 0.1% of daysBTC: 9.5% to 10.0% · 0.4% of daysBTC: 10.0% to 10.5% · 0.4% of daysBTC: 10.5% to 11.0% · 0.3% of daysBTC: 11.0% to 11.5% · 0.1% of daysBTC: 11.5% to 12.0% · 0.3% of daysBTC: 12.0% to 12.5% · 0.1% of daysBTC: 14.5% to 15.0% · 0.1% of days−10%−5%0%5%10%15%
76% of days flat, not shown · skew 4.25
ETH0%10%20%ETH: −8.0% to −7.5% · 0.3% of daysETH: −6.5% to −6.0% · 0.1% of daysETH: −6.0% to −5.5% · 0.5% of daysETH: −5.5% to −5.0% · 0.4% of daysETH: −5.0% to −4.5% · 0.5% of daysETH: −4.5% to −4.0% · 0.8% of daysETH: −4.0% to −3.5% · 1.1% of daysETH: −3.5% to −3.0% · 1.8% of daysETH: −3.0% to −2.5% · 1.9% of daysETH: −2.5% to −2.0% · 5.6% of daysETH: −2.0% to −1.5% · 8.5% of daysETH: −1.5% to −1.0% · 10.3% of daysETH: −1.0% to −0.5% · 12.2% of daysETH: −0.5% to 0.0% · 8.5% of daysETH: 0.0% to 0.5% · 8.3% of daysETH: 0.5% to 1.0% · 5.6% of daysETH: 1.0% to 1.5% · 5.0% of daysETH: 1.5% to 2.0% · 4.4% of daysETH: 2.0% to 2.5% · 4.1% of daysETH: 2.5% to 3.0% · 2.8% of daysETH: 3.0% to 3.5% · 2.6% of daysETH: 3.5% to 4.0% · 2.0% of daysETH: 4.0% to 4.5% · 2.1% of daysETH: 4.5% to 5.0% · 1.8% of daysETH: 5.0% to 5.5% · 1.1% of daysETH: 5.5% to 6.0% · 1.3% of daysETH: 6.0% to 6.5% · 1.1% of daysETH: 6.5% to 7.0% · 0.8% of daysETH: 7.0% to 7.5% · 0.4% of daysETH: 7.5% to 8.0% · 0.3% of daysETH: 8.0% to 8.5% · 0.6% of daysETH: 8.5% to 9.0% · 0.4% of daysETH: 9.0% to 9.5% · 0.3% of daysETH: 9.5% to 10.0% · 0.1% of daysETH: 10.0% to 10.5% · 0.5% of daysETH: 10.5% to 11.0% · 0.3% of daysETH: 11.0% to 11.5% · 0.1% of daysETH: 11.5% to 12.0% · 0.3% of daysETH: 12.0% to 12.5% · 0.4% of daysETH: 13.0% to 13.5% · 0.3% of daysETH: 14.0% to 14.5% · 0.1% of daysETH: 14.5% to 15.0% · 0.6% of days−10%−5%0%5%10%15%
73% of days flat, not shown · skew 4.09
Portfolio0%10%20%Portfolio: −6.5% to −6.0% · 0.2% of daysPortfolio: −5.5% to −5.0% · 0.4% of daysPortfolio: −5.0% to −4.5% · 0.3% of daysPortfolio: −4.5% to −4.0% · 0.4% of daysPortfolio: −4.0% to −3.5% · 0.5% of daysPortfolio: −3.5% to −3.0% · 0.8% of daysPortfolio: −3.0% to −2.5% · 1.6% of daysPortfolio: −2.5% to −2.0% · 2.0% of daysPortfolio: −2.0% to −1.5% · 4.0% of daysPortfolio: −1.5% to −1.0% · 8.7% of daysPortfolio: −1.0% to −0.5% · 13.5% of daysPortfolio: −0.5% to 0.0% · 21.9% of daysPortfolio: 0.0% to 0.5% · 14.6% of daysPortfolio: 0.5% to 1.0% · 7.3% of daysPortfolio: 1.0% to 1.5% · 4.9% of daysPortfolio: 1.5% to 2.0% · 2.6% of daysPortfolio: 2.0% to 2.5% · 3.1% of daysPortfolio: 2.5% to 3.0% · 2.5% of daysPortfolio: 3.0% to 3.5% · 2.7% of daysPortfolio: 3.5% to 4.0% · 1.1% of daysPortfolio: 4.0% to 4.5% · 1.0% of daysPortfolio: 4.5% to 5.0% · 1.2% of daysPortfolio: 5.0% to 5.5% · 0.6% of daysPortfolio: 5.5% to 6.0% · 1.1% of daysPortfolio: 6.0% to 6.5% · 0.3% of daysPortfolio: 6.5% to 7.0% · 0.3% of daysPortfolio: 7.0% to 7.5% · 0.5% of daysPortfolio: 7.5% to 8.0% · 0.5% of daysPortfolio: 8.0% to 8.5% · 0.5% of daysPortfolio: 8.5% to 9.0% · 0.1% of daysPortfolio: 9.0% to 9.5% · 0.2% of daysPortfolio: 9.5% to 10.0% · 0.1% of daysPortfolio: 10.0% to 10.5% · 0.1% of daysPortfolio: 10.5% to 11.0% · 0.1% of daysPortfolio: 11.0% to 11.5% · 0.1% of daysPortfolio: 12.5% to 13.0% · 0.2% of daysPortfolio: 13.0% to 13.5% · 0.1% of daysPortfolio: 13.5% to 14.0% · 0.1% of daysPortfolio: 14.5% to 15.0% · 0.1% of days−10%−5%0%5%10%15%
63% of days flat, not shown · skew 3.65

Bins of 0.5 %; returns beyond −10 % or +15 % are counted in the end bins. Heights are shares of the non-zero days of each series.

Concentration of results

UnitCountTop 1 % shareTop 5 % shareTop 10 % shareCAGRCAGR without top 5 %Skew
Portfolio · trades71636%99%135%67.7%−0.3%4.42
BTC · trades35834%108%154%39.6%−2.7%3.22
ETH · trades35827%83%118%80.0%10.8%3.28
Portfolio · days2,95263%171%221%67.7%−30.6%3.36
BTC · days2,95294%231%275%39.6%−35.5%3.84
ETH · days2,95269%180%230%80.0%−37.6%3.70

Definition. A portfolio trade is one sleeve trade, since the sleeves trade different instruments and never net, measured as log(1 + PnL / portfolio equity at entry). Daily: log(1 + daily return). Share = sum of the top k values / sum of all values, which is the total log growth; above 100 % means the remaining trades or days lose in aggregate. "CAGR without top 5 %" removes those log contributions from the realized growth. Overlapping positions make trade contributions approximately, not exactly, additive, so the day-based figures are given as a check. In currency (not log) terms, the top 5 % of portfolio trades carry 124% of the PnL (later trades weigh more there because equity compounds).

The edge sits in the right tail. The best 5 % of trades (36 out of 716) account for 99% of the portfolio's log growth. Without them, the CAGR would be −0%. This is the profile of a strategy with many small losses (69% of trades lose) and a few large winners (payoff 5.58). The top 5 % share is 108% for BTC and 83% for ETH. A period without large winning trades will be a losing period for the portfolio.

14Bootstrap

Block bootstrap by calendar month: 5,000 replications, each a history of 97 months drawn with replacement from the 97 months of the common period (seed 20261008). The same months are drawn for BTC and ETH, so their dependence within each month is preserved. Each replication replays variant A (50/50, no rebalancing) on the drawn path.

StatisticHistoricalBootstrap median90 % interval95 % interval
Portfolio Sharpe2.022.031.53 to 2.511.44 to 2.60
Portfolio CAGR67.7%67.8%40.1% to 107.1%36.8% to 116.5%
Portfolio max drawdown−17.8%−19.7%−30.6% to −13.7%−33.6% to −12.8%
BTC Sharpe (same draws)1.461.440.99 to 1.910.89 to 2.00
ETH Sharpe (same draws)1.931.921.38 to 2.421.27 to 2.53
Probability (share of replications)Value
P(Sharpe portfolio > 0)100.0%
P(Sharpe portfolio > 1)100.0%
P(Sharpe portfolio > Sharpe BTC)100.0%
P(Sharpe portfolio > Sharpe ETH)87.5%
P(Sharpe portfolio > both)87.5%
P(max DD portfolio smaller than BTC)49.8%
P(max DD portfolio smaller than ETH)99.2%

Limits: the bootstrap resamples history; it is not a forecast. Monthly blocks keep dependence within a month but break longer episodes, so the drawdown interval understates multi-month losing streaks. It cannot represent a regime that never occurred in 2018–2026, and the strategy parameters are held fixed (no selection uncertainty is added).

15Capacity and implementation proxies

ProxyBTCETHPortfolio
Trades per year444489
Turnover per year, one-way (entries)44×43×43×
Turnover per year, two-way (entries + exits)88×87×87×
Holding time, mean29.4 h33.9 h31.6 h
Holding time, median11.5 h14.9 h13.0 h
Time in market14.8%17.1%24.7% (any sleeve)
Simultaneous positions (share of time)——7.3%
Average gross exposure14.4%16.4%16.0%
Average net exposure——4.9%
Maximum gross exposure103.7%106.3%103.6%

Execution costs are measured in a separate study. This simulation fills at the 15-minute close or at the stop level, without slippage, about 89 round trips a year across the two markets. Every execution since 2020 was replayed on real Binance perpetual-futures trades to measure what an order of the portfolio’s size would have paid, and how much capital the strategy can carry (institutional dossier). Capacity on Hyperliquid, the intended venue, and the strategy’s own market impact are not yet measured.

16Research evidence

Results already established by earlier, separate studies. They are not re-run here; the figures are read from the stored reports. Sharpe ratios in these tables use the 15-minute convention of those reports, over each asset's full test period.

AssetDataPeriodSharpeCAGRMax DDTradesEvent study: shock → continuationRandom entries beaten+1 bar delay: share of edge keptStatus
BTCBTC/USD · Bitstamp2017-01-01 → 2026-10-041.5941.0%−26.5%396yes100%97%calibration asset
ETHETH/USDT · Binance2018-09-01 → 2026-09-302.0580.0%−26.7%358yes100%94%zero-shot transfer
ETH (replication)ETH/USD · Dukascopy2019-01-01 → 2026-09-301.8257.5%−23.6%206yes100%73%independent data source · zero-shot transfer
GoldXAU/USD spot · Dukascopy2013-01-01 → 2026-09-300.391.8%−11.8%319no100%115%partial transfer
SOLSOL/USDT · Binance2021-09-01 → 2026-09-300.5716.0%−54.0%251yes93%80%partial transfer
TAOTAO/USDT · Binance2024-08-15 → 2026-09-300.01−7.3%−39.2%95no55%n/mfailed

Random entries: 200 placebo runs with the same exits, the same regime and the same number of trades, entries drawn at random. +1 bar delay: average trade gain when every entry is taken one 15-minute bar late, as a share of the on-time gain (n/m: not meaningful when the on-time gain is negative).

Local parameter robustness (all preset parameters perturbed jointly, 300 neighbors per level)

Asset · perturbationPreset SharpeNeighbor medianNeighbor P10 – P90Preset beatsNeighbors keeping ≥ 80 % of the preset SharpeNeighbors profitable
BTC · ±5 %1.591.491.42 – 1.5892%100%100%
BTC · ±10 %1.591.421.32 – 1.5299%97%100%
BTC · ±20 %1.591.351.23 – 1.47100%83%100%
ETH · ±5 %2.052.051.91 – 2.1955%100%100%
ETH · ±10 %2.052.031.81 – 2.2155%100%100%
ETH · ±20 %2.051.941.76 – 2.1476%99%100%

17Interpretation

  1. Do the two sleeves produce two distinct return streams?

    Partly. They are the same engine on two markets whose prices are correlated at 0.82, and they share a common component: 23% of ETH entries occur within 15 minutes of a same-direction BTC entry (0.1% by chance). The overlap ends there. Strategy returns correlate at 0.36, one sleeve trades alone 17% of the time against 7% for both, and the effective number of independent bets is 1.46 out of 2. This is one strategy with a meaningful second stream, not two independent alphas.

  2. How much diversification does ETH bring?

    A meaningful amount. Against BTC alone, the Sharpe ratio rises by +39% (1.46 → 2.02) and the maximum drawdown falls from −24.8% to −17.8%. Volatility is 6% below the weighted average of the two sleeves. The diversification ratio is 1.21. Portfolio Sharpe against the better sleeve: 2.12 against 2.05 in the first half, 1.98 against 1.81 in the second, when the correlation between the sleeves was higher (0.44 against 0.31).

  3. Does correlation rise sharply in crises?

    It rises on stress days, but stays within the range of 90-day rolling correlations. Correlation is 0.32 on non-stress days and 0.53 and 0.38 on spot crash and bear-market days (full period 0.36). Joint losses are not more frequent than constant dependence implies. When both sleeves lose on the same day, the sizes of their losses are more aligned than the benchmark (0.56 against 0.20). In the deepest portfolio drawdown (2022-01-22 → 2022-03-03) BTC moved −17.4% and ETH −18.0%.

  4. Does the portfolio improve the return/risk ratio?

    Yes, historically. The portfolio is better than each sleeve on Sharpe, Calmar and maximum drawdown: Sharpe 2.02, Sortino 4.73, Calmar 3.79. Its CAGR (68%) compares with 40% for BTC and 80% for ETH. In the joint monthly bootstrap, the portfolio Sharpe exceeds BTC's in 100% of replications and ETH's in 88%. The 90 % interval of the portfolio Sharpe is 1.53–2.51.

  5. Does the result depend on a single period?

    Not on a single year. The portfolio return is positive in 9 of 9 calendar years and its Sharpe is above 1 in 8 of 9. The weakest full year is 2019 (+8.0%). The portfolio Sharpe is 1.98 in the second half (2022-09-16 → 2026-09-30) against 2.12 in the first (2018-09-01 → 2022-09-15), with a higher correlation between the sleeves (0.44 against 0.31). Starting in 2019, which leaves out ETH's +224% in late 2018, gives 1.86 with a CAGR of 51% (diagnostic only; the official period is unchanged). The result does depend on a small number of trades: the best 5 % carry 99% of the net gain. The rolling 12-month Sharpe was positive 100% of the time.

  6. What are the main risks not modeled?

    See section 20: slippage and market impact (zero in the simulation, with 87× two-way annual turnover), perpetual funding, the difference between the data venues (Bitstamp BTC/USD, Binance ETH/USDT) and the execution venue, exchange and stablecoin risk, latency and stop execution in live markets, and the fact that the BTC preset was selected on 2017–2026 data that contains the whole common period. ETH is a transfer across assets, not across time.

Assessment. Good, not excellent, diversification. On this history the 50/50 combination improves risk-adjusted returns and drawdowns over each sleeve, although correlation was higher on stress days. The two sleeves share a common driver and carry unequal risk (40% / 60%).

18Future hypotheses

Observations made while measuring the frozen portfolio. None of them changes the official portfolio. Each would need to be specified in advance and tested on data not used here (forward period).

19Sanity checks

CheckResultDetail
BTC ×0: detailed loop = simulate()passmax |Δequity| 0, trades 396 / 396
BTC ×0: full-period metrics = validated reportpassresearch/reports/shock-15m-zeroshot-btc-calm.json, worst relative gap 0.0e+0
BTC ×1: detailed loop = simulate()passmax |Δequity| 0, trades 396 / 396
BTC ×1: full-period metrics = validated reportpassresearch/reports/shock-15m-zeroshot-btc-calm.json, worst relative gap 0.0e+0
BTC ×2: detailed loop = simulate()passmax |Δequity| 0, trades 396 / 396
BTC ×2: full-period metrics = validated reportpassresearch/reports/shock-15m-zeroshot-btc-calm.json, worst relative gap 0.0e+0
BTC: equity = capital + Σ trade PnL (+ open position)passresidual 0.000000000 (open position at end: false)
BTC: commissions charged once per fillpassΣ fees vs 0.045 % × (entries + exits), relative gap 7.8e-16
BTC: no leverage at entrypassmax entry notional / sleeve equity = 1.000000000000
ETH ×0: detailed loop = simulate()passmax |Δequity| 0, trades 358 / 358
ETH ×0: full-period metrics = validated reportpassresearch/reports/shock-15m-zeroshot-ethusdt-calm.json, worst relative gap 0.0e+0
ETH ×1: detailed loop = simulate()passmax |Δequity| 0, trades 358 / 358
ETH ×1: full-period metrics = validated reportpassresearch/reports/shock-15m-zeroshot-ethusdt-calm.json, worst relative gap 0.0e+0
ETH ×2: detailed loop = simulate()passmax |Δequity| 0, trades 358 / 358
ETH ×2: full-period metrics = validated reportpassresearch/reports/shock-15m-zeroshot-ethusdt-calm.json, worst relative gap 0.0e+0
ETH: equity = capital + Σ trade PnL (+ open position)passresidual 0.000000000 (open position at end: false)
ETH: commissions charged once per fillpassΣ fees vs 0.045 % × (entries + exits), relative gap 5.7e-16
ETH: no leverage at entrypassmax entry notional / sleeve equity = 1.000000000000
BTC: timestamps on the UTC 15-min gridpass283277 bars, 0 off-grid, 0 non-increasing (bar-open timestamps, ms UTC)
ETH: timestamps on the UTC 15-min gridpass283081 bars, 0 off-grid, 0 non-increasing (bar-open timestamps, ms UTC)
BTC: one close per day, no interpolationpass2952 days, 0 days without a bar (carried, return 0)
BTC: zero-return days are days without a positionpass2234 zero-return days, 2234 of them flat all day
ETH: one close per day, no interpolationpass2952 days, 0 days without a bar (carried, return 0)
ETH: zero-return days are days without a positionpass2155 zero-return days, 2155 of them flat all day
Capital: BTC sleeve 50 + ETH sleeve 50 = 100 at t0passeach sleeve compounds only its own 50
Capital: portfolio = BTC sleeve + ETH sleeve, every daypassmax |V − (V_BTC + V_ETH)| = 0.0e+0
Sleeve value = 50 × strategy equity / equity at t0 (engine is scale-invariant)passmax relative gap 5.3e-15
No double compounding: Π(1 + r_portfolio) reproduces the portfolio valuepassmax relative gap 6.3e-15
Portfolio return = drifting-weight average of sleeve returnspassmax |r_p − (w_BTC r_BTC + w_ETH r_ETH)| = 3.3e-16, weights from the previous close
15-min portfolio marks agree with daily closespassmax relative gap at 23:45 bars 2.4e-15
BTC/ETH timestamps not shifted (15-min underlying returns peak at lag 0)pass-4: -0.002 · -3: 0.005 · -2: -0.025 · -1: 0.012 · 0: 0.813 · +1: 0.005 · +2: -0.033 · +3: 0.005 · +4: -0.003
Correlation recomputed independently (z-score formula)pass0.357515 vs 0.357515
Max drawdown recomputed independently (episodes vs running peak)pass-17.8499 %
Sharpe recomputed independently (Welford vs two-pass)pass2.024208
CAGR recomputed independently (log-sum vs end value)pass67.7273 %
Equal-risk weights causal (window ends at the rebalancing close)pass97 monthly targets; truncating the series after the rebalancing day leaves each weight unchanged
Gross exposure of the 50/50 portfoliopassmax 103.6 % of portfolio equity (100 % = both sleeves fully invested; above 100 % only through price moves against open shorts and the entry commission)
ETH runs the BTC preset unchangedpassparameter hash c6ac30464bce14dd… identical for both sleeves
walk-forward : référence 36/3 = synthèse des fenêtres longuespass0.83 contre 0.83
Stress: zero-slippage portfolio Sharpe = this report (research/shock/published-stress.ts)pass2.0242078889

Look-ahead: the engine computes every indicator, the daily volatility regime (closed days only) and every decision causally, and its parity with the bar-by-bar live engine is covered by the project's tests (npm run test:research). The portfolio layer only uses closes up to the current day: drifting weights come from the previous close, rebalancing happens at the month-end close with information up to that close, and the equal-risk weights use the 90 days ending at that close.

20Limitations and unmodeled risks

Files and reproducibility

Produced by node --disable-warning=MODULE_TYPELESS_PACKAGE_JSON research/shock/portfolio.ts --variant calm (deterministic, fixed seeds). Next to this report: portfolio_daily_returns.csv, portfolio_monthly_returns.csv, portfolio_annual_returns.csv, portfolio_drawdowns.csv, portfolio_correlation_rolling.csv, portfolio_summary.json (machine-readable, for later integration) and shock-engine-manifest.json (git commit, dataset and script hashes, parameter hash, assumptions).