Feature Iteration Run #1000: zz_sylvain
Status: completed | Started: 2026-07-26 09:18:48 | Ended: 2026-07-26 09:30:14
⭐ Best Accepted Iteration
Iteration 14: k_momentum_pct_change - i_macd(k_close, 12, 26, 9)
baseline PF: 1.947 → modified PF: 2.449 | Cohen's d: 0.254 | p-value: 0.191
📊 Iterations
| Iter | Y Label | Model | Warm | Proxy | Parent FS | Feature | Baseline PF | Modified PF | Scalar Score | Result |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | C8 |
gradient_boosting |
— | — | #7 | k_loop_iter_1_7a129b | 1.947 | 0.775 | -3.6248 | ❌ REJECT |
| 2 | C8 |
gradient_boosting |
— | — | #7 | k_iter2_k_high_pct_change_price_position_dist_to_high | 0.000 | 0.000 | 0.0000 | ❌ REJECT |
| 3 | C8 |
gradient_boosting |
— | — | #7 | k_loop_iter_3_011c57 | 1.947 | 1.085 | -0.4789 | ❌ REJECT |
| 4 | C8 |
gradient_boosting |
— | — | #7 | k_iter4_k_high_pct_change | 0.000 | 0.000 | 0.0000 | ❌ REJECT |
| 5 | C8 |
gradient_boosting |
— | — | #7 | k_iter5_k_momentum_pct_chang_atr_norm | 0.000 | 0.000 | 0.0000 | ❌ REJECT |
| 6 | C8 |
gradient_boosting |
— | — | #7 | k_iter6_abs_k_volume_rolling_mean | 0.000 | 0.000 | 0.0000 | ❌ REJECT |
| 7 | C8 |
gradient_boosting |
— | — | #7 | k_iter7_price_position_atr_norm | 0.000 | 0.000 | 0.0000 | ❌ REJECT |
| 8 | C8 |
gradient_boosting |
— | — | #7 | k_iter8_pct_change_atr_norm_vol_ratio | 0.000 | 0.000 | 0.0000 | ❌ REJECT |
| 9 | C8 |
gradient_boosting |
— | — | #7 | k_iter9_atr_norm | 0.000 | 0.000 | 0.0000 | ❌ REJECT |
| 10 | C8 |
gradient_boosting |
— | — | #7 | k_loop_iter_10_d1f1b3 | 1.947 | 1.895 | -0.1089 | ❌ REJECT |
| 11 | C8 |
gradient_boosting |
— | — | #7 | k_iter11_pct_change_atr_norm_price_position | 0.000 | 0.000 | 0.0000 | ❌ REJECT |
| 12 | C8 |
gradient_boosting |
— | — | #7 | k_iter12_pct_change_vol_ratio | 0.000 | 0.000 | 0.0000 | ❌ REJECT |
| 13 | C8 |
gradient_boosting |
— | — | #7 | k_loop_iter_13_4e41bb | 1.947 | 1.085 | -0.4789 | ❌ REJECT |
| 14 | C8 |
gradient_boosting |
— | — | #7 | k_loop_iter_14_aabd65 | 1.947 | 2.449 | 1.0740 | ✅ ACCEPT |
| 15 | C8 |
gradient_boosting |
— | — | #1292 | k_iter15_i_rsi_k_close_price_position | 0.000 | 0.000 | 0.0000 | ❌ REJECT |
📄 Report Markdown
# AUTOLOOP: zz_sylvain (15 iterations)
> **Phase**: Y4.7 Option B (DSL → Python code → FeatureSet candidate)
> **Target indicator**: zz_sylvain
> **Base feature_set_id**: 1292
> **Claim**: (default) Propose a new k_* feature that improves risk-adjusted returns
> **Objective mode**: scalarize
> **Metrics**: ['profit_factor', 'sharpe_ratio', 'win_rate', 'max_drawdown', 'test_accuracy']
> **Total duration**: 685.34s
> **Total accepted**: 1
> **Total rejected**: 14
## Iterations 詳情
### Iteration 1
- DSL: `(k_momentum_pct_change - o_div_amplitude_12) / (1 + atr_norm)` (feature=k_loop_iter_1_7a129b)
- DSL valid: True
- FeatureSet candidate id: 1288
- baseline PF: 1.947 → modified PF: 0.775
- t_stat: 0.000, p_value: 0.278, cohens_d: 0.577
- scalar_score: -3.6248
- accepted: False, reason: normalized_score -0.4195 <= 0.0, sharpe_delta -26.7167 < -0.3, hypothesis test not confirmed, constraints: ['sharpe_ratio >= 1.0: got -7.5544']
**Metrics summary:**
- profit_factor: baseline=1.947, modified=0.775, diff=-1.172
- sharpe_ratio: baseline=19.162, modified=-7.554, diff=-26.717
- win_rate: baseline=0.600, modified=0.424, diff=-0.176
- max_drawdown: baseline=0.056, modified=0.131, diff=0.075
- test_accuracy: baseline=0.992, modified=0.992, diff=-0.001
### Iteration 2
- DSL: `k_high.pct_change(12) * (1 - price_position) * (1 - dist_to_high)` (feature=k_iter2_k_high_pct_change_price_position_dist_to_high)
- DSL valid: False
- FeatureSet candidate id: None
- baseline PF: 0.000 → modified PF: 0.000
- t_stat: 0.000, p_value: 1.000, cohens_d: 0.000
- scalar_score: 0.0000
- accepted: False, reason: quality_gate: C8 leakage: ['dist_to_high']
### Iteration 3
- DSL: `o_div_amplitude_48 / (1 + atr_norm)` (feature=k_loop_iter_3_011c57)
- DSL valid: True
- FeatureSet candidate id: 1289
- baseline PF: 1.947 → modified PF: 1.085
- t_stat: 0.000, p_value: 0.463, cohens_d: 0.243
- scalar_score: -0.4789
- accepted: False, reason: normalized_score -0.2581 <= 0.0, sharpe_delta -16.8215 < -0.3, hypothesis test not confirmed
**Metrics summary:**
- profit_factor: baseline=1.947, modified=1.085, diff=-0.862
- sharpe_ratio: baseline=19.162, modified=2.341, diff=-16.821
- win_rate: baseline=0.600, modified=0.500, diff=-0.100
- max_drawdown: baseline=0.056, modified=0.187, diff=0.131
- test_accuracy: baseline=0.992, modified=0.992, diff=-0.000
### Iteration 4
- DSL: `k_high.pct_change(12)` (feature=k_iter4_k_high_pct_change)
- DSL valid: False
- FeatureSet candidate id: None
- baseline PF: 0.000 → modified PF: 0.000
- t_stat: 0.000, p_value: 1.000, cohens_d: 0.000
- scalar_score: 0.0000
- accepted: False, reason: quality_gate: canonical duplicate: k_high.pct_change
### Iteration 5
- DSL: `k_momentum_pct_change - atr_norm` (feature=k_iter5_k_momentum_pct_chang_atr_norm)
- DSL valid: False
- FeatureSet candidate id: None
- baseline PF: 0.000 → modified PF: 0.000
- t_stat: 0.000, p_value: 1.000, cohens_d: 0.000
- scalar_score: 0.0000
- accepted: False, reason: quality_gate: constant feature (variance < 1e-12)
### Iteration 6
- DSL: `abs(o_div_binary_12) * k_volume.rolling.mean / (1 + atr_norm)` (feature=k_iter6_abs_k_volume_rolling_mean)
- DSL valid: False
- FeatureSet candidate id: None
- baseline PF: 0.000 → modified PF: 0.000
- t_stat: 0.000, p_value: 1.000, cohens_d: 0.000
- scalar_score: 0.0000
- accepted: False, reason: safe_eval DSL: 變數未定義: abs
### Iteration 7
- DSL: `o_div_amplitude_12 * (1 - price_position) / (1 + atr_norm)` (feature=k_iter7_price_position_atr_norm)
- DSL valid: False
- FeatureSet candidate id: None
- baseline PF: 0.000 → modified PF: 0.000
- t_stat: 0.000, p_value: 1.000, cohens_d: 0.000
- scalar_score: 0.0000
- accepted: False, reason: quality_gate: canonical duplicate: o_div_amplitude_12 * (1 - price_position) / (1 + atr_norm)
### Iteration 8
- DSL: `obv_rebased.pct_change(12) / (1 + atr_norm) * vol_ratio` (feature=k_iter8_pct_change_atr_norm_vol_ratio)
- DSL valid: False
- FeatureSet candidate id: None
- baseline PF: 0.000 → modified PF: 0.000
- t_stat: 0.000, p_value: 1.000, cohens_d: 0.000
- scalar_score: 0.0000
- accepted: False, reason: safe_eval DSL produced inf values; likely division by zero
### Iteration 9
- DSL: `o_div_amplitude_48 / (1 + atr_norm)` (feature=k_iter9_atr_norm)
- DSL valid: False
- FeatureSet candidate id: None
- baseline PF: 0.000 → modified PF: 0.000
- t_stat: 0.000, p_value: 1.000, cohens_d: 0.000
- scalar_score: 0.0000
- accepted: False, reason: quality_gate: canonical duplicate: o_div_amplitude_48 / (1 + atr_norm)
### Iteration 10
- DSL: `i_macd(k_close, 12, 26, 9) / (1 + atr_norm)` (feature=k_loop_iter_10_d1f1b3)
- DSL valid: True
- FeatureSet candidate id: 1290
- baseline PF: 1.947 → modified PF: 1.895
- t_stat: 0.000, p_value: 0.337, cohens_d: 0.330
- scalar_score: -0.1089
- accepted: False, reason: normalized_score -0.0230 <= 0.0, sharpe_delta -0.9574 < -0.3, hypothesis test not confirmed
**Metrics summary:**
- profit_factor: baseline=1.947, modified=1.895, diff=-0.053
- sharpe_ratio: baseline=19.162, modified=18.205, diff=-0.957
- win_rate: baseline=0.600, modified=0.562, diff=-0.037
- max_drawdown: baseline=0.056, modified=0.056, diff=0.000
- test_accuracy: baseline=0.992, modified=0.992, diff=-0.000
### Iteration 11
- DSL: `obv_rebased.pct_change(12) / (1 + atr_norm) * (1 - price_position)` (feature=k_iter11_pct_change_atr_norm_price_position)
- DSL valid: False
- FeatureSet candidate id: None
- baseline PF: 0.000 → modified PF: 0.000
- t_stat: 0.000, p_value: 1.000, cohens_d: 0.000
- scalar_score: 0.0000
- accepted: False, reason: safe_eval DSL produced inf values; likely division by zero
### Iteration 12
- DSL: `obv_rebased.pct_change(12) * vol_ratio` (feature=k_iter12_pct_change_vol_ratio)
- DSL valid: False
- FeatureSet candidate id: None
- baseline PF: 0.000 → modified PF: 0.000
- t_stat: 0.000, p_value: 1.000, cohens_d: 0.000
- scalar_score: 0.0000
- accepted: False, reason: safe_eval DSL produced inf values; likely division by zero
### Iteration 13
- DSL: `o_div_amplitude_12 / (1 + atr_norm)` (feature=k_loop_iter_13_4e41bb)
- DSL valid: True
- FeatureSet candidate id: 1291
- baseline PF: 1.947 → modified PF: 1.085
- t_stat: 0.000, p_value: 0.463, cohens_d: 0.243
- scalar_score: -0.4789
- accepted: False, reason: normalized_score -0.2581 <= 0.0, sharpe_delta -16.8215 < -0.3, hypothesis test not confirmed
**Metrics summary:**
- profit_factor: baseline=1.947, modified=1.085, diff=-0.862
- sharpe_ratio: baseline=19.162, modified=2.341, diff=-16.821
- win_rate: baseline=0.600, modified=0.500, diff=-0.100
- max_drawdown: baseline=0.056, modified=0.187, diff=0.131
- test_accuracy: baseline=0.992, modified=0.992, diff=-0.000
### Iteration 14
- DSL: `k_momentum_pct_change - i_macd(k_close, 12, 26, 9)` (feature=k_loop_iter_14_aabd65)
- DSL valid: True
- FeatureSet candidate id: 1292
- baseline PF: 1.947 → modified PF: 2.449
- t_stat: 0.000, p_value: 0.191, cohens_d: 0.254
- scalar_score: 1.0740
- accepted: True, reason: accepted
**Metrics summary:**
- profit_factor: baseline=1.947, modified=2.449, diff=0.501
- sharpe_ratio: baseline=19.162, modified=24.736, diff=5.574
- win_rate: baseline=0.600, modified=0.576, diff=-0.024
- max_drawdown: baseline=0.056, modified=0.061, diff=0.005
- test_accuracy: baseline=0.992, modified=0.992, diff=-0.000
### Iteration 15
- DSL: `i_rsi(k_close, 14) * (1 - price_position)` (feature=k_iter15_i_rsi_k_close_price_position)
- DSL valid: False
- FeatureSet candidate id: None
- baseline PF: 0.000 → modified PF: 0.000
- t_stat: 0.000, p_value: 1.000, cohens_d: 0.000
- scalar_score: 0.0000
- accepted: False, reason: quality_gate: NaN ratio 1.000 exceeds 0.3
📊 Multi-Objective Metrics
Iteration 1: k_loop_iter_1_7a129b
Y Label: C8 | Parent FS: #7
Objective mode: scalarize
Scalar score: -3.6248
Failed constraints: sharpe_ratio >= 1.0: got -7.5544
| Metric | Baseline | Modified | Diff |
|---|---|---|---|
| win_rate | 0.600 | 0.424 | -0.176 |
| max_drawdown | 0.056 | 0.131 | 0.075 |
| sharpe_ratio | 19.162 | -7.554 | -26.717 |
| profit_factor | 1.947 | 0.775 | -1.172 |
| test_accuracy | 0.992 | 0.992 | -0.001 |
Iteration 2: k_iter2_k_high_pct_change_price_position_dist_to_high
Y Label: C8 | Parent FS: #7
Objective mode: single
Scalar score: 0.0000
Iteration 3: k_loop_iter_3_011c57
Y Label: C8 | Parent FS: #7
Objective mode: scalarize
Scalar score: -0.4789
| Metric | Baseline | Modified | Diff |
|---|---|---|---|
| win_rate | 0.600 | 0.500 | -0.100 |
| max_drawdown | 0.056 | 0.187 | 0.131 |
| sharpe_ratio | 19.162 | 2.341 | -16.821 |
| profit_factor | 1.947 | 1.085 | -0.862 |
| test_accuracy | 0.992 | 0.992 | 0.000 |
Iteration 4: k_iter4_k_high_pct_change
Y Label: C8 | Parent FS: #7
Objective mode: single
Scalar score: 0.0000
Iteration 5: k_iter5_k_momentum_pct_chang_atr_norm
Y Label: C8 | Parent FS: #7
Objective mode: single
Scalar score: 0.0000
Iteration 6: k_iter6_abs_k_volume_rolling_mean
Y Label: C8 | Parent FS: #7
Objective mode: single
Scalar score: 0.0000
Iteration 7: k_iter7_price_position_atr_norm
Y Label: C8 | Parent FS: #7
Objective mode: single
Scalar score: 0.0000
Iteration 8: k_iter8_pct_change_atr_norm_vol_ratio
Y Label: C8 | Parent FS: #7
Objective mode: single
Scalar score: 0.0000
Iteration 9: k_iter9_atr_norm
Y Label: C8 | Parent FS: #7
Objective mode: single
Scalar score: 0.0000
Iteration 10: k_loop_iter_10_d1f1b3
Y Label: C8 | Parent FS: #7
Objective mode: scalarize
Scalar score: -0.1089
| Metric | Baseline | Modified | Diff |
|---|---|---|---|
| win_rate | 0.600 | 0.563 | -0.037 |
| max_drawdown | 0.056 | 0.056 | 0.000 |
| sharpe_ratio | 19.162 | 18.205 | -0.957 |
| profit_factor | 1.947 | 1.895 | -0.053 |
| test_accuracy | 0.992 | 0.992 | 0.000 |
Iteration 11: k_iter11_pct_change_atr_norm_price_position
Y Label: C8 | Parent FS: #7
Objective mode: single
Scalar score: 0.0000
Iteration 12: k_iter12_pct_change_vol_ratio
Y Label: C8 | Parent FS: #7
Objective mode: single
Scalar score: 0.0000
Iteration 13: k_loop_iter_13_4e41bb
Y Label: C8 | Parent FS: #7
Objective mode: scalarize
Scalar score: -0.4789
| Metric | Baseline | Modified | Diff |
|---|---|---|---|
| win_rate | 0.600 | 0.500 | -0.100 |
| max_drawdown | 0.056 | 0.187 | 0.131 |
| sharpe_ratio | 19.162 | 2.341 | -16.821 |
| profit_factor | 1.947 | 1.085 | -0.862 |
| test_accuracy | 0.992 | 0.992 | 0.000 |
Iteration 14: k_loop_iter_14_aabd65
Y Label: C8 | Parent FS: #7
Objective mode: scalarize
Scalar score: 1.0740
| Metric | Baseline | Modified | Diff |
|---|---|---|---|
| win_rate | 0.600 | 0.576 | -0.024 |
| max_drawdown | 0.056 | 0.061 | 0.005 |
| sharpe_ratio | 19.162 | 24.736 | 5.574 |
| profit_factor | 1.947 | 2.449 | 0.501 |
| test_accuracy | 0.992 | 0.992 | 0.000 |
Iteration 15: k_iter15_i_rsi_k_close_price_position
Y Label: C8 | Parent FS: #1292
Objective mode: single
Scalar score: 0.0000
📁 Offline Report
Markdown backup: reports/autoloop/zz_sylvain/20260726_173014.md