# V21 Optimization Pass - 2026-05-11

## Scope

- Baseline live config: `obw_platform/configs/V21_strict_trend_stable_live_static9p38.yaml`
- Live report reviewed: `obw_platform/_reports/_live/bingx_ena_v21_strict_trend_static9p38`
- New bundle already installed separately as the champion v3.8 experiment.
- Main tuner identified: `obw_platform/auto_tuner_dual_fast_pack.py`

## Tuner Work

The recent relevant tuner is `auto_tuner_dual_fast_pack.py`. It was extended with:

- `--max-seconds` for bounded runs.
- a low-memory `--jobs 1` path that evaluates in the main process instead of duplicating NPZ state into a worker.

The requested one-hour run was attempted several times, but long-lived tuner processes were killed by the environment after baseline or early candidates. To avoid losing work, the pass continued with short isolated backtests and CSV persistence after each result.

Artifacts:

- `_reports/_auto_tuner_dual_fast_pack/tuner_plan_V21_static9p38_stable_1h/`
- `_reports/v21_manual_candidates_20260511/results_all.csv`
- `_reports/v21_microbatch_1h_20260511/micro_tuner_log.csv`

## V21 Candidate Findings

The strongest short-window idea was lowering the long partial close threshold:

- Baseline long `subSellTPPercent`: `0.53`
- Experimental long `subSellTPPercent`: `0.43`
- Experimental config: `obw_platform/configs/V21_static9p38_experimental_long_subtp043_20260511.yaml`

This helped the 2025-12-15 to 2026-03-15 validation window:

| Config | MTM PnL | Return | Realized | Unrealized | MDD MTM | Trades |
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
| Baseline V21 | 1.6667 | 0.8334% | 17.4071 | -15.7403 | -7.1009% | 2078 |
| Experimental subTP 0.43 | 5.9909 | 2.9955% | 17.0130 | -11.0221 | -7.1699% | 2096 |

But it failed the 1-year robustness filter:

| Config | MTM PnL | Return | Realized | Unrealized | MDD MTM | Trades |
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
| Baseline V21 | 36.8692 | 18.4346% | 65.3947 | -28.5255 | -15.6351% | 6430 |
| Experimental subTP 0.43 | 24.4342 | 12.2171% | 54.5392 | -30.1051 | -17.8395% | 6391 |

Conclusion: do not replace the current live config with `subTP 0.43` as a global setting. It is useful as a regime-specific idea, not as the next live default.

## Algorithm Review

V21 remains the best live base because it has the strongest MTM result and the least bad realized/unrealized balance across the inspected configs. The champion v3.8 bundle contains useful logic cleanup and a dual-MA W/D short regime idea, but its current ENA full-year result was weaker than V21 due to terminal unrealized exposure.

Most promising V21 improvements:

1. Add a regime gate for lower long `subSellTPPercent` only in windows where terminal long inventory is building.
2. Port only the risk throttling idea from compound variants, especially DCA reduction under high unrealized loss, without switching to compound sizing globally.
3. Tune volatility-entry and volatility-DCA block params on full OHLCV data, not close-only cache.
4. Keep the live V21 baseline unchanged until a candidate beats it on both recent-quarter and full-year MTM/MDD.

## Symbol Ranking

Akela 30-day shortlist ranking with baseline V21 was written to:

- `_reports/v21_symbol_rank_akela_shortlist_30d_20260511.csv`

Top results by MTM:

| Symbol | MTM PnL | Return | Realized | Unrealized | MDD MTM | Trades |
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
| FREEDOMMONEY/USDT:USDT | 57.3133 | 28.6567% | 86.1464 | -28.8330 | -9.8359% | 5233 |
| MAXXING/USDT:USDT | 55.4219 | 27.7109% | 70.1534 | -14.7315 | -26.6670% | 4405 |
| SUP/USDT:USDT | 27.5270 | 13.7635% | 28.7069 | -1.1799 | -27.0384% | 1573 |
| CHECK/USDT:USDT | 3.4252 | 1.7126% | 3.6353 | -0.2100 | -0.3852% | 64 |
| BTC/USDT:USDT | 0.2143 | 0.1071% | 4.0009 | -3.7866 | -2.6580% | 633 |

FREEDOMMONEY and MAXXING are high-return but need liquidity/execution checks before any live use. CHECK is much cleaner on drawdown, but trade count is low. BTC/ETH do not currently justify moving capital from ENA.

## Recommendation

Continue live with `V21_strict_trend_stable_live_static9p38.yaml`.

Use `V21_static9p38_experimental_long_subtp043_20260511.yaml` only as a research candidate or tiny shadow-forward test. The next real improvement should be a code-level regime gate that lowers long partial TP during inventory-risk regimes and leaves the baseline behavior intact elsewhere.
