ShinjiAA commited on
Commit
4e0a353
·
1 Parent(s): 6f90636

Add Plan009 execution compression to demo bundle

Browse files
README.md CHANGED
@@ -14,9 +14,9 @@ HF Spaces 向けの推論専用バックエンド。
14
 
15
  UniDream 本体は学習・検証・bundle export のみ。通常運用時、このrepoは UniDream 本体APIへ接続しない。
16
 
17
- 現在の `bundles/current` は Plan009 depth calibrator bundle。推論は raw returns から Plan005 past-only guard を作り、Plan009 の validation-calibrated depth をかけて position を出す。runtime signal は shifted trailing-return feature だけを使う。
18
 
19
- 同梱評価は `plan009_eval_folds0_12.json` / `plan009_summary.json`。fold0-12 の開発評価では `AlphaEx >= +3pt && MaxDDDelta <= -3pt` を `13/13` pass、`Alpha median +14.116pt`、`Alpha worst +4.397pt`、`MaxDD worst -3.026pt`。ただし turnover / cost stress は未解決で、`cost_x2` は `8/13`、`cost_x3` は `4/13` pass。fold0-12 は開発セットであり、pristine holdout ではない。
20
 
21
  ## Structure
22
 
@@ -33,6 +33,7 @@ bundles/current/
33
  model_config.yaml
34
  plan009_summary.json
35
  plan009_eval_folds0_12.json
 
36
  plan009_eval_folds0_12.md
37
  sample_input.npz
38
  sample_output.json
 
14
 
15
  UniDream 本体は学習・検証・bundle export のみ。通常運用時、このrepoは UniDream 本体APIへ接続しない。
16
 
17
+ 現在の `bundles/current` は Plan009 depth calibrator bundle。推論は raw returns から Plan005 past-only guard を作り、Plan009 の validation-calibrated depth と軽い execution compression をかけて position を出す。runtime signal は shifted trailing-return feature だけを使う。
18
 
19
+ 同梱評価は `plan009_eval_compressed_folds0_12.json` / `plan009_summary.json`。fold0-12 の開発評価では `AlphaEx >= +3pt && MaxDDDelta <= -3pt` を `13/13` pass、`Alpha median +16.025pt`、`Alpha worst +4.690pt`、`MaxDD worst -3.026pt`、`TO mean 24.956`。ただし cost stress は未解決で、`cost_x2` は `9/13`、`cost_x3` は `6/13` pass。fold0-12 は開発セットであり、pristine holdout ではない。
20
 
21
  ## Structure
22
 
 
33
  model_config.yaml
34
  plan009_summary.json
35
  plan009_eval_folds0_12.json
36
+ plan009_eval_compressed_folds0_12.json
37
  plan009_eval_folds0_12.md
38
  sample_input.npz
39
  sample_output.json
VERIFICATION.md CHANGED
@@ -9,7 +9,7 @@ Current bundle:
9
  ```text
10
  bundle_type: plan009_depth_calibrator
11
  base: Plan004 development base + Plan005 past-only guard concept
12
- runtime: Plan009 depth-calibrated past-only guard
13
  position range: 0.00 - 1.00
14
  ```
15
 
@@ -17,12 +17,12 @@ Development folds:
17
 
18
  ```text
19
  fold0-12 cost_x1: 13/13 pass for AlphaEx >= +3pt and MaxDDDelta <= -3pt
20
- Alpha median: +14.116pt
21
- Alpha worst: +4.397pt
22
  MaxDD worst: -3.026pt
23
- TO mean: 26.293
24
- cost_x2 pass: 8/13
25
- cost_x3 pass: 4/13
26
  sample current signal: underweight
27
  ```
28
 
 
9
  ```text
10
  bundle_type: plan009_depth_calibrator
11
  base: Plan004 development base + Plan005 past-only guard concept
12
+ runtime: Plan009 depth-calibrated past-only guard + execution compression
13
  position range: 0.00 - 1.00
14
  ```
15
 
 
17
 
18
  ```text
19
  fold0-12 cost_x1: 13/13 pass for AlphaEx >= +3pt and MaxDDDelta <= -3pt
20
+ Alpha median: +16.025pt
21
+ Alpha worst: +4.690pt
22
  MaxDD worst: -3.026pt
23
+ TO mean: 24.956
24
+ cost_x2 pass: 9/13
25
+ cost_x3 pass: 6/13
26
  sample current signal: underweight
27
  ```
28
 
backend/runtime.py CHANGED
@@ -580,6 +580,13 @@ def _apply_plan009_depth_calibrator(
580
  max_position = float(calibrator_config.get("max_position", bench))
581
  positions = bench - depth * (bench - guard)
582
  positions = np.clip(positions, min_position, max_position)
 
 
 
 
 
 
 
583
  overlay = positions - bench
584
  changes = np.flatnonzero(np.abs(np.diff(positions, prepend=positions[0] if len(positions) else bench)) > 1e-12)
585
  diag = {
@@ -593,11 +600,75 @@ def _apply_plan009_depth_calibrator(
593
  "plan009_active_rate": float(np.mean(np.abs(overlay) > 0.05)) if len(overlay) else 0.0,
594
  "plan009_turnover": float(np.abs(np.diff(overlay)).sum()) if len(overlay) > 1 else 0.0,
595
  "plan009_last_changes": [int(x) for x in changes[-10:]],
 
596
  **mode_diag,
597
  }
598
  return positions.astype(np.float32), diag
599
 
600
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
601
  def _split_live_window(
602
  features: np.ndarray,
603
  returns: np.ndarray,
 
580
  max_position = float(calibrator_config.get("max_position", bench))
581
  positions = bench - depth * (bench - guard)
582
  positions = np.clip(positions, min_position, max_position)
583
+ compression = dict(calibrator_config.get("execution_compression", {}))
584
+ if bool(compression.get("enabled", False)):
585
+ positions = _plan009_apply_execution_compression(
586
+ positions,
587
+ compression=compression,
588
+ benchmark_position=bench,
589
+ )
590
  overlay = positions - bench
591
  changes = np.flatnonzero(np.abs(np.diff(positions, prepend=positions[0] if len(positions) else bench)) > 1e-12)
592
  diag = {
 
600
  "plan009_active_rate": float(np.mean(np.abs(overlay) > 0.05)) if len(overlay) else 0.0,
601
  "plan009_turnover": float(np.abs(np.diff(overlay)).sum()) if len(overlay) > 1 else 0.0,
602
  "plan009_last_changes": [int(x) for x in changes[-10:]],
603
+ "plan009_execution_compression": compression,
604
  **mode_diag,
605
  }
606
  return positions.astype(np.float32), diag
607
 
608
 
609
+ def _plan009_merge_short_benchmark_gaps(
610
+ positions: np.ndarray,
611
+ *,
612
+ gap_bars: int,
613
+ active_eps: float,
614
+ fill: str,
615
+ benchmark_position: float,
616
+ ) -> np.ndarray:
617
+ if int(gap_bars) <= 0:
618
+ return np.asarray(positions, dtype=np.float64).copy()
619
+ out = np.asarray(positions, dtype=np.float64).copy()
620
+ active = out < float(benchmark_position) - float(active_eps)
621
+ n = len(out)
622
+ i = 0
623
+ while i < n:
624
+ if bool(active[i]):
625
+ i += 1
626
+ continue
627
+ start = i
628
+ while i < n and not bool(active[i]):
629
+ i += 1
630
+ end = i
631
+ if start > 0 and end < n and end - start <= int(gap_bars):
632
+ if fill == "prev":
633
+ value = out[start - 1]
634
+ elif fill == "min":
635
+ value = min(float(out[start - 1]), float(out[end]))
636
+ else:
637
+ value = out[end]
638
+ out[start:end] = value
639
+ return out
640
+
641
+
642
+ def _plan009_min_delta_filter(positions: np.ndarray, *, min_delta: float) -> np.ndarray:
643
+ if float(min_delta) <= 0.0 or len(positions) == 0:
644
+ return np.asarray(positions, dtype=np.float64).copy()
645
+ x = np.asarray(positions, dtype=np.float64)
646
+ out = np.empty_like(x)
647
+ prev = float(x[0])
648
+ out[0] = prev
649
+ for i in range(1, len(x)):
650
+ if abs(float(x[i]) - prev) >= float(min_delta):
651
+ prev = float(x[i])
652
+ out[i] = prev
653
+ return out
654
+
655
+
656
+ def _plan009_apply_execution_compression(
657
+ positions: np.ndarray,
658
+ *,
659
+ compression: dict[str, Any],
660
+ benchmark_position: float,
661
+ ) -> np.ndarray:
662
+ out = _plan009_merge_short_benchmark_gaps(
663
+ positions,
664
+ gap_bars=int(compression.get("gap_bars", 0)),
665
+ active_eps=float(compression.get("active_eps", 0.05)),
666
+ fill=str(compression.get("fill", "next")),
667
+ benchmark_position=float(benchmark_position),
668
+ )
669
+ return _plan009_min_delta_filter(out, min_delta=float(compression.get("min_delta", 0.0)))
670
+
671
+
672
  def _split_live_window(
673
  features: np.ndarray,
674
  returns: np.ndarray,
bundles/current/manifest.json CHANGED
@@ -2,7 +2,7 @@
2
  "bundle_version": 9,
3
  "bundle_type": "plan009_depth_calibrator",
4
  "created_by": "unidream.cli.export_plan009_depth_calibrator_bundle",
5
- "created_at": "2026-05-28T01:28:08.807169+00:00",
6
  "run": {
7
  "seed": 7,
8
  "status": "dev_candidate",
@@ -75,6 +75,7 @@
75
  "plan009_summary": "plan009_summary.json",
76
  "plan009_eval_json": "plan009_eval_folds0_12.json",
77
  "plan009_eval_md": "plan009_eval_folds0_12.md",
 
78
  "config": "model_config.yaml"
79
  },
80
  "plan009_depth_calibrator": {
@@ -89,6 +90,13 @@
89
  "deep_bear_recovery": 0.94
90
  },
91
  "min_position": 0.0,
92
- "max_position": 1.0
 
 
 
 
 
 
 
93
  }
94
  }
 
2
  "bundle_version": 9,
3
  "bundle_type": "plan009_depth_calibrator",
4
  "created_by": "unidream.cli.export_plan009_depth_calibrator_bundle",
5
+ "created_at": "2026-05-28T01:44:00.569330+00:00",
6
  "run": {
7
  "seed": 7,
8
  "status": "dev_candidate",
 
75
  "plan009_summary": "plan009_summary.json",
76
  "plan009_eval_json": "plan009_eval_folds0_12.json",
77
  "plan009_eval_md": "plan009_eval_folds0_12.md",
78
+ "plan009_compressed_eval_json": "plan009_eval_compressed_folds0_12.json",
79
  "config": "model_config.yaml"
80
  },
81
  "plan009_depth_calibrator": {
 
90
  "deep_bear_recovery": 0.94
91
  },
92
  "min_position": 0.0,
93
+ "max_position": 1.0,
94
+ "execution_compression": {
95
+ "enabled": true,
96
+ "gap_bars": 16,
97
+ "fill": "next",
98
+ "active_eps": 0.05,
99
+ "min_delta": 0.1
100
+ }
101
  }
102
  }
bundles/current/plan009_eval_compressed_folds0_12.json ADDED
@@ -0,0 +1,1104 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "experiment": "plan009_gap_merge_full_check",
3
+ "params": {
4
+ "gap": 16,
5
+ "fill": "next",
6
+ "eps": 0.05,
7
+ "min_delta": 0.1
8
+ },
9
+ "rows": [
10
+ {
11
+ "fold": 0,
12
+ "group": "gap16_next_mindelta010",
13
+ "mode": "pre_halving_rebound",
14
+ "stress": {
15
+ "cost_x1": {
16
+ "alpha_excess_pt": 23.516145397309394,
17
+ "sharpe_delta": 1.0975236311730616,
18
+ "maxdd_delta_pt": -6.320720803863001,
19
+ "period_win_rate": 1.0,
20
+ "bar_win_rate": 0.35820039022150807,
21
+ "turnover": 23.25,
22
+ "long_rate": 0.0,
23
+ "short_rate": 0.7228279582233444,
24
+ "flat_rate": 0.27717204177665555,
25
+ "mean_position": -0.3361150005738551,
26
+ "n_trades": 51
27
+ },
28
+ "cost_x1_5": {
29
+ "alpha_excess_pt": 15.924397643723909,
30
+ "sharpe_delta": 1.0312117640899823,
31
+ "maxdd_delta_pt": -6.309358924509138,
32
+ "period_win_rate": 1.0,
33
+ "bar_win_rate": 0.35820039022150807,
34
+ "turnover": 23.25,
35
+ "long_rate": 0.0,
36
+ "short_rate": 0.7228279582233444,
37
+ "flat_rate": 0.27717204177665555,
38
+ "mean_position": -0.3361150005738551,
39
+ "n_trades": 51
40
+ },
41
+ "cost_x2": {
42
+ "alpha_excess_pt": 8.537460916820905,
43
+ "sharpe_delta": 0.964848019013067,
44
+ "maxdd_delta_pt": -6.2979984979630625,
45
+ "period_win_rate": 0.6666666666666666,
46
+ "bar_win_rate": 0.35808561918971654,
47
+ "turnover": 23.25,
48
+ "long_rate": 0.0,
49
+ "short_rate": 0.7228279582233444,
50
+ "flat_rate": 0.27717204177665555,
51
+ "mean_position": -0.3361150005738551,
52
+ "n_trades": 51
53
+ },
54
+ "cost_x3": {
55
+ "alpha_excess_pt": -5.643144251072663,
56
+ "sharpe_delta": 0.8319834125674508,
57
+ "maxdd_delta_pt": -6.275282002551181,
58
+ "period_win_rate": 0.3333333333333333,
59
+ "bar_win_rate": 0.35808561918971654,
60
+ "turnover": 23.25,
61
+ "long_rate": 0.0,
62
+ "short_rate": 0.7228279582233444,
63
+ "flat_rate": 0.27717204177665555,
64
+ "mean_position": -0.3361150005738551,
65
+ "n_trades": 51
66
+ },
67
+ "slippage_x2": {
68
+ "alpha_excess_pt": 20.731470732973367,
69
+ "sharpe_delta": 1.0734165190763318,
70
+ "maxdd_delta_pt": -6.316589043265501,
71
+ "period_win_rate": 1.0,
72
+ "bar_win_rate": 0.35820039022150807,
73
+ "turnover": 23.25,
74
+ "long_rate": 0.0,
75
+ "short_rate": 0.7228279582233444,
76
+ "flat_rate": 0.27717204177665555,
77
+ "mean_position": -0.3361150005738551,
78
+ "n_trades": 51
79
+ }
80
+ },
81
+ "diag": {
82
+ "depth": 0.62,
83
+ "start_mom3072": 0.2708200477472129,
84
+ "start_mom6144": -0.3850100761729641,
85
+ "start_dd12288": -0.40127797419772065,
86
+ "start_mom24576": -0.4314499669081306
87
+ }
88
+ },
89
+ {
90
+ "fold": 1,
91
+ "group": "gap16_next_mindelta010",
92
+ "mode": "core_pair",
93
+ "stress": {
94
+ "cost_x1": {
95
+ "alpha_excess_pt": 20.884934031622436,
96
+ "sharpe_delta": 0.5519937468783283,
97
+ "maxdd_delta_pt": -5.6399317073186825,
98
+ "period_win_rate": 0.75,
99
+ "bar_win_rate": 0.37359900373599003,
100
+ "turnover": 9.789999713897704,
101
+ "long_rate": 0.0,
102
+ "short_rate": 0.7525189629797351,
103
+ "flat_rate": 0.24748103702026492,
104
+ "mean_position": -0.16315407093203135,
105
+ "n_trades": 40
106
+ },
107
+ "cost_x1_5": {
108
+ "alpha_excess_pt": 18.112867487824857,
109
+ "sharpe_delta": 0.5255649129909485,
110
+ "maxdd_delta_pt": -5.538736300430921,
111
+ "period_win_rate": 0.5,
112
+ "bar_win_rate": 0.37359900373599003,
113
+ "turnover": 9.789999713897704,
114
+ "long_rate": 0.0,
115
+ "short_rate": 0.7525189629797351,
116
+ "flat_rate": 0.24748103702026492,
117
+ "mean_position": -0.16315407093203135,
118
+ "n_trades": 40
119
+ },
120
+ "cost_x2": {
121
+ "alpha_excess_pt": 15.375550698381657,
122
+ "sharpe_delta": 0.49912624909284276,
123
+ "maxdd_delta_pt": -5.437660903327618,
124
+ "period_win_rate": 0.5,
125
+ "bar_win_rate": 0.3730329446394204,
126
+ "turnover": 9.789999713897704,
127
+ "long_rate": 0.0,
128
+ "short_rate": 0.7525189629797351,
129
+ "flat_rate": 0.24748103702026492,
130
+ "mean_position": -0.16315407093203135,
131
+ "n_trades": 40
132
+ },
133
+ "cost_x3": {
134
+ "alpha_excess_pt": 10.003554940870263,
135
+ "sharpe_delta": 0.4462216523478495,
136
+ "maxdd_delta_pt": -5.235869569354581,
137
+ "period_win_rate": 0.5,
138
+ "bar_win_rate": 0.3728065210007925,
139
+ "turnover": 9.789999713897704,
140
+ "long_rate": 0.0,
141
+ "short_rate": 0.7525189629797351,
142
+ "flat_rate": 0.24748103702026492,
143
+ "mean_position": -0.16315407093203135,
144
+ "n_trades": 40
145
+ },
146
+ "slippage_x2": {
147
+ "alpha_excess_pt": 19.872863507106597,
148
+ "sharpe_delta": 0.5423844342011199,
149
+ "maxdd_delta_pt": -5.603119483122662,
150
+ "period_win_rate": 0.5,
151
+ "bar_win_rate": 0.37359900373599003,
152
+ "turnover": 9.789999713897704,
153
+ "long_rate": 0.0,
154
+ "short_rate": 0.7525189629797351,
155
+ "flat_rate": 0.24748103702026492,
156
+ "mean_position": -0.16315407093203135,
157
+ "n_trades": 40
158
+ }
159
+ },
160
+ "diag": {
161
+ "depth": 0.94,
162
+ "start_mom3072": -0.03771563944859674,
163
+ "start_mom6144": 0.016570821886034648,
164
+ "start_dd12288": -0.12497906247920512,
165
+ "start_mom24576": -0.0234477573388108
166
+ }
167
+ },
168
+ {
169
+ "fold": 2,
170
+ "group": "gap16_next_mindelta010",
171
+ "mode": "core_pair",
172
+ "stress": {
173
+ "cost_x1": {
174
+ "alpha_excess_pt": 1472.7454973950016,
175
+ "sharpe_delta": 1.0435468056140857,
176
+ "maxdd_delta_pt": -8.106438988325227,
177
+ "period_win_rate": 0.75,
178
+ "bar_win_rate": 0.11352026336701102,
179
+ "turnover": 10.38999985694885,
180
+ "long_rate": 0.0,
181
+ "short_rate": 0.22533772278351685,
182
+ "flat_rate": 0.7746622772164832,
183
+ "mean_position": -0.07301651671249704,
184
+ "n_trades": 39
185
+ },
186
+ "cost_x1_5": {
187
+ "alpha_excess_pt": 1328.31377636482,
188
+ "sharpe_delta": 1.0288503593685911,
189
+ "maxdd_delta_pt": -8.09775302788103,
190
+ "period_win_rate": 0.75,
191
+ "bar_win_rate": 0.11329322284027699,
192
+ "turnover": 10.38999985694885,
193
+ "long_rate": 0.0,
194
+ "short_rate": 0.22533772278351685,
195
+ "flat_rate": 0.7746622772164832,
196
+ "mean_position": -0.07301651671249704,
197
+ "n_trades": 39
198
+ },
199
+ "cost_x2": {
200
+ "alpha_excess_pt": 1185.808378722821,
201
+ "sharpe_delta": 1.0141439007413169,
202
+ "maxdd_delta_pt": -8.08906799298566,
203
+ "period_win_rate": 0.75,
204
+ "bar_win_rate": 0.11329322284027699,
205
+ "turnover": 10.38999985694885,
206
+ "long_rate": 0.0,
207
+ "short_rate": 0.22533772278351685,
208
+ "flat_rate": 0.7746622772164832,
209
+ "mean_position": -0.07301651671249704,
210
+ "n_trades": 39
211
+ },
212
+ "cost_x3": {
213
+ "alpha_excess_pt": 906.4808405822077,
214
+ "sharpe_delta": 0.984701319003034,
215
+ "maxdd_delta_pt": -8.071700699447023,
216
+ "period_win_rate": 0.75,
217
+ "bar_win_rate": 0.11329322284027699,
218
+ "turnover": 10.38999985694885,
219
+ "long_rate": 0.0,
220
+ "short_rate": 0.22533772278351685,
221
+ "flat_rate": 0.7746622772164832,
222
+ "mean_position": -0.07301651671249704,
223
+ "n_trades": 39
224
+ },
225
+ "slippage_x2": {
226
+ "alpha_excess_pt": 1420.0004638777373,
227
+ "sharpe_delta": 1.0382038076687676,
228
+ "maxdd_delta_pt": -8.103280350160075,
229
+ "period_win_rate": 0.75,
230
+ "bar_win_rate": 0.11352026336701102,
231
+ "turnover": 10.38999985694885,
232
+ "long_rate": 0.0,
233
+ "short_rate": 0.22533772278351685,
234
+ "flat_rate": 0.7746622772164832,
235
+ "mean_position": -0.07301651671249704,
236
+ "n_trades": 39
237
+ }
238
+ },
239
+ "diag": {
240
+ "depth": 0.94,
241
+ "start_mom3072": 0.06545702734855288,
242
+ "start_mom6144": -0.013428533879092144,
243
+ "start_dd12288": -0.09094402344722508,
244
+ "start_mom24576": 0.18990908096501274
245
+ }
246
+ },
247
+ {
248
+ "fold": 3,
249
+ "group": "gap16_next_mindelta010",
250
+ "mode": "core_pair",
251
+ "stress": {
252
+ "cost_x1": {
253
+ "alpha_excess_pt": 14.362134534313942,
254
+ "sharpe_delta": 0.5019941030072719,
255
+ "maxdd_delta_pt": -3.027455195574105,
256
+ "period_win_rate": 0.6666666666666666,
257
+ "bar_win_rate": 0.22733596104799444,
258
+ "turnover": 23.07999985694885,
259
+ "long_rate": 0.0,
260
+ "short_rate": 0.4546719220959889,
261
+ "flat_rate": 0.5453280779040112,
262
+ "mean_position": -0.16323324821400526,
263
+ "n_trades": 79
264
+ },
265
+ "cost_x1_5": {
266
+ "alpha_excess_pt": -3.9218609695640616,
267
+ "sharpe_delta": 0.46874375711496263,
268
+ "maxdd_delta_pt": -2.9528136982816617,
269
+ "period_win_rate": 0.6666666666666666,
270
+ "bar_win_rate": 0.22710410387201485,
271
+ "turnover": 23.07999985694885,
272
+ "long_rate": 0.0,
273
+ "short_rate": 0.4546719220959889,
274
+ "flat_rate": 0.5453280779040112,
275
+ "mean_position": -0.16323324821400526,
276
+ "n_trades": 79
277
+ },
278
+ "cost_x2": {
279
+ "alpha_excess_pt": -21.70526375556916,
280
+ "sharpe_delta": 0.4354871376917835,
281
+ "maxdd_delta_pt": -2.878244521536308,
282
+ "period_win_rate": 0.6666666666666666,
283
+ "bar_win_rate": 0.22687224669603523,
284
+ "turnover": 23.07999985694885,
285
+ "long_rate": 0.0,
286
+ "short_rate": 0.4546719220959889,
287
+ "flat_rate": 0.5453280779040112,
288
+ "mean_position": -0.16323324821400526,
289
+ "n_trades": 79
290
+ },
291
+ "cost_x3": {
292
+ "alpha_excess_pt": -55.822666944850766,
293
+ "sharpe_delta": 0.3689567685082147,
294
+ "maxdd_delta_pt": -2.7293228494676747,
295
+ "period_win_rate": 0.3333333333333333,
296
+ "bar_win_rate": 0.22664038952005564,
297
+ "turnover": 23.07999985694885,
298
+ "long_rate": 0.0,
299
+ "short_rate": 0.4546719220959889,
300
+ "flat_rate": 0.5453280779040112,
301
+ "mean_position": -0.16323324821400526,
302
+ "n_trades": 79
303
+ },
304
+ "slippage_x2": {
305
+ "alpha_excess_pt": 7.654642553529101,
306
+ "sharpe_delta": 0.48990382066183047,
307
+ "maxdd_delta_pt": -3.000304460830633,
308
+ "period_win_rate": 0.6666666666666666,
309
+ "bar_win_rate": 0.22722003246000463,
310
+ "turnover": 23.07999985694885,
311
+ "long_rate": 0.0,
312
+ "short_rate": 0.4546719220959889,
313
+ "flat_rate": 0.5453280779040112,
314
+ "mean_position": -0.16323324821400526,
315
+ "n_trades": 79
316
+ }
317
+ },
318
+ "diag": {
319
+ "depth": 0.94,
320
+ "start_mom3072": 0.6640736092859136,
321
+ "start_mom6144": 0.8299695337176323,
322
+ "start_dd12288": -0.11074668477571192,
323
+ "start_mom24576": 1.429290169076133
324
+ }
325
+ },
326
+ {
327
+ "fold": 4,
328
+ "group": "gap16_next_mindelta010",
329
+ "mode": "core_pair",
330
+ "stress": {
331
+ "cost_x1": {
332
+ "alpha_excess_pt": 7.833104554715287,
333
+ "sharpe_delta": -0.09354796915616781,
334
+ "maxdd_delta_pt": -8.738651050269326,
335
+ "period_win_rate": 1.0,
336
+ "bar_win_rate": 0.4504535537949248,
337
+ "turnover": 37.032500166893,
338
+ "long_rate": 0.0,
339
+ "short_rate": 0.8894247330347916,
340
+ "flat_rate": 0.1105752669652084,
341
+ "mean_position": -0.30823228662631885,
342
+ "n_trades": 127
343
+ },
344
+ "cost_x1_5": {
345
+ "alpha_excess_pt": 7.218284107143824,
346
+ "sharpe_delta": -0.14752846338190295,
347
+ "maxdd_delta_pt": -8.314085648811819,
348
+ "period_win_rate": 1.0,
349
+ "bar_win_rate": 0.45010908255827303,
350
+ "turnover": 37.032500166893,
351
+ "long_rate": 0.0,
352
+ "short_rate": 0.8894247330347916,
353
+ "flat_rate": 0.1105752669652084,
354
+ "mean_position": -0.30823228662631885,
355
+ "n_trades": 127
356
+ },
357
+ "cost_x2": {
358
+ "alpha_excess_pt": 6.629121899805113,
359
+ "sharpe_delta": -0.2014836708169403,
360
+ "maxdd_delta_pt": -7.8927658401195755,
361
+ "period_win_rate": 1.0,
362
+ "bar_win_rate": 0.45010908255827303,
363
+ "turnover": 37.032500166893,
364
+ "long_rate": 0.0,
365
+ "short_rate": 0.8894247330347916,
366
+ "flat_rate": 0.1105752669652084,
367
+ "mean_position": -0.30823228662631885,
368
+ "n_trades": 127
369
+ },
370
+ "cost_x3": {
371
+ "alpha_excess_pt": 5.523585100209449,
372
+ "sharpe_delta": -0.30931393041381705,
373
+ "maxdd_delta_pt": -7.059763946884673,
374
+ "period_win_rate": 1.0,
375
+ "bar_win_rate": 0.4496497875760707,
376
+ "turnover": 37.032500166893,
377
+ "long_rate": 0.0,
378
+ "short_rate": 0.8894247330347916,
379
+ "flat_rate": 0.1105752669652084,
380
+ "mean_position": -0.30823228662631885,
381
+ "n_trades": 127
382
+ },
383
+ "slippage_x2": {
384
+ "alpha_excess_pt": 7.606496141632713,
385
+ "sharpe_delta": -0.11318009764285897,
386
+ "maxdd_delta_pt": -8.583886534663938,
387
+ "period_win_rate": 1.0,
388
+ "bar_win_rate": 0.45022390630382364,
389
+ "turnover": 37.032500166893,
390
+ "long_rate": 0.0,
391
+ "short_rate": 0.8894247330347916,
392
+ "flat_rate": 0.1105752669652084,
393
+ "mean_position": -0.30823228662631885,
394
+ "n_trades": 127
395
+ }
396
+ },
397
+ "diag": {
398
+ "depth": 0.94,
399
+ "start_mom3072": 0.07039216253204383,
400
+ "start_mom6144": 0.27189078575839987,
401
+ "start_dd12288": -0.06083711843864914,
402
+ "start_mom24576": 1.6967967824300045
403
+ }
404
+ },
405
+ {
406
+ "fold": 5,
407
+ "group": "gap16_next_mindelta010",
408
+ "mode": "deep_bear_recovery",
409
+ "stress": {
410
+ "cost_x1": {
411
+ "alpha_excess_pt": 6.7154458520573,
412
+ "sharpe_delta": 0.6726105017841837,
413
+ "maxdd_delta_pt": -12.398344109945706,
414
+ "period_win_rate": 0.5,
415
+ "bar_win_rate": 0.10650618825933916,
416
+ "turnover": 54.91999997615814,
417
+ "long_rate": 0.0,
418
+ "short_rate": 0.21619166572044965,
419
+ "flat_rate": 0.7838083342795503,
420
+ "mean_position": -0.1991870102677183,
421
+ "n_trades": 62
422
+ },
423
+ "cost_x1_5": {
424
+ "alpha_excess_pt": -71.37459191610861,
425
+ "sharpe_delta": 0.5681213700113106,
426
+ "maxdd_delta_pt": -12.398344110286457,
427
+ "period_win_rate": 0.5,
428
+ "bar_win_rate": 0.10639264221641875,
429
+ "turnover": 54.91999997615814,
430
+ "long_rate": 0.0,
431
+ "short_rate": 0.21619166572044965,
432
+ "flat_rate": 0.7838083342795503,
433
+ "mean_position": -0.1991870102677183,
434
+ "n_trades": 62
435
+ },
436
+ "cost_x2": {
437
+ "alpha_excess_pt": -144.74505889177038,
438
+ "sharpe_delta": 0.4634713197006195,
439
+ "maxdd_delta_pt": -12.39834411062872,
440
+ "period_win_rate": 0.5,
441
+ "bar_win_rate": 0.10605200408765754,
442
+ "turnover": 54.91999997615814,
443
+ "long_rate": 0.0,
444
+ "short_rate": 0.21619166572044965,
445
+ "flat_rate": 0.7838083342795503,
446
+ "mean_position": -0.1991870102677183,
447
+ "n_trades": 62
448
+ },
449
+ "cost_x3": {
450
+ "alpha_excess_pt": -278.43144097581137,
451
+ "sharpe_delta": 0.25374814592928274,
452
+ "maxdd_delta_pt": -12.398344111317833,
453
+ "period_win_rate": 0.25,
454
+ "bar_win_rate": 0.10571136595889634,
455
+ "turnover": 54.91999997615814,
456
+ "long_rate": 0.0,
457
+ "short_rate": 0.21619166572044965,
458
+ "flat_rate": 0.7838083342795503,
459
+ "mean_position": -0.1991870102677183,
460
+ "n_trades": 62
461
+ },
462
+ "slippage_x2": {
463
+ "alpha_excess_pt": -22.245403969052724,
464
+ "sharpe_delta": 0.6346340114983096,
465
+ "maxdd_delta_pt": -12.398344110069429,
466
+ "period_win_rate": 0.5,
467
+ "bar_win_rate": 0.10639264221641875,
468
+ "turnover": 54.91999997615814,
469
+ "long_rate": 0.0,
470
+ "short_rate": 0.21619166572044965,
471
+ "flat_rate": 0.7838083342795503,
472
+ "mean_position": -0.1991870102677183,
473
+ "n_trades": 62
474
+ }
475
+ },
476
+ "diag": {
477
+ "depth": 0.94,
478
+ "start_mom3072": -0.24815632193137982,
479
+ "start_mom6144": -0.45926797481973836,
480
+ "start_dd12288": -0.7102755046042153,
481
+ "start_mom24576": 0.8316506945842315
482
+ }
483
+ },
484
+ {
485
+ "fold": 6,
486
+ "group": "gap16_next_mindelta010",
487
+ "mode": "core_pair",
488
+ "stress": {
489
+ "cost_x1": {
490
+ "alpha_excess_pt": 14.468602173821,
491
+ "sharpe_delta": 0.42515136351029015,
492
+ "maxdd_delta_pt": -9.216053122305562,
493
+ "period_win_rate": 0.75,
494
+ "bar_win_rate": 0.37065549643382767,
495
+ "turnover": 16.350000476837153,
496
+ "long_rate": 0.0,
497
+ "short_rate": 0.7230838899581117,
498
+ "flat_rate": 0.2769161100418884,
499
+ "mean_position": -0.14417751038882898,
500
+ "n_trades": 99
501
+ },
502
+ "cost_x1_5": {
503
+ "alpha_excess_pt": 13.76059276202386,
504
+ "sharpe_delta": 0.3928384717624569,
505
+ "maxdd_delta_pt": -8.972903505359724,
506
+ "period_win_rate": 0.75,
507
+ "bar_win_rate": 0.37031586097588587,
508
+ "turnover": 16.350000476837153,
509
+ "long_rate": 0.0,
510
+ "short_rate": 0.7230838899581117,
511
+ "flat_rate": 0.2769161100418884,
512
+ "mean_position": -0.14417751038882898,
513
+ "n_trades": 99
514
+ },
515
+ "cost_x2": {
516
+ "alpha_excess_pt": 13.066223031854108,
517
+ "sharpe_delta": 0.360529693381312,
518
+ "maxdd_delta_pt": -8.73063258967095,
519
+ "period_win_rate": 0.75,
520
+ "bar_win_rate": 0.3698630136986301,
521
+ "turnover": 16.350000476837153,
522
+ "long_rate": 0.0,
523
+ "short_rate": 0.7230838899581117,
524
+ "flat_rate": 0.2769161100418884,
525
+ "mean_position": -0.14417751038882898,
526
+ "n_trades": 99
527
+ },
528
+ "cost_x3": {
529
+ "alpha_excess_pt": 11.717391076372651,
530
+ "sharpe_delta": 0.29592585936731775,
531
+ "maxdd_delta_pt": -8.248714171634159,
532
+ "period_win_rate": 0.75,
533
+ "bar_win_rate": 0.36941016642137436,
534
+ "turnover": 16.350000476837153,
535
+ "long_rate": 0.0,
536
+ "short_rate": 0.7230838899581117,
537
+ "flat_rate": 0.2769161100418884,
538
+ "mean_position": -0.14417751038882898,
539
+ "n_trades": 99
540
+ },
541
+ "slippage_x2": {
542
+ "alpha_excess_pt": 14.209549827541657,
543
+ "sharpe_delta": 0.41340076695404493,
544
+ "maxdd_delta_pt": -9.127533210981436,
545
+ "period_win_rate": 0.75,
546
+ "bar_win_rate": 0.3705422846145138,
547
+ "turnover": 16.350000476837153,
548
+ "long_rate": 0.0,
549
+ "short_rate": 0.7230838899581117,
550
+ "flat_rate": 0.2769161100418884,
551
+ "mean_position": -0.14417751038882898,
552
+ "n_trades": 99
553
+ }
554
+ },
555
+ "diag": {
556
+ "depth": 0.52,
557
+ "start_mom3072": 0.28621095719423306,
558
+ "start_mom6144": 0.2803398085743085,
559
+ "start_dd12288": -0.023886556572505713,
560
+ "start_mom24576": 0.5874367347831355
561
+ }
562
+ },
563
+ {
564
+ "fold": 7,
565
+ "group": "gap16_next_mindelta010",
566
+ "mode": "core_pair",
567
+ "stress": {
568
+ "cost_x1": {
569
+ "alpha_excess_pt": 17.545388226449777,
570
+ "sharpe_delta": 0.2964986335823048,
571
+ "maxdd_delta_pt": -3.026341310516614,
572
+ "period_win_rate": 0.6666666666666666,
573
+ "bar_win_rate": 0.42460363383867605,
574
+ "turnover": 19.529999999999998,
575
+ "long_rate": 0.0,
576
+ "short_rate": 0.849554449716468,
577
+ "flat_rate": 0.150445550283532,
578
+ "mean_position": -0.17383462562203453,
579
+ "n_trades": 103
580
+ },
581
+ "cost_x1_5": {
582
+ "alpha_excess_pt": 15.487575942371157,
583
+ "sharpe_delta": 0.2557315071607502,
584
+ "maxdd_delta_pt": -2.9495139411310016,
585
+ "period_win_rate": 0.6666666666666666,
586
+ "bar_win_rate": 0.4244879064923041,
587
+ "turnover": 19.529999999999998,
588
+ "long_rate": 0.0,
589
+ "short_rate": 0.849554449716468,
590
+ "flat_rate": 0.150445550283532,
591
+ "mean_position": -0.17383462562203453,
592
+ "n_trades": 103
593
+ },
594
+ "cost_x2": {
595
+ "alpha_excess_pt": 13.477846545942551,
596
+ "sharpe_delta": 0.21496351187240423,
597
+ "maxdd_delta_pt": -2.8727618544718228,
598
+ "period_win_rate": 0.6666666666666666,
599
+ "bar_win_rate": 0.42379354241407247,
600
+ "turnover": 19.529999999999998,
601
+ "long_rate": 0.0,
602
+ "short_rate": 0.849554449716468,
603
+ "flat_rate": 0.150445550283532,
604
+ "mean_position": -0.17383462562203453,
605
+ "n_trades": 103
606
+ },
607
+ "cost_x3": {
608
+ "alpha_excess_pt": 9.598331741644106,
609
+ "sharpe_delta": 0.1334273908630082,
610
+ "maxdd_delta_pt": -2.7194832343286652,
611
+ "period_win_rate": 0.6666666666666666,
612
+ "bar_win_rate": 0.4232149056822127,
613
+ "turnover": 19.529999999999998,
614
+ "long_rate": 0.0,
615
+ "short_rate": 0.849554449716468,
616
+ "flat_rate": 0.150445550283532,
617
+ "mean_position": -0.17383462562203453,
618
+ "n_trades": 103
619
+ },
620
+ "slippage_x2": {
621
+ "alpha_excess_pt": 16.791460211787058,
622
+ "sharpe_delta": 0.281674363568976,
623
+ "maxdd_delta_pt": -2.9983953702287542,
624
+ "period_win_rate": 0.6666666666666666,
625
+ "bar_win_rate": 0.42460363383867605,
626
+ "turnover": 19.529999999999998,
627
+ "long_rate": 0.0,
628
+ "short_rate": 0.849554449716468,
629
+ "flat_rate": 0.150445550283532,
630
+ "mean_position": -0.17383462562203453,
631
+ "n_trades": 103
632
+ }
633
+ },
634
+ "diag": {
635
+ "depth": 0.62,
636
+ "start_mom3072": -0.10524913308081163,
637
+ "start_mom6144": -0.3903745203272473,
638
+ "start_dd12288": -0.46928030540191323,
639
+ "start_mom24576": -0.23707721495760858
640
+ }
641
+ },
642
+ {
643
+ "fold": 8,
644
+ "group": "gap16_next_mindelta010",
645
+ "mode": "core_pair",
646
+ "stress": {
647
+ "cost_x1": {
648
+ "alpha_excess_pt": 4.689936445727671,
649
+ "sharpe_delta": -0.5961110375144298,
650
+ "maxdd_delta_pt": -7.950459552070599,
651
+ "period_win_rate": 1.0,
652
+ "bar_win_rate": 0.434130708481172,
653
+ "turnover": 43.59249999999999,
654
+ "long_rate": 0.0,
655
+ "short_rate": 0.8766166876502232,
656
+ "flat_rate": 0.12338331234977681,
657
+ "mean_position": -0.3098815382854527,
658
+ "n_trades": 144
659
+ },
660
+ "cost_x1_5": {
661
+ "alpha_excess_pt": 4.1390617573222706,
662
+ "sharpe_delta": -0.6846676969150041,
663
+ "maxdd_delta_pt": -7.578862017142606,
664
+ "period_win_rate": 1.0,
665
+ "bar_win_rate": 0.43344397390408607,
666
+ "turnover": 43.59249999999999,
667
+ "long_rate": 0.0,
668
+ "short_rate": 0.8766166876502232,
669
+ "flat_rate": 0.12338331234977681,
670
+ "mean_position": -0.3098815382854527,
671
+ "n_trades": 144
672
+ },
673
+ "cost_x2": {
674
+ "alpha_excess_pt": 3.6148486009227376,
675
+ "sharpe_delta": -0.7731573736830186,
676
+ "maxdd_delta_pt": -7.210063582125869,
677
+ "period_win_rate": 1.0,
678
+ "bar_win_rate": 0.4331006066155431,
679
+ "turnover": 43.59249999999999,
680
+ "long_rate": 0.0,
681
+ "short_rate": 0.8766166876502232,
682
+ "flat_rate": 0.12338331234977681,
683
+ "mean_position": -0.3098815382854527,
684
+ "n_trades": 144
685
+ },
686
+ "cost_x3": {
687
+ "alpha_excess_pt": 2.641374344254388,
688
+ "sharpe_delta": -0.9499200915148993,
689
+ "maxdd_delta_pt": -6.480779832517891,
690
+ "period_win_rate": 1.0,
691
+ "bar_win_rate": 0.43218496051276184,
692
+ "turnover": 43.59249999999999,
693
+ "long_rate": 0.0,
694
+ "short_rate": 0.8766166876502232,
695
+ "flat_rate": 0.12338331234977681,
696
+ "mean_position": -0.3098815382854527,
697
+ "n_trades": 144
698
+ },
699
+ "slippage_x2": {
700
+ "alpha_excess_pt": 4.486450591235647,
701
+ "sharpe_delta": -0.6283209610427636,
702
+ "maxdd_delta_pt": -7.815007975636634,
703
+ "period_win_rate": 1.0,
704
+ "bar_win_rate": 0.4337873411926291,
705
+ "turnover": 43.59249999999999,
706
+ "long_rate": 0.0,
707
+ "short_rate": 0.8766166876502232,
708
+ "flat_rate": 0.12338331234977681,
709
+ "mean_position": -0.3098815382854527,
710
+ "n_trades": 144
711
+ }
712
+ },
713
+ "diag": {
714
+ "depth": 0.94,
715
+ "start_mom3072": 0.04673352887896498,
716
+ "start_mom6144": -0.07910791067240575,
717
+ "start_dd12288": -0.25041515886394583,
718
+ "start_mom24576": 0.050754017373632276
719
+ }
720
+ },
721
+ {
722
+ "fold": 9,
723
+ "group": "gap16_next_mindelta010",
724
+ "mode": "core_pair",
725
+ "stress": {
726
+ "cost_x1": {
727
+ "alpha_excess_pt": 16.025127599545787,
728
+ "sharpe_delta": 0.27060051795619405,
729
+ "maxdd_delta_pt": -8.976719921568277,
730
+ "period_win_rate": 0.5,
731
+ "bar_win_rate": 0.4229593569568663,
732
+ "turnover": 29.727499999999996,
733
+ "long_rate": 0.0,
734
+ "short_rate": 0.8511264576021736,
735
+ "flat_rate": 0.14887354239782633,
736
+ "mean_position": -0.25756085135288115,
737
+ "n_trades": 106
738
+ },
739
+ "cost_x1_5": {
740
+ "alpha_excess_pt": 13.272642605438145,
741
+ "sharpe_delta": 0.19647936515855952,
742
+ "maxdd_delta_pt": -8.562436169112672,
743
+ "period_win_rate": 0.5,
744
+ "bar_win_rate": 0.4220536624023548,
745
+ "turnover": 29.727499999999996,
746
+ "long_rate": 0.0,
747
+ "short_rate": 0.8511264576021736,
748
+ "flat_rate": 0.14887354239782633,
749
+ "mean_position": -0.25756085135288115,
750
+ "n_trades": 106
751
+ },
752
+ "cost_x2": {
753
+ "alpha_excess_pt": 10.611623565845774,
754
+ "sharpe_delta": 0.12236757928728415,
755
+ "maxdd_delta_pt": -8.114063591724138,
756
+ "period_win_rate": 0.5,
757
+ "bar_win_rate": 0.421714026944413,
758
+ "turnover": 29.727499999999996,
759
+ "long_rate": 0.0,
760
+ "short_rate": 0.8511264576021736,
761
+ "flat_rate": 0.14887354239782633,
762
+ "mean_position": -0.25756085135288115,
763
+ "n_trades": 106
764
+ },
765
+ "cost_x3": {
766
+ "alpha_excess_pt": 5.552234523366561,
767
+ "sharpe_delta": -0.02581476496523294,
768
+ "maxdd_delta_pt": -7.2247166915252485,
769
+ "period_win_rate": 0.5,
770
+ "bar_win_rate": 0.4214876033057851,
771
+ "turnover": 29.727499999999996,
772
+ "long_rate": 0.0,
773
+ "short_rate": 0.8511264576021736,
774
+ "flat_rate": 0.14887354239782633,
775
+ "mean_position": -0.25756085135288115,
776
+ "n_trades": 106
777
+ },
778
+ "slippage_x2": {
779
+ "alpha_excess_pt": 15.013450167734977,
780
+ "sharpe_delta": 0.24364649494070878,
781
+ "maxdd_delta_pt": -8.84133371336231,
782
+ "period_win_rate": 0.5,
783
+ "bar_win_rate": 0.42261972149892446,
784
+ "turnover": 29.727499999999996,
785
+ "long_rate": 0.0,
786
+ "short_rate": 0.8511264576021736,
787
+ "flat_rate": 0.14887354239782633,
788
+ "mean_position": -0.25756085135288115,
789
+ "n_trades": 106
790
+ }
791
+ },
792
+ "diag": {
793
+ "depth": 0.94,
794
+ "start_mom3072": -0.05835479456778081,
795
+ "start_mom6144": -0.3887150381342721,
796
+ "start_dd12288": -0.8384522925802178,
797
+ "start_mom24576": -1.1115220014199159
798
+ }
799
+ },
800
+ {
801
+ "fold": 10,
802
+ "group": "gap16_next_mindelta010",
803
+ "mode": "core_pair",
804
+ "stress": {
805
+ "cost_x1": {
806
+ "alpha_excess_pt": 23.77572418909084,
807
+ "sharpe_delta": 0.677509620678477,
808
+ "maxdd_delta_pt": -9.964810179959615,
809
+ "period_win_rate": 0.5,
810
+ "bar_win_rate": 0.4033737122155553,
811
+ "turnover": 22.56,
812
+ "long_rate": 0.0,
813
+ "short_rate": 0.822031020038492,
814
+ "flat_rate": 0.17796897996150798,
815
+ "mean_position": -0.224469601724988,
816
+ "n_trades": 84
817
+ },
818
+ "cost_x1_5": {
819
+ "alpha_excess_pt": 19.820600372167817,
820
+ "sharpe_delta": 0.608364139979961,
821
+ "maxdd_delta_pt": -9.752306276589358,
822
+ "period_win_rate": 0.5,
823
+ "bar_win_rate": 0.4030340767576135,
824
+ "turnover": 22.56,
825
+ "long_rate": 0.0,
826
+ "short_rate": 0.822031020038492,
827
+ "flat_rate": 0.17796897996150798,
828
+ "mean_position": -0.224469601724988,
829
+ "n_trades": 84
830
+ },
831
+ "cost_x2": {
832
+ "alpha_excess_pt": 15.968507882344717,
833
+ "sharpe_delta": 0.5392022238373099,
834
+ "maxdd_delta_pt": -9.540347197693455,
835
+ "period_win_rate": 0.25,
836
+ "bar_win_rate": 0.40258122948035774,
837
+ "turnover": 22.56,
838
+ "long_rate": 0.0,
839
+ "short_rate": 0.822031020038492,
840
+ "flat_rate": 0.17796897996150798,
841
+ "mean_position": -0.224469601724988,
842
+ "n_trades": 84
843
+ },
844
+ "cost_x3": {
845
+ "alpha_excess_pt": 8.563111638580923,
846
+ "sharpe_delta": 0.4008432181877575,
847
+ "maxdd_delta_pt": -9.118057929550947,
848
+ "period_win_rate": 0.25,
849
+ "bar_win_rate": 0.4020151703837881,
850
+ "turnover": 22.56,
851
+ "long_rate": 0.0,
852
+ "short_rate": 0.822031020038492,
853
+ "flat_rate": 0.17796897996150798,
854
+ "mean_position": -0.224469601724988,
855
+ "n_trades": 84
856
+ },
857
+ "slippage_x2": {
858
+ "alpha_excess_pt": 22.32540998653898,
859
+ "sharpe_delta": 0.6523679340344333,
860
+ "maxdd_delta_pt": -9.887472907432654,
861
+ "period_win_rate": 0.5,
862
+ "bar_win_rate": 0.40314728857692744,
863
+ "turnover": 22.56,
864
+ "long_rate": 0.0,
865
+ "short_rate": 0.822031020038492,
866
+ "flat_rate": 0.17796897996150798,
867
+ "mean_position": -0.224469601724988,
868
+ "n_trades": 84
869
+ }
870
+ },
871
+ "diag": {
872
+ "depth": 0.94,
873
+ "start_mom3072": -0.0599987222499303,
874
+ "start_mom6144": -0.24803500591058114,
875
+ "start_dd12288": -0.43742664368518713,
876
+ "start_mom24576": -0.6990856271938966
877
+ }
878
+ },
879
+ {
880
+ "fold": 11,
881
+ "group": "gap16_next_mindelta010",
882
+ "mode": "core_pair",
883
+ "stress": {
884
+ "cost_x1": {
885
+ "alpha_excess_pt": 23.276416775130393,
886
+ "sharpe_delta": 0.3496712338609833,
887
+ "maxdd_delta_pt": -5.7222068633454635,
888
+ "period_win_rate": 0.3333333333333333,
889
+ "bar_win_rate": 0.164967562557924,
890
+ "turnover": 17.049999868869783,
891
+ "long_rate": 0.0,
892
+ "short_rate": 0.32344763670064874,
893
+ "flat_rate": 0.6765523632993512,
894
+ "mean_position": -0.10917226585444748,
895
+ "n_trades": 63
896
+ },
897
+ "cost_x1_5": {
898
+ "alpha_excess_pt": 14.449994061088223,
899
+ "sharpe_delta": 0.3091734702845166,
900
+ "maxdd_delta_pt": -5.53593593186984,
901
+ "period_win_rate": 0.3333333333333333,
902
+ "bar_win_rate": 0.16485171455050973,
903
+ "turnover": 17.049999868869783,
904
+ "long_rate": 0.0,
905
+ "short_rate": 0.32344763670064874,
906
+ "flat_rate": 0.6765523632993512,
907
+ "mean_position": -0.10917226585444748,
908
+ "n_trades": 63
909
+ },
910
+ "cost_x2": {
911
+ "alpha_excess_pt": 5.807042544450258,
912
+ "sharpe_delta": 0.26865629954531256,
913
+ "maxdd_delta_pt": -5.350079457128157,
914
+ "period_win_rate": 0.3333333333333333,
915
+ "bar_win_rate": 0.16438832252085264,
916
+ "turnover": 17.049999868869783,
917
+ "long_rate": 0.0,
918
+ "short_rate": 0.32344763670064874,
919
+ "flat_rate": 0.6765523632993512,
920
+ "mean_position": -0.10917226585444748,
921
+ "n_trades": 63
922
+ },
923
+ "cost_x3": {
924
+ "alpha_excess_pt": -10.942895699769384,
925
+ "sharpe_delta": 0.1875677210250002,
926
+ "maxdd_delta_pt": -4.979606191198693,
927
+ "period_win_rate": 0.3333333333333333,
928
+ "bar_win_rate": 0.163693234476367,
929
+ "turnover": 17.049999868869783,
930
+ "long_rate": 0.0,
931
+ "short_rate": 0.32344763670064874,
932
+ "flat_rate": 0.6765523632993512,
933
+ "mean_position": -0.10917226585444748,
934
+ "n_trades": 63
935
+ },
936
+ "slippage_x2": {
937
+ "alpha_excess_pt": 20.04534832241829,
938
+ "sharpe_delta": 0.3349470826239842,
939
+ "maxdd_delta_pt": -5.654423967216457,
940
+ "period_win_rate": 0.3333333333333333,
941
+ "bar_win_rate": 0.164967562557924,
942
+ "turnover": 17.049999868869783,
943
+ "long_rate": 0.0,
944
+ "short_rate": 0.32344763670064874,
945
+ "flat_rate": 0.6765523632993512,
946
+ "mean_position": -0.10917226585444748,
947
+ "n_trades": 63
948
+ }
949
+ },
950
+ "diag": {
951
+ "depth": 0.9,
952
+ "start_mom3072": 0.17377478319681616,
953
+ "start_mom6144": 0.22205891768756353,
954
+ "start_dd12288": -0.08713445811748322,
955
+ "start_mom24576": -0.6333514127020761
956
+ }
957
+ },
958
+ {
959
+ "fold": 12,
960
+ "group": "gap16_next_mindelta010",
961
+ "mode": "core_pair",
962
+ "stress": {
963
+ "cost_x1": {
964
+ "alpha_excess_pt": 8.09681334835961,
965
+ "sharpe_delta": 0.22843741417715382,
966
+ "maxdd_delta_pt": -3.3017450566774356,
967
+ "period_win_rate": 0.6666666666666666,
968
+ "bar_win_rate": 0.21861050703902943,
969
+ "turnover": 17.154999999999998,
970
+ "long_rate": 0.0,
971
+ "short_rate": 0.4364198237381252,
972
+ "flat_rate": 0.5635801762618747,
973
+ "mean_position": -0.14112910610049215,
974
+ "n_trades": 60
975
+ },
976
+ "cost_x1_5": {
977
+ "alpha_excess_pt": 6.051331162003892,
978
+ "sharpe_delta": 0.17280958753013484,
979
+ "maxdd_delta_pt": -2.9213703098211585,
980
+ "period_win_rate": 0.6666666666666666,
981
+ "bar_win_rate": 0.2181526839876388,
982
+ "turnover": 17.154999999999998,
983
+ "long_rate": 0.0,
984
+ "short_rate": 0.4364198237381252,
985
+ "flat_rate": 0.5635801762618747,
986
+ "mean_position": -0.14112910610049215,
987
+ "n_trades": 60
988
+ },
989
+ "cost_x2": {
990
+ "alpha_excess_pt": 4.048476275936852,
991
+ "sharpe_delta": 0.11718289479115294,
992
+ "maxdd_delta_pt": -2.542700161454603,
993
+ "period_win_rate": 0.6666666666666666,
994
+ "bar_win_rate": 0.21746594941055283,
995
+ "turnover": 17.154999999999998,
996
+ "long_rate": 0.0,
997
+ "short_rate": 0.4364198237381252,
998
+ "flat_rate": 0.5635801762618747,
999
+ "mean_position": -0.14112910610049215,
1000
+ "n_trades": 60
1001
+ },
1002
+ "cost_x3": {
1003
+ "alpha_excess_pt": 0.16727587895217777,
1004
+ "sharpe_delta": 0.005944087203010925,
1005
+ "maxdd_delta_pt": -1.7904431387042563,
1006
+ "period_win_rate": 0.3333333333333333,
1007
+ "bar_win_rate": 0.21735149364770517,
1008
+ "turnover": 17.154999999999998,
1009
+ "long_rate": 0.0,
1010
+ "short_rate": 0.4364198237381252,
1011
+ "flat_rate": 0.5635801762618747,
1012
+ "mean_position": -0.14112910610049215,
1013
+ "n_trades": 60
1014
+ },
1015
+ "slippage_x2": {
1016
+ "alpha_excess_pt": 7.348015375402217,
1017
+ "sharpe_delta": 0.20820915877724017,
1018
+ "maxdd_delta_pt": -3.163229257115141,
1019
+ "period_win_rate": 0.6666666666666666,
1020
+ "bar_win_rate": 0.21849605127618177,
1021
+ "turnover": 17.154999999999998,
1022
+ "long_rate": 0.0,
1023
+ "short_rate": 0.4364198237381252,
1024
+ "flat_rate": 0.5635801762618747,
1025
+ "mean_position": -0.14112910610049215,
1026
+ "n_trades": 60
1027
+ }
1028
+ },
1029
+ "diag": {
1030
+ "depth": 0.94,
1031
+ "start_mom3072": 0.21591917883293932,
1032
+ "start_mom6144": 0.3299337763530418,
1033
+ "start_dd12288": -0.02311495604666236,
1034
+ "start_mom24576": 0.2530476768859822
1035
+ }
1036
+ }
1037
+ ],
1038
+ "aggregate": {
1039
+ "gap16_next_mindelta010": {
1040
+ "folds": 13,
1041
+ "pass_alpha_ge3_dd_le_neg3": 13,
1042
+ "pass_alpha_ge10_dd_le_neg5": 7,
1043
+ "alpha_mean": 127.22579004024193,
1044
+ "alpha_median": 16.025127599545787,
1045
+ "alpha_worst": 4.689936445727671,
1046
+ "maxdd_mean": -7.106913681672277,
1047
+ "maxdd_worst": -3.026341310516614,
1048
+ "turnover_mean": 24.955961532042576,
1049
+ "turnover_max": 54.91999997615814
1050
+ }
1051
+ },
1052
+ "stress_aggregate": {
1053
+ "cost_x1": {
1054
+ "gap16_next_mindelta010": {
1055
+ "folds": 13,
1056
+ "pass_alpha_ge3_dd_le_neg3": 13,
1057
+ "alpha_median": 16.025127599545787,
1058
+ "alpha_worst": 4.689936445727671,
1059
+ "maxdd_worst": -3.026341310516614,
1060
+ "turnover_max": 54.91999997615814
1061
+ }
1062
+ },
1063
+ "cost_x1_5": {
1064
+ "gap16_next_mindelta010": {
1065
+ "folds": 13,
1066
+ "pass_alpha_ge3_dd_le_neg3": 9,
1067
+ "alpha_median": 13.76059276202386,
1068
+ "alpha_worst": -71.37459191610861,
1069
+ "maxdd_worst": -2.9213703098211585,
1070
+ "turnover_max": 54.91999997615814
1071
+ }
1072
+ },
1073
+ "cost_x2": {
1074
+ "gap16_next_mindelta010": {
1075
+ "folds": 13,
1076
+ "pass_alpha_ge3_dd_le_neg3": 9,
1077
+ "alpha_median": 8.537460916820905,
1078
+ "alpha_worst": -144.74505889177038,
1079
+ "maxdd_worst": -2.542700161454603,
1080
+ "turnover_max": 54.91999997615814
1081
+ }
1082
+ },
1083
+ "cost_x3": {
1084
+ "gap16_next_mindelta010": {
1085
+ "folds": 13,
1086
+ "pass_alpha_ge3_dd_le_neg3": 6,
1087
+ "alpha_median": 5.523585100209449,
1088
+ "alpha_worst": -278.43144097581137,
1089
+ "maxdd_worst": -1.7904431387042563,
1090
+ "turnover_max": 54.91999997615814
1091
+ }
1092
+ },
1093
+ "slippage_x2": {
1094
+ "gap16_next_mindelta010": {
1095
+ "folds": 13,
1096
+ "pass_alpha_ge3_dd_le_neg3": 11,
1097
+ "alpha_median": 15.013450167734977,
1098
+ "alpha_worst": -22.245403969052724,
1099
+ "maxdd_worst": -2.9983953702287542,
1100
+ "turnover_max": 54.91999997615814
1101
+ }
1102
+ }
1103
+ }
1104
+ }
bundles/current/plan009_summary.json CHANGED
@@ -1,12 +1,20 @@
1
  {
2
  "experiment": "plan009_depth_calibrator_bundle",
3
  "source_eval": "docs_local/20260528_plan009_depth_calibrator_f0_12_m48_x2_cap094.json",
 
4
  "depth_by_mode": {
5
  "core_pair": 0.94,
6
  "pre_halving_rebound": 0.62,
7
  "deep_bear_recovery": 0.94
8
  },
9
  "default_depth": 0.94,
 
 
 
 
 
 
 
10
  "dev_aggregate": {
11
  "plan004_base": {
12
  "folds": 13,
@@ -125,6 +133,72 @@
125
  }
126
  }
127
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
128
  "sample": {
129
  "last_position": 0.7649999856948853,
130
  "n_positions": 5761,
@@ -137,8 +211,15 @@
137
  "plan009_current_bars": 5761,
138
  "plan009_guard_mean": 0.7624978302378059,
139
  "plan009_underweight_rate": 0.8245096337441417,
140
- "plan009_turnover": 14.804999999999998,
141
- "plan009_active_rate": 0.8245096337441417,
 
 
 
 
 
 
 
142
  "start_mom3072": 0.03829596413332581,
143
  "start_mom6144": -0.30790065968812996,
144
  "start_dd12288": -0.3525618724316786,
 
1
  {
2
  "experiment": "plan009_depth_calibrator_bundle",
3
  "source_eval": "docs_local/20260528_plan009_depth_calibrator_f0_12_m48_x2_cap094.json",
4
+ "source_compressed_eval": "docs_local/20260528_plan009_gap16_next_mindelta010_full.json",
5
  "depth_by_mode": {
6
  "core_pair": 0.94,
7
  "pre_halving_rebound": 0.62,
8
  "deep_bear_recovery": 0.94
9
  },
10
  "default_depth": 0.94,
11
+ "execution_compression": {
12
+ "enabled": true,
13
+ "gap_bars": 16,
14
+ "fill": "next",
15
+ "active_eps": 0.05,
16
+ "min_delta": 0.1
17
+ },
18
  "dev_aggregate": {
19
  "plan004_base": {
20
  "folds": 13,
 
133
  }
134
  }
135
  },
136
+ "compressed_aggregate": {
137
+ "gap16_next_mindelta010": {
138
+ "folds": 13,
139
+ "pass_alpha_ge3_dd_le_neg3": 13,
140
+ "pass_alpha_ge10_dd_le_neg5": 7,
141
+ "alpha_mean": 127.22579004024193,
142
+ "alpha_median": 16.025127599545787,
143
+ "alpha_worst": 4.689936445727671,
144
+ "maxdd_mean": -7.106913681672277,
145
+ "maxdd_worst": -3.026341310516614,
146
+ "turnover_mean": 24.955961532042576,
147
+ "turnover_max": 54.91999997615814
148
+ }
149
+ },
150
+ "compressed_stress_aggregate": {
151
+ "cost_x1": {
152
+ "gap16_next_mindelta010": {
153
+ "folds": 13,
154
+ "pass_alpha_ge3_dd_le_neg3": 13,
155
+ "alpha_median": 16.025127599545787,
156
+ "alpha_worst": 4.689936445727671,
157
+ "maxdd_worst": -3.026341310516614,
158
+ "turnover_max": 54.91999997615814
159
+ }
160
+ },
161
+ "cost_x1_5": {
162
+ "gap16_next_mindelta010": {
163
+ "folds": 13,
164
+ "pass_alpha_ge3_dd_le_neg3": 9,
165
+ "alpha_median": 13.76059276202386,
166
+ "alpha_worst": -71.37459191610861,
167
+ "maxdd_worst": -2.9213703098211585,
168
+ "turnover_max": 54.91999997615814
169
+ }
170
+ },
171
+ "cost_x2": {
172
+ "gap16_next_mindelta010": {
173
+ "folds": 13,
174
+ "pass_alpha_ge3_dd_le_neg3": 9,
175
+ "alpha_median": 8.537460916820905,
176
+ "alpha_worst": -144.74505889177038,
177
+ "maxdd_worst": -2.542700161454603,
178
+ "turnover_max": 54.91999997615814
179
+ }
180
+ },
181
+ "cost_x3": {
182
+ "gap16_next_mindelta010": {
183
+ "folds": 13,
184
+ "pass_alpha_ge3_dd_le_neg3": 6,
185
+ "alpha_median": 5.523585100209449,
186
+ "alpha_worst": -278.43144097581137,
187
+ "maxdd_worst": -1.7904431387042563,
188
+ "turnover_max": 54.91999997615814
189
+ }
190
+ },
191
+ "slippage_x2": {
192
+ "gap16_next_mindelta010": {
193
+ "folds": 13,
194
+ "pass_alpha_ge3_dd_le_neg3": 11,
195
+ "alpha_median": 15.013450167734977,
196
+ "alpha_worst": -22.245403969052724,
197
+ "maxdd_worst": -2.9983953702287542,
198
+ "turnover_max": 54.91999997615814
199
+ }
200
+ }
201
+ },
202
  "sample": {
203
  "last_position": 0.7649999856948853,
204
  "n_positions": 5761,
 
211
  "plan009_current_bars": 5761,
212
  "plan009_guard_mean": 0.7624978302378059,
213
  "plan009_underweight_rate": 0.8245096337441417,
214
+ "plan009_turnover": 14.334999999999997,
215
+ "plan009_active_rate": 0.8248567956951918,
216
+ "plan009_execution_compression": {
217
+ "enabled": true,
218
+ "gap_bars": 16,
219
+ "fill": "next",
220
+ "active_eps": 0.05,
221
+ "min_delta": 0.1
222
+ },
223
  "start_mom3072": 0.03829596413332581,
224
  "start_mom6144": -0.30790065968812996,
225
  "start_dd12288": -0.3525618724316786,
bundles/current/sample_input.npz CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:a74a128b3ea1578667252b07d643deaf8d8e3a1848f92d6e319b579602702d07
3
- size 688448
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:27c0670a3c3b655faeb3c96088a15d247a3e78b996a44c7f6bf82be2e7a394d2
3
+ size 688446
bundles/current/sample_output.json CHANGED
@@ -10,8 +10,15 @@
10
  "plan009_current_bars": 5761,
11
  "plan009_guard_mean": 0.7624978302378059,
12
  "plan009_underweight_rate": 0.8245096337441417,
13
- "plan009_turnover": 14.804999999999998,
14
- "plan009_active_rate": 0.8245096337441417,
 
 
 
 
 
 
 
15
  "start_mom3072": 0.03829596413332581,
16
  "start_mom6144": -0.30790065968812996,
17
  "start_dd12288": -0.3525618724316786,
 
10
  "plan009_current_bars": 5761,
11
  "plan009_guard_mean": 0.7624978302378059,
12
  "plan009_underweight_rate": 0.8245096337441417,
13
+ "plan009_turnover": 14.334999999999997,
14
+ "plan009_active_rate": 0.8248567956951918,
15
+ "plan009_execution_compression": {
16
+ "enabled": true,
17
+ "gap_bars": 16,
18
+ "fill": "next",
19
+ "active_eps": 0.05,
20
+ "min_delta": 0.1
21
+ },
22
  "start_mom3072": 0.03829596413332581,
23
  "start_mom6144": -0.30790065968812996,
24
  "start_dd12288": -0.3525618724316786,