Sample result. A real backtest on the live engine, shown so you can explore the actual research output: metrics, robustness, charts, and trade analysis.
Research only, not investment advice. Results are simulated or historical, depend on the stated
assumptions and data, and are not a recommendation. Verify independently.
Full disclaimer →
Ann. return+9.6%
Sharpe0.56
Sortino0.59
Max drawdown-21.6%
Volatility11.4%
RobustnessB
Recompute liveRisk-free moves Sharpe & Sortino instantly (client-side); the trade-cost slider re-derives net performance server-side. No new backtest, no credit.
Result caveats
Largest date gap is 5 days; inspect missing history or market closure.
Indicator warm-up: the longest indicator window used (200-day SMA or equivalent; 200 daily observations) means signals are inactive before 2015-10-19. The performance series includes this flat warm-up interval.
Backtest it. Then try to break it.
Every result is challenged for statistical significance, overfitting, cost fragility,
regime-dependence, tail and drawdown risk before it earns a grade. The grade measures
the strength of the evidence, how well the result survives scrutiny,
never whether to invest.
B69.3/100
Assessed grade B+
(77/100) on 90% evidence coverage,
complete the n/a checks below to lift the overall grade toward it.
Grade B (69/100), fair robustness. Strong on: statistical significance, sample length, cost robustness, data quality. Among the 90% of evidence actually assessed the grade is B+ (77/100); completing the unassessed checks moves the overall grade toward that band.
Statistical significance
96
Sample length
100
Activity / trade count
66
Out-of-sample evidence
71
Overfitting probability
n/a
Risk profile
56
Tail risk
62
Regime robustness
66
Return stability
64
Alpha purity
60
Cost robustness
100
Data quality
95
The robustness score weighs statistical significance, sample size, activity, out-of-sample evidence, overfitting probability, risk, tail risk, regime robustness, return stability, alpha purity, cost margin, and data quality. The headline grade is conservative (unassessed checks score zero); assessed_grade is the grade among the evidence measured. A high grade is necessary but not sufficient, confirm with independent replication before any capital decision.
Backtest it. Then try to break it.
Each robustness attack, what it asked, and whether the result held
or raised a concern. Descriptive evidence about how the
result survives scrutiny, never advice.
Out-of-sample decayHeld
Does the edge survive on data the parameters never saw?
71% of 17 walk-forward test windows stayed positive.
Transaction-cost fragilityHeld
How much trading cost erases the edge?
Breakeven transaction cost is ~90 bps of headroom.
Analysis of user-supplied returns. Helvetic did not source or verify this data. Figures are annualised at the stated frequency. Research only, not investment advice.
Performance
Total ReturniCumulative growth over the whole period, before any annualisation.final_equity / first_equity - 1
+174.2%
Annualised ReturniThe constant yearly rate (CAGR) that compounds to the total return.(1 + total_return) ** (1 / years) - 1, years = (n_points - 1) / periods_per_year
+9.63%
p.a.
Sharpe RatioiExcess return per unit of total risk; higher is better, >1 is strong.((1 + mean(returns)) ** periods_per_year - 1 - risk_free_rate) / annualised_volatility
0.56
Risk-adjusted
Sortino RatioiLike Sharpe but penalises only downside volatility, not upside swings.((1 + mean(returns)) ** periods_per_year - 1 - risk_free_rate) / (stdev(returns < 0) * sqrt(periods_per_year))
0.59
Downside-adjusted
Calmar RatioiAnnual return earned per unit of worst peak-to-trough loss.annualised_return / abs(max_drawdown)
0.45
Return / Max DD
Risk
Volatility p.a.iYearly standard deviation of returns, how much the result swings.stdev(returns) * sqrt(periods_per_year)
+11.41%
Max DrawdowniLargest peak-to-trough decline experienced during the period.min((equity - running_peak) / running_peak)
-21.55%
525 trading days
VaR 95% (daily)iLoss the result is not expected to exceed on 95% of periods (historical).5th percentile of the per-period return distribution
-1.20%
CVaR -1.915%
Ulcer IndexiDepth-and-duration of drawdowns; lower means shallower, shorter pain.sqrt(mean(drawdown_pct ** 2))
7.61
Depth+duration of DDs
Return Quality
Win Rate (trading days)iShare of periods with a positive return.count(returns > 0) / count(returns)
42.7%
1180W / 958L
Positive MonthsiShare of calendar months with a positive return.count(monthly_returns > 0) / count(monthly_returns)
60.3%
Profit FactoriGross gains divided by gross losses; >1 means gains outweigh losses.sum(gains) / abs(sum(losses))
1.19
Omega RatioiProbability-weighted gains versus losses around the risk-free hurdle (Minimum Acceptable Return).sum(returns above hurdle) / abs(sum(returns below hurdle))
1.11
Payoff RatioiAverage winning return divided by the average losing return (magnitude).mean(returns > 0) / abs(mean(returns < 0))
0.97
Avg win / avg loss
Recovery FactoriTotal return earned per unit of worst peak-to-trough loss.total_return / abs(max_drawdown)
8.08
Return / Max DD
Gain-to-PainiSum of monthly returns over the absolute sum of negative months (Schwager).sum(monthly_returns) / abs(sum(monthly_returns < 0))
1.00
Monthly (Schwager)
Ulcer Perf. IndexiMartin ratio: excess annual return per unit of Ulcer Index (drawdown depth+duration).(annualised_return - risk_free_rate) / ulcer_index
0.74
Martin ratio
Tail RatioiRight-tail size versus left-tail size; above 1 means gains reach further than losses.abs(percentile(returns, 95) / percentile(returns, 5))
0.98
P95 / |P5|
Common Sense RatioiProfit factor scaled by the tail ratio; rewards both a positive edge and a benign tail.profit_factor * tail_ratio
1.17
CPC IndexiComposite edge index combining profit factor, win rate, and payoff ratio.profit_factor * win_rate * payoff_ratio
0.49
Best MonthiLargest single-month gain.max(monthly_returns)
SkewnessiAsymmetry of returns; positive favours upside surprises.third standardised moment of returns
-0.99
Return asymmetry
Excess KurtosisiFat-tailedness versus a normal distribution; higher means more extremes.fourth standardised moment - 3
5.53
Fat-tail risk
Versus Benchmark
Excess ReturniTotal return above the benchmark over the period.strategy_total_return - benchmark_total_return
-129.05%
vs SPY
BetaiSensitivity to the benchmark; 1 moves with it, 0 is independent.cov(returns, benchmark) / var(benchmark)
0.410
vs SPY
Tracking ErroriYearly volatility of the return difference versus the benchmark.stdev(returns - benchmark_returns) * sqrt(periods_per_year)
13.67%
p.a.
Information RatioiBenchmark-relative excess return per unit of tracking error.annualised(excess_return) / tracking_error
-0.27
Jensen's AlphaiAnnual return beyond what the benchmark exposure (beta) explains.ann(return) - (rf + beta * (ann(benchmark) - rf))
+1.68%
p.a.
Up CaptureiShare of the benchmark's gains captured on its up periods (100% = matches).mean(returns | benchmark up) / mean(benchmark | up) * 100
62%
Down CaptureiShare of the benchmark's losses taken on its down periods (lower is better).mean(returns | benchmark down) / mean(benchmark | down) * 100
61%
Statistical Significance
Probabilistic Sharpe
95%
Confidence the true Sharpe > 0
Min. Track Record
10.4y
Sample is long enough (95% conf.)
Interpretation
Strong: the Sharpe is very likely positive (>95% confidence). About 10.4 years of this return profile are needed before the Sharpe is statistically positive at 95% confidence. The current sample meets this.
Research Workbench Charts
Rolling Sharpe (1Y)
Rolling Volatility (1Y, annualised %)
Annual Returns
Daily Return Distribution
Skew -0.99Excess kurt. 5.53Best trading day +2.74%Worst trading day -5.76%
Blue bars = observed daily returns. Gold line = a normal curve with the same mean and volatility, fat left tails or a leftward skew versus it flag crash risk the average hides. Dashed markers: VaR 95% (loss exceeded 1 period in 20) and mean.
Monte Carlo Projection , forward outcome range
Block-bootstrap resampling of the strategy's own return path, projected forward
one year across 2,000 simulated paths.
It answers "given how this strategy has behaved, what range of outcomes is plausible from here?"
, a distributional stress view, not a forecast.
Projected value: percentile bands
Where the projection lands: terminal value distribution
Outcome
Projected value
Total return
Annualised
Client-side estimate over 2,000 paths, it uses the same
block-bootstrap method as the server and converges to it within simulation error. For the
canonical server run, use the Monte Carlo check in Deepen Analysis below. Probabilities are
relative to the current portfolio value; past behaviour need not persist.
Out-of-Sample: Walk-Forward
The rule is re-fit on a rolling in-sample window and scored only on the unseen
out-of-sample window that follows, the closest thing to trading it forward without
hindsight. Consistent positive out-of-sample windows point to a real edge; a collapse versus
the full-sample Sharpe points to overfitting.
Out-of-sample Sharpe by window
Per-window out-of-sample results
Out-of-sample window
Sharpe
Return
Max DD
Calendar-Year Profile
Annual return: strategy vs benchmark
Calendar-year returns (year-end to year-end; the first year runs from inception). A benchmark bar appears when one is stored for this run.
Risk vs return, one point per year
Each dot is one calendar year: horizontal = that year's realised volatility, vertical = that year's return. Up-and-left is the ideal quadrant (more return per unit of risk).
Deepen Analysis
Choose an institutional check
Run a focused robustness check and Helvetic will summarize the result here. Raw payloads stay available under technical details instead of taking over the page.
Significance tests whether the Sharpe is likely real.
Factor shows what risk factors the returns are really betting on.
Random null checks the edge against random timing on the same instrument.
Turnover estimates trading activity and cost sensitivity.
Walk-forward, Monte Carlo and drawdowns already have their own always-on cards above, so they are not repeated here.
Equity Curve (USD)
Custom rangeto
Benchmark Overlay
Compare Overlay
No comparable retained runs yet. Save another backtest and it will appear here.
Overlays are rebased to this strategy's starting value.
Visible Window
Window Return-
Max DD-
Best Day-
Last Value-
Relative Diagnostics
Active Return-
Tracking Error-
Beta-
Correlation-
Select a benchmark overlay to unlock active-risk diagnostics for the visible chart window.
Compare Strategies
Select up to three of your other retained runs to compare on the numbers. This run is always the first column.
No comparable retained runs yet. Save another backtest and it will appear here.
Versus Benchmark
Excess Return
-
Beta
-
Tracking Error
-
p.a.
Jensen's Alpha
-
p.a.
Up Capture
-
Down Capture
-
Benchmark Diagnostics
Rolling Alpha / Beta vs Selected Benchmark
Strategy vs Benchmark Underwater
Uses the active benchmark shown on the equity chart. Rolling alpha is annualised from this result's stored bar frequency.
Relative Performance vs Benchmark
Cumulative strategy-to-benchmark ratio, rebased to 100 at the first visible date. Rising = strategy outperforming; level = matching; falling = lagging.
Drawdowns: depth and duration
Underwater (% below high-water mark)
Time underwater (trading days since last peak)
Resets to zero at every new equity high. Long plateaus are the pain a max-drawdown number alone hides, how long you would have waited to recover.
Exposure Over Time
Trade Statistics
Round Trips
29
Trade Win Rate
20.7%
Avg Trade
+3.73%
Profit Factor
4.45
Avg Holding
67.4d
Time in Market
76%
Statistics cover completed trades only. One long position is still open (entered 2025-05-13, 160 bars), currently +18.75% unrealised, excluded from the numbers above.
Recent Trades
#
Side
Entry
Exit
Holding
Return
Result
1
LONG
2022-08-17
2022-08-18
1d
-0.81%
Loss
2
LONG
2022-12-01
2022-12-06
3d
-2.08%
Loss
3
LONG
2022-12-14
2022-12-15
1d
-0.74%
Loss
4
LONG
2023-01-12
2023-01-19
4d
-1.12%
Loss
5
LONG
2023-01-23
2023-03-13
34d
-2.62%
Loss
6
LONG
2023-03-15
2023-03-16
1d
-0.72%
Loss
7
LONG
2023-03-17
2023-10-26
154d
+6.47%
Win
8
LONG
2023-11-02
2025-03-11
337d
+34.40%
Win
9
LONG
2025-03-25
2025-03-27
2d
-1.05%
Loss
10
LONG
2025-05-13
open
160d
+18.75%
Open
Most recent 10 of 29 total round trips, oldest first. Return is the per-trade compounded result, net of costs; the final row is the still-open position.
Trade Lab
Per-trade return & cumulative (%)
Return vs holding period
Left: each closed trade's net return (green win / red loss) with the cumulative compounded line, reveals win/loss streaks. Right: return vs holding days, do winners run longer than losers? Based on the most recent round trips.
Sequencing Risk · Trade-Order Permutation
The same 29 trades, re-ordered 2,000 times. Ordering leaves the total return unchanged and moves only the drawdown path, so this isolates whether the realised drawdown comes from the trades or from the order they happened in. Research only.
Realised max drawdown
-12.38%
Median re-ordering
-12.69%
Mildest ordering
-6.53%
Deepest ordering
-25.44%
Orderings milder than realised
46%
The realised drawdown is typical of random orderings of the same trades: the drawdown reflects the trades themselves, not lucky or unlucky sequencing.
Where the Edge Comes From · Benchmark Regimes
Every period is bucketed by what the benchmark did (one-sigma benchmark-return quantiles (Bear <=16th pct, Bull >=84th pct)). Each regime's Sharpe contribution sums to the full-sample arithmetic Sharpe (0.86), so this shows where the risk-adjusted return is actually earned. Research only.
Benchmark regime
Share of periods
Strategy return (p.a.)
Sharpe contribution
Bear
16%
-89.1%
-3.10
Normal
68%
+22.0%
+1.18
Bull
16%
+620.0%
+2.79
Most of the risk-adjusted return is earned when the benchmark is strong (Bull periods), so the edge is largely bull-dependent and may weaken in flat or falling markets.
Cost Robustness · Fee Cushion
Fee cushion
8.9x
Breakeven cost
90 bps
Cost assumed
10.0 bps
The strategy stays profitable up to 90 bps of cost per unit of turnover, versus the 10.0 bps assumed here: a 8.9x cushion. A cushion near or below 1x means the edge leans on an optimistic cost assumption. Research only.
Rolling 1-Year Stability
Latest Sharpe
0.51
Min Sharpe
-2.57
Max Sharpe
3.53
Positive Windows
64%
Regime Slicer
Regime
Trading days
Annualised
Sharpe
Worst Trading day
Bull / Uptrend
2115
21.12%
1.37
-5.76%
Bear / Downtrend
451
-25.59%
-3.83
-4.49%
Regime
Trading days
Annualised
Sharpe
Worst Trading day
Low Volatility
915
10.34%
1.25
-1.80%
Mid Volatility
915
20.40%
1.62
-2.70%
High Volatility
915
1.35%
-0.16
-5.76%
Volatility regimes are sliced from 21-day realised volatility.
Stress Period Analysis
Period
Dates
Return
Max DD
Sharpe
Vol
COVID-19 Crash
2020-02-03 → 2020-12-31
8.47%
-17.84%
0.40
17.4%
Inflation & Rate Shock 2022
2022-01-03 → 2022-12-30
-16.64%
-16.64%
-2.57
8.0%
Post-COVID Recovery
2020-04-01 → 2021-12-31
62.81%
-9.44%
2.01
14.6%
Crypto Winter 2022
2021-11-01 → 2022-12-30
-13.13%
-16.64%
-1.60
9.4%
Crypto Bull Run 2020-21
2020-10-01 → 2021-10-29
38.18%
-7.35%
2.39
13.5%
Monthly and Yearly Returns (%)
Year
Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec
Year Return
Year Max DD
2015
-
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
1.2
-0.2
-6.1
-5.19%
-7.67%
2016
-0.1
0.0
1.8
0.4
1.7
-1.6
3.6
0.1
0.0
-1.7
3.7
2.0
+10.18%
-5.62%
2017
1.8
3.9
0.1
1.0
1.4
0.6
2.1
0.3
2.0
2.4
3.1
1.2
+21.71%
-2.61%
2018
5.9
-3.6
-2.7
0.5
2.4
0.6
3.7
3.2
0.6
-7.5
-1.5
-2.1
-1.34%
-11.31%
2019
0.0
0.7
1.8
4.1
-6.4
4.7
1.5
-1.7
1.9
2.2
3.6
2.9
+16.04%
-6.47%
2020
-0.0
-7.6
-6.5
0.0
1.6
1.8
5.9
7.0
-3.7
-2.5
10.9
3.7
+9.23%
-17.84%
2021
-1.0
2.8
4.5
5.3
0.7
2.2
2.4
3.0
-4.7
7.0
-0.8
4.6
+28.73%
-5.11%
2022
-7.6
-4.4
1.5
-2.7
0.0
0.0
0.0
-0.9
0.0
0.0
0.0
-3.0
-16.15%
-16.64%
2023
1.3
-2.5
0.0
1.6
0.5
6.5
3.3
-1.6
-4.7
-2.4
7.9
4.6
+14.36%
-9.43%
2024
1.6
5.2
3.3
-4.0
5.1
3.5
1.2
2.3
2.1
-0.9
6.0
-2.7
+24.57%
-8.41%
2025
2.7
-1.3
-6.8
0.0
1.0
5.1
2.3
2.0
3.6
2.4
0.2
0.8
+12.16%
-10.38%
Cell shading scales with monthly return magnitude. Year Return is year-end to year-end, with the first year measured from inception; Year Max DD is the worst intra-year peak-to-trough.
Seasonality: average return by calendar month (%)
Mean return for each calendar month across every year in the sample (green = positive average, red = negative). A lens on calendar tendencies, short samples overfit easily, so treat it as a hypothesis, not a guarantee.
Drawdown Recovery Table
Start
Trough
End
Depth
Duration
Trading days to New High
2022-01-04
2023-03-17
2024-02-07
-21.55%
525d
224d
2020-02-19
2020-03-06
2020-11-16
-17.84%
189d
177d
2018-09-21
2019-02-08
2019-11-26
-12.08%
297d
202d
2025-02-19
2025-05-23
2025-08-13
-10.38%
121d
55d
2018-01-26
2018-02-08
2018-07-25
-10.10%
124d
115d
Assumptions & Audit Trail
Provider: Yahoo Finance via yfinance Adjustment: auto_adjust=True; splits and dividends incorporated by provider Dataset SHA-256:28fe6424f262a8b0cb3… Backtest ID:sample-result
Cost used: 10.00 bps per unit turnover Execution: signals generated on close; position changes execute on the next bar Warm-up: 200 bars; first valid 2015-10-16; first signal 2015-10-22 Data quality: 95/100 Integrity: WARN Conventions: Metrics reported on daily bars (252/yr); Sharpe and Sortino use the arithmetic-mean-compounded excess-return convention. Disclaimer: Past performance is not indicative of future results. Not investment advice.
Data-quality warnings: Largest date gap is 5 days; inspect missing history or market closure.