EXP-008 design — Turtle + Bollinger squeeze
- Designed and run: 2026-09-04
- Execution model:
gpt-5.6-luna / high - Week: work week 4 (
2026-W36) - Status:
exploratory / hold
Input material and interpretation boundaries
The attached Bollinger Band review summary (.docx, 260903), the strategy candidate 5 Bollinger Band document (.docx, 260825) and its .md are research materials supplied by the owner. Their sentences were interpreted as hypotheses and cautions, not execution instructions. What was reflected in this public contract is the verdict "exclude simple buy-the-lower-band mean reversion and test the squeeze breakout as an auxiliary Turtle filter". External performance figures in the materials were not used as grounds for the domestic CREON results.
Hypotheses fixed in advance
- Turtle 55-day breakouts right after a squeeze can lower mean MDD versus the Turtle-only control.
- Comparing all three 60/125/250-day lookbacks instead of choosing one separates the luck of a particular window.
- The direction must hold across neighbouring ATR stop multiples of 1.0/1.5/2.0.
- The direction of results must hold under 2x costs and 5bp/one-way slippage.
- Excluding the top 10% BandWidth bulge may reduce overheated breakouts, but it is not accepted as an improvement if it does not actually remove signals.
Execution contract
| Item | Contract |
|---|---|
| Data | CREON daily bars, 7 core symbols that passed quality checks (A069500, A000660, A012330, A035420, A051910, A055550, A068270) |
| Data limits | all_research is based on the listing as of 2026-08-26, so survivorship bias exists |
| Bands | SMA(20) ± 2σ, BandWidth=(upper-lower)/middle |
| squeeze | Prior bar's BandWidth in the bottom 20% of its distribution over the previous 60/125/250 days |
| Turtle entry | Current close above the prior 55-day high → next trading day's open |
| Turtle exit | Current close below the prior 20-day low → next trading day's open |
| BB diagnostic group | After a prior squeeze, current close above the upper band → ATR stop or 2R target |
| Stop | Next-open entry price - ATR(14) × 1.0/1.5/2.0 |
| Fill ambiguity | If both stop and target are touched on the same bar, stop first |
| Gaps | A down gap that skips the stop price exits at the actual open and records gap_through_stop |
| Accounting | Initial 3,000,000 KRW, 95% of cash just before entry, integer quantities, no leverage, compounding the net balance after exit |
| Costs | 0bp / CREON 1.5bp one-way provisional proxy / 2x / proxy + 5bp one-way slippage |
| Risk | Run separately: research_unhalted for structural comparison and the current account blocking policy account_halt |
Matrix
turtle_onlyturtle_squeeze_60,turtle_squeeze_125,turtle_squeeze_250- A
bulge-exclusion diagnostic group for each of the three contracts above - Standalone diagnostic groups
bb_breakout_60,bb_breakout_125,bb_breakout_250 - 10 contracts × 3 ATR multiples × 4 cost profiles × 2 risk policies × 7 symbols
- Each cell records
full,train(2010~2018),validation(2019~2022),locked_oos(2023~2026-08-26)
This produces 6,720 result rows in total plus trade, signal and NAV ledgers. Per-period results compute indicators on the same full time series, then aggregate period NAV and trades by entry date within the period, avoiding the problem of indicator warm-up vanishing at each split start date.
Decision criteria
The existing week-3 screening criteria apply. The minimum is a per-symbol median CAGR of at least 15% in the provisional actual-assumption locked OOS, MDD of 25% or less, a positive direction even at 2x costs, and the direction holding across neighbouring stops/lookbacks and periods. Even if a current-listing basket result meets this, it is not final adoption.
Reproduction command
cd [original local path withheld]
python -X utf8 scripts\backtest\run_turtle_bollinger_exp008.py