跳到主要內容

Feature Iteration Run #1075: zz_sylvain

Status: completed | Started: 2026-07-27 00:19:50 | Ended: 2026-07-27 00:24:24

⭐ Best Accepted Iteration

Iteration 1: k_momentum_pct_change / (1 + i_atr(k_high, k_low, k_close, …

baseline PF: 1.000 → modified PF: 1.072 | Cohen's d: 0.406 | p-value: 0.000

📊 Iterations

Iter Y Label Model Warm Proxy Parent FS Feature DSL DSL Valid Baseline PF Modified PF Scalar Score t-stat p-value Cohen's d Result Reason
1 C8 lightgbm — — #7 k_loop_iter_1_e78027 k_momentum_pct_change / (1 + i_atr(k_hi… ✅ 1.000 1.072 0.4694 0.000 0.000 0.406 ✅ ACCEPT accepted
2 C8 lightgbm — ✅ #1409 k_loop_iter_2_1f99e6 k_momentum_pct_change * vol_ratio / (1 … ✅ 1.104 0.000 0.0000 0.000 1.000 0.000 ❌ REJECT 1-trial proxy PF=0.922 < 0.95, no improvement expected
3 C8 lightgbm — — #1409 k_iter3_k_momentum_pct_chang_price_position_i_atr_k_high k_momentum_pct_change * (1 - price_posi… ❌ 0.000 0.000 0.0000 0.000 1.000 0.000 ❌ REJECT quality_gate: canonical duplicate: k_momentum_pct_change * (1 - price_position) / (1 + i_atr(k_high,k_low,k_close) / k_close)
4 C8 lightgbm — — #1409 k_iter4_k_high_pct_change_price_position_i_atr k_high.pct_change * (1 - price_position… ❌ 0.000 0.000 0.0000 0.000 1.000 0.000 ❌ REJECT safe_eval DSL triggered unexpected TypeError: unsupported operand type(s) for *: 'method' and 'float'
5 C8 lightgbm — — #1409 k_iter5_k_high_pct_change_k_volume_rolling (k_high.pct_change * k_volume.rolling(2… ❌ 0.000 0.000 0.0000 0.000 1.000 0.000 ❌ REJECT safe_eval DSL triggered unexpected TypeError: unsupported operand type(s) for *: 'method' and 'float'
6 C8 lightgbm — — #1409 k_iter6_abs_k_volume_rolling_mean (abs(o_div_binary(48)) * k_volume.rolli… ❌ 0.000 0.000 0.0000 0.000 1.000 0.000 ❌ REJECT safe_eval DSL: 變數未定義: abs
7 C8 lightgbm — — #1409 k_iter7_i_rsi_k_close_hl_range_i_atr i_rsi(k_close, 14) * (1 - hl_range) / (… ❌ 0.000 0.000 0.0000 0.000 1.000 0.000 ❌ REJECT quality_gate: NaN ratio 1.000 exceeds 0.3
8 C8 lightgbm — — #1409 k_loop_iter_8_6a6452 i_ema(k_close, 12) - i_ema(k_close, 26)… ✅ 1.104 1.408 1.2880 0.000 0.000 1.245 ❌ REJECT max_drawdown_delta -0.0472 < -0.02

📄 Report Markdown

# AUTOLOOP: zz_sylvain (8 iterations)

> **Phase**: Y4.7 Option B (DSL → Python code → FeatureSet candidate)
> **Target indicator**: zz_sylvain
> **Base feature_set_id**: 1409
> **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**: 274.20s
> **Total accepted**: 1
> **Total rejected**: 7

## Iterations 詳情

### Iteration 1
- DSL: `k_momentum_pct_change / (1 + i_atr(k_high, k_low, k_close, 14) / k_close) * (1 - return_5) * (1 - price_position)` (feature=k_loop_iter_1_e78027)
- DSL valid: True
- FeatureSet candidate id: 1409
- baseline PF: 1.000 → modified PF: 1.072
- t_stat: 0.000, p_value: 0.000, cohens_d: 0.406
- scalar_score: 0.4694
- accepted: True, reason: accepted

**Metrics summary:**
  - profit_factor: baseline=1.000, modified=1.072, diff=0.072
  - sharpe_ratio: baseline=0.002, modified=1.673, diff=1.671
  - win_rate: baseline=0.465, modified=0.434, diff=-0.030
  - max_drawdown: baseline=0.162, modified=0.196, diff=0.035
  - test_accuracy: baseline=0.966, modified=0.966, diff=-0.000

### Iteration 2
- DSL: `k_momentum_pct_change * vol_ratio / (1 + i_atr(k_high, k_low, k_close, 14) / k_close)` (feature=k_loop_iter_2_1f99e6)
- DSL valid: True
- FeatureSet candidate id: 1410
- baseline PF: 1.104 → modified PF: 0.000
- t_stat: 0.000, p_value: 1.000, cohens_d: 0.000
- scalar_score: 0.0000
- accepted: False, reason: 1-trial proxy PF=0.922 < 0.95, no improvement expected

### Iteration 3
- DSL: `k_momentum_pct_change * (1 - price_position) / (1 + i_atr(k_high, k_low, k_close, 14) / k_close)` (feature=k_iter3_k_momentum_pct_chang_price_position_i_atr_k_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: canonical duplicate: k_momentum_pct_change * (1 - price_position) / (1 + i_atr(k_high,k_low,k_close) / k_close)

### Iteration 4
- DSL: `k_high.pct_change * (1 - price_position) * (1 + i_atr(k_high, k_low, k_close, 14) / k_close)` (feature=k_iter4_k_high_pct_change_price_position_i_atr)
- 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 triggered unexpected TypeError: unsupported operand type(s) for *: 'method' and 'float'

### Iteration 5
- DSL: `(k_high.pct_change * k_volume.rolling(20).mean()) / (1 + i_atr(k_high, k_low, k_close, 14) / k_close) * (1 - return_5)` (feature=k_iter5_k_high_pct_change_k_volume_rolling)
- 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 triggered unexpected TypeError: unsupported operand type(s) for *: 'method' and 'float'

### Iteration 6
- DSL: `(abs(o_div_binary(48)) * k_volume.rolling(20).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: `i_rsi(k_close, 14) * (1 - hl_range) / (1 + i_atr(k_high, k_low, k_close, 14) / k_close)` (feature=k_iter7_i_rsi_k_close_hl_range_i_atr)
- 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

### Iteration 8
- DSL: `i_ema(k_close, 12) - i_ema(k_close, 26) / (1 + i_atr(k_high, k_low, k_close, 14) / k_close)` (feature=k_loop_iter_8_6a6452)
- DSL valid: True
- FeatureSet candidate id: 1411
- baseline PF: 1.104 → modified PF: 1.408
- t_stat: 0.000, p_value: 0.000, cohens_d: 1.245
- scalar_score: 1.2880
- accepted: False, reason: max_drawdown_delta -0.0472 < -0.02

**Metrics summary:**
  - profit_factor: baseline=1.104, modified=1.408, diff=0.304
  - sharpe_ratio: baseline=2.955, modified=8.183, diff=5.228
  - win_rate: baseline=0.464, modified=0.484, diff=0.019
  - max_drawdown: baseline=0.184, modified=0.137, diff=-0.047
  - test_accuracy: baseline=0.904, modified=0.965, diff=0.061

📊 Multi-Objective Metrics

Iteration 1: k_loop_iter_1_e78027

Y Label: C8 | Parent FS: #7

Objective mode: scalarize

Scalar score: 0.4694

MetricBaselineModifiedDiff
win_rate 0.465 0.434 -0.030
max_drawdown 0.162 0.196 0.035
sharpe_ratio 0.002 1.673 1.671
profit_factor 1.000 1.072 0.072
test_accuracy 0.966 0.966 0.000

Iteration 2: k_loop_iter_2_1f99e6

Y Label: C8 | Parent FS: #1409

Objective mode: single

Scalar score: 0.0000

Iteration 3: k_iter3_k_momentum_pct_chang_price_position_i_atr_k_high

Y Label: C8 | Parent FS: #1409

Objective mode: single

Scalar score: 0.0000

Iteration 4: k_iter4_k_high_pct_change_price_position_i_atr

Y Label: C8 | Parent FS: #1409

Objective mode: single

Scalar score: 0.0000

Iteration 5: k_iter5_k_high_pct_change_k_volume_rolling

Y Label: C8 | Parent FS: #1409

Objective mode: single

Scalar score: 0.0000

Iteration 6: k_iter6_abs_k_volume_rolling_mean

Y Label: C8 | Parent FS: #1409

Objective mode: single

Scalar score: 0.0000

Iteration 7: k_iter7_i_rsi_k_close_hl_range_i_atr

Y Label: C8 | Parent FS: #1409

Objective mode: single

Scalar score: 0.0000

Iteration 8: k_loop_iter_8_6a6452

Y Label: C8 | Parent FS: #1409

Objective mode: scalarize

Scalar score: 1.2880

MetricBaselineModifiedDiff
win_rate 0.464 0.484 0.019
max_drawdown 0.184 0.137 -0.047
sharpe_ratio 2.955 8.183 5.228
profit_factor 1.104 1.408 0.304
test_accuracy 0.904 0.965 0.061

📁 Offline Report

Markdown backup: reports/autoloop/zz_sylvain/20260727_082424.md