v9 Grid Backtest — Result Report
실행일: 2026-04-16 02:02 Runtime: 358s 기간: 2016-01-01 ~ 2025-06-30 OOS split: 2024-01-01 Total configs: 240 (OK: 240)
Universe & Portfolio
{
"universe": {
"ath_drawdown_threshold": -0.95,
"min_cash_to_mcap_ratio": 2.0,
"min_mcap": 20000000,
"min_pipeline_phase": "Phase 2",
"min_ipo_age_years": 2,
"min_cash_runway_quarters": 0,
"require_sec_filing_history": false
},
"portfolio": {
"initial": 100000,
"max_pct": 0.125,
"max_concurrent": 8,
"cooldown_days": 90,
"slippage_per_side": 0.005,
"commission_per_trade": 0.0,
"max_volume_pct": 0.1
}
}Summary Statistics
- OK configs: 240
- Configs with Sharpe > 0.5: 178
- Configs with OOS Sharpe > 1.0: 109
- Configs meeting ALL v9 goals (MaxDD≤-20%, OOS_Sharpe≥1.0, CAGR≥15%, 2022+ ≥60 trades): 0
🎯 v9 Goal Achievers
No configs met ALL goals simultaneously. Relaxed checks in top 15 tables below.
Charts
Return vs Sharpe (color = MaxDD)

Sharpe Heatmap (Entry × Exit)

Total Return Heatmap

MaxDD Heatmap

IS vs OOS Sharpe

Equity Curves (Top 5 by Sharpe)

Yearly Trade Count (Top 10 by Sharpe)

Top 15 by Sharpe
| # | Entry | Exit | Sh | OOS Sh | Ret | CAGR | MaxDD | WR | Trades | 22+ |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | bb_20 | fixed_100_40_365 | 1.07 | 2.39 | +462% | +21.9% | -32.5% | 72% | 29 | 27 |
| 2 | bb_pullback_12 | chandelier_atr3 | 1.05 | 1.26 | +151% | +20.6% | -21.0% | 58% | 19 | 18 |
| 3 | ens_v51 | breakeven_70_30_180 | 0.91 | 1.81 | +346% | +20.0% | -26.7% | 65% | 43 | 39 |
| 4 | bb_20 | scaled_30_100 | 0.89 | 1.46 | +255% | +15.7% | -34.0% | 75% | 28 | 26 |
| 5 | ens_v51 | fixed_70_30_180 | 0.88 | 1.55 | +311% | +18.8% | -18.8% | 68% | 44 | 40 |
| 6 | hammer | chandelier_atr3 | 0.87 | 0.69 | +166% | +15.9% | -20.4% | 43% | 23 | 21 |
| 7 | macd | fixed_100_40_365 | 0.86 | 1.63 | +260% | +20.3% | -58.5% | 63% | 30 | 28 |
| 8 | bb_20 | breakeven_70_30_180 | 0.85 | 1.92 | +230% | +15.7% | -24.8% | 73% | 30 | 28 |
| 9 | rsi_divergence | trail_25_180 | 0.83 | 1.67 | +148% | +15.5% | -29.2% | 75% | 20 | 19 |
| 10 | bb_20 | partial_50_trail25 | 0.83 | 1.17 | +269% | +16.2% | -39.0% | 79% | 28 | 26 |
| 11 | ens_pullback | trail_30_365 | 0.83 | 1.19 | +293% | +20.2% | -50.8% | 56% | 39 | 36 |
| 12 | ens_v51 | breakeven_50_30_180 | 0.81 | 1.55 | +264% | +17.1% | -29.5% | 68% | 44 | 40 |
| 13 | obv_div | fixed_100_40_365 | 0.81 | 1.16 | +199% | +17.3% | -49.3% | 79% | 19 | 17 |
| 14 | ens_pullback | chandelier_atr3 | 0.80 | 0.81 | +200% | +16.9% | -39.3% | 46% | 39 | 36 |
| 15 | ens_strong | fixed_100_40_365 | 0.79 | 1.02 | +487% | +18.7% | -44.1% | 56% | 52 | 47 |
Top 15 by Total Return
| # | Entry | Exit | Ret | CAGR | Sh | OOS Sh | MaxDD | WR | Trades |
|---|---|---|---|---|---|---|---|---|---|
| 1 | ens_strong | fixed_100_40_365 | +487% | +18.7% | 0.79 | 1.02 | -44.1% | 56% | 52 |
| 2 | bb_20 | fixed_100_40_365 | +462% | +21.9% | 1.07 | 2.39 | -32.5% | 72% | 29 |
| 3 | ens_v51 | breakeven_70_30_180 | +346% | +20.0% | 0.91 | 1.81 | -26.7% | 65% | 43 |
| 4 | macd | trail_30_365 | +330% | +23.4% | 0.78 | 1.27 | -52.6% | 44% | 34 |
| 5 | ens_reversal | partial_50_trail25 | +327% | +15.1% | 0.62 | 1.28 | -58.8% | 66% | 44 |
| 6 | ens_reversal | chandelier_atr3 | +323% | +16.0% | 0.72 | 0.91 | -29.1% | 50% | 58 |
| 7 | ens_v51 | fixed_100_40_365 | +314% | +17.8% | 0.74 | 0.96 | -46.0% | 60% | 40 |
| 8 | ens_v51 | trail_30_365 | +312% | +17.8% | 0.77 | 0.97 | -44.0% | 57% | 44 |
| 9 | ens_v51 | fixed_70_30_180 | +311% | +18.8% | 0.88 | 1.55 | -18.8% | 68% | 44 |
| 10 | ens_pullback | trail_30_365 | +293% | +20.2% | 0.83 | 1.19 | -50.8% | 56% | 39 |
| 11 | ens_strong | partial_50_trail25 | +287% | +14.3% | 0.66 | 0.83 | -43.3% | 62% | 48 |
| 12 | ens_reversal | trail_30_365 | +277% | +13.7% | 0.60 | 1.00 | -58.7% | 51% | 51 |
| 13 | bb_20 | partial_50_trail25 | +269% | +16.2% | 0.83 | 1.17 | -39.0% | 79% | 28 |
| 14 | ens_reversal | trail_25_180 | +266% | +14.1% | 0.65 | 1.24 | -42.1% | 58% | 55 |
| 15 | ens_v51 | breakeven_50_30_180 | +264% | +17.1% | 0.81 | 1.55 | -29.5% | 68% | 44 |
Top 15 by OOS Sharpe
| # | Entry | Exit | OOS Sh | OOS Ret | OOS T | Full Sh | Ret | MaxDD |
|---|---|---|---|---|---|---|---|---|
| 1 | bb_20 | fixed_100_40_365 | 2.39 | +135% | 12 | 1.07 | +462% | -32.5% |
| 2 | bb_20 | fixed_70_30_180 | 2.08 | +74% | 12 | 0.77 | +195% | -25.6% |
| 3 | bb_20 | breakeven_70_30_180 | 1.92 | +67% | 12 | 0.85 | +230% | -24.8% |
| 4 | ens_reversal | fixed_100_40_365 | 1.90 | +196% | 21 | 0.67 | +263% | -62.9% |
| 5 | ens_v51 | breakeven_70_30_180 | 1.81 | +99% | 17 | 0.91 | +346% | -26.7% |
| 6 | bb_20 | fixed_50_30_180 | 1.71 | +55% | 12 | 0.68 | +139% | -26.9% |
| 7 | rsi_divergence | trail_25_180 | 1.67 | +81% | 9 | 0.83 | +148% | -29.2% |
| 8 | macd | fixed_100_40_365 | 1.63 | +136% | 16 | 0.86 | +260% | -58.5% |
| 9 | ens_v51 | fixed_50_50_180 | 1.63 | +92% | 17 | 0.77 | +246% | -32.7% |
| 10 | bb_20 | fixed_50_50_180 | 1.57 | +50% | 12 | 0.78 | +171% | -26.2% |
| 11 | ens_v51 | fixed_70_30_180 | 1.55 | +77% | 18 | 0.88 | +311% | -18.8% |
| 12 | rsi_divergence | chandelier_atr3 | 1.55 | +61% | 9 | 0.76 | +117% | -25.9% |
| 13 | ens_v51 | breakeven_50_30_180 | 1.55 | +86% | 18 | 0.81 | +264% | -29.5% |
| 14 | bb_20 | breakeven_50_30_180 | 1.53 | +48% | 12 | 0.77 | +168% | -26.2% |
| 15 | hammer | fixed_50_50_180 | 1.50 | +60% | 11 | 0.62 | +93% | -33.9% |
Top 15 by Lowest MaxDD (least negative)
| # | Entry | Exit | MaxDD | Sh | Ret | Trades |
|---|---|---|---|---|---|---|
| 1 | hammer | chandelier_atr25 | -17.9% | 0.51 | +59% | 23 |
| 2 | ens_v51 | fixed_70_30_180 | -18.8% | 0.88 | +311% | 44 |
| 3 | bb_pullback_12 | fixed_50_30_180 | -19.0% | 0.53 | +48% | 19 |
| 4 | hammer | trail_20_180 | -19.1% | 0.47 | +54% | 23 |
| 5 | bb_30 | fixed_70_30_180 | -19.1% | 0.75 | +166% | 29 |
| 6 | bb_30 | fixed_50_30_180 | -20.1% | 0.61 | +104% | 29 |
| 7 | hammer | chandelier_atr3 | -20.4% | 0.87 | +166% | 23 |
| 8 | bb_20 | trail_25_180 | -20.5% | 0.56 | +94% | 31 |
| 9 | bb_pullback_12 | chandelier_atr3 | -21.0% | 1.05 | +151% | 19 |
| 10 | macd | fixed_70_30_180 | -21.5% | 0.75 | +153% | 31 |
| 11 | ens_v51 | fixed_50_30_180 | -21.8% | 0.76 | +213% | 44 |
| 12 | bb_pullback_12 | chandelier_atr25 | -21.9% | 0.43 | +35% | 19 |
| 13 | double_bottom | chandelier_atr25 | -21.9% | 0.37 | +52% | 35 |
| 14 | bb_pullback_12 | trail_20_180 | -22.3% | 0.76 | +85% | 19 |
| 15 | obv_div | fixed_30_50_180 | -22.5% | 0.44 | +61% | 21 |
Entry Signals — Aggregate Performance
(평균 across all exits with n_trades_executed >= 5)
| Entry | Mean Sh | Mean OOS Sh | Mean Ret | Mean MaxDD | Mean Trades | N configs |
|---|---|---|---|---|---|---|
| ens_v51 | 0.73 | 1.11 | +232% | -32.5% | 43 | 16 |
| rsi_divergence | 0.72 | 1.33 | +127% | -26.6% | 20 | 16 |
| ens_pullback | 0.68 | 1.11 | +165% | -49.6% | 38 | 16 |
| bb_20 | 0.68 | 1.43 | +163% | -29.4% | 30 | 16 |
| macd | 0.61 | 0.94 | +137% | -36.5% | 32 | 16 |
| hammer | 0.60 | 0.97 | +100% | -33.2% | 23 | 16 |
| ens_reversal | 0.60 | 1.27 | +205% | -40.9% | 51 | 16 |
| capitulation_vol | 0.56 | 1.02 | +143% | -45.5% | 33 | 16 |
| ens_strong | 0.56 | 0.94 | +188% | -37.8% | 55 | 16 |
| bb_pullback_12 | 0.56 | 0.63 | +60% | -24.3% | 19 | 16 |
| bb_30 | 0.56 | 0.70 | +102% | -29.0% | 29 | 16 |
| bb_pullback_08 | 0.53 | 0.88 | +77% | -41.1% | 24 | 16 |
| obv_div | 0.48 | 0.07 | +79% | -32.6% | 21 | 16 |
| double_bottom | 0.47 | 0.67 | +113% | -40.1% | 33 | 16 |
| wyckoff_spring | 0.47 | 0.63 | +85% | -33.9% | 34 | 16 |
Exit Strategies — Aggregate Performance
| Exit | Mean Sh | Mean OOS Sh | Mean Ret | Mean MaxDD | Mean Trades | N configs |
|---|---|---|---|---|---|---|
| fixed_100_40_365 | 0.69 | 1.18 | +211% | -46.5% | 30 | 15 |
| trail_30_365 | 0.64 | 0.93 | +179% | -41.5% | 33 | 15 |
| breakeven_70_30_180 | 0.64 | 1.13 | +150% | -32.8% | 32 | 15 |
| partial_50_trail25 | 0.63 | 0.87 | +184% | -46.2% | 30 | 15 |
| chandelier_atr3 | 0.62 | 0.73 | +132% | -31.4% | 34 | 15 |
| fixed_70_30_180 | 0.62 | 1.05 | +140% | -30.5% | 32 | 15 |
| trail_25_180 | 0.60 | 0.92 | +134% | -34.2% | 34 | 15 |
| fixed_50_30_180 | 0.60 | 0.96 | +125% | -29.4% | 33 | 15 |
| breakeven_50_30_180 | 0.59 | 0.99 | +124% | -32.8% | 32 | 15 |
| fixed_50_50_180 | 0.59 | 0.96 | +125% | -34.0% | 32 | 15 |
| scaled_30_100 | 0.57 | 0.85 | +130% | -43.5% | 28 | 15 |
| partial_30_trail20 | 0.57 | 0.91 | +125% | -39.4% | 32 | 15 |
| fixed_30_50_365 | 0.56 | 0.90 | +105% | -32.6% | 32 | 15 |
| fixed_30_50_180 | 0.53 | 0.92 | +95% | -31.8% | 32 | 15 |
| trail_20_180 | 0.52 | 0.73 | +95% | -33.0% | 34 | 15 |
| chandelier_atr25 | 0.42 | 0.59 | +55% | -28.9% | 34 | 15 |
Conclusions
Best overall (Sharpe)
- bb_20 × fixed_100_40_365
- Total: +462%, CAGR +21.9%, Sharpe 1.07
- OOS Sharpe 2.39, OOS ret +135%
- MaxDD -32.5%, WR 72%
Best OOS generalization
- bb_20 × fixed_100_40_365: OOS Sharpe 2.39, OOS ret +135%
Best risk-adjusted (lowest MaxDD)
- hammer × chandelier_atr25: MaxDD -17.9%, Sharpe 0.51, return +59%
Notable findings
- Bounce+pullback vs plain bounce: pullback mean Sharpe = 0.54 vs plain bounce = 0.62
- Best single-signal entry: bb_20 (Sharpe 1.07)
- Best exit type (by mean Sharpe): fixed_100_40_365
Raw Data
grid_results.csv: Full 240 configs × 22 columnstop20_by_sharpe.csv,top20_by_return.csv,top20_by_oos_sharpe.csv,top20_by_lowest_dd.csvtop_details/{entry}__{exit}/: trades.csv, executed.csv, equity.csv for top 10 by Sharpemeta.json: Grid metadata (config, runtime, counts)