foundation: STOPPING_RULE, WORKFLOW, pyproject, calendar YAML, _meta, directory layout

This commit is contained in:
Marius
2026-05-13 12:33:24 +03:00
parent 86f603efbd
commit 31dcb4abe3
11 changed files with 428 additions and 4 deletions

74
STOPPING_RULE.md Normal file
View File

@@ -0,0 +1,74 @@
# STOPPING_RULE — M2D Backtesting
**Versiune**: 1
**Data**: 2026-05-13
**Status**: draft — pentru semnătură Marius
---
## Întrebarea de decis
Pentru fiecare Set candidat (A1, A2, A3, B), decidem una din trei:
- **GO LIVE** — pornesc forward paper trading cu 0.25R per trade (validare reală)
- **EXTEND COLLECTION** — mai colectez screenshot-uri, încă nu sunt date suficiente
- **ABANDON** — strategia nu are edge măsurabil pe acest Set; renunț la Set sau la întreaga strategie
---
## Threshold-uri obligatorii pentru GO LIVE pe un Set
Toate condițiile trebuie satisfăcute simultan:
1. **N ≥ 40** trade-uri non-pending pe acel Set
2. **WR ≥ 55%** (Wilson 95% CI lower bound ≥ 45%)
3. **Expectancy ≥ +0.20R** pe overlay-ul `pl_marius` (50% TP0 + BE + close ~TP1)
4. **Calibration P4 PASS** — pe primele 10 trade-uri double-extracted (manual + vision), mismatch rate ≤10% pe câmpuri core (`entry`, `sl`, `tp0/1/2`, `outcome_path`, `max_reached`, `directie`)
Dacă oricare condiție pică → **EXTEND COLLECTION** sau **ABANDON** (vezi mai jos).
---
## Threshold-uri pentru ABANDON pe un Set
Oricare e suficient:
- N ≥ 40 și WR < 45% edge negativ; ABANDON acest Set
- N 40 și Expectancy 0.10R ABANDON
- Wilson 95% CI lower bound stabil sub 50% după N 60 ABANDON
---
## Caveat metodologic semnat
**Eu, Marius, înțeleg și accept**:
1. **N=40 = directional evidence, NU scientific proof**. Intervalul de încredere 95% pentru WR la N=40, WR observat 55%, este aproximativ [40%, 70%]. "Validated" la N=40 înseamnă "merită tradez cu 0.25R", NU "edge confirmat statistic". Confirmarea reală vine din forward paper trading.
2. **Selection bias rezidual**. Chiar și cu scroll protocol (vezi `WORKFLOW.md`), eu am ales perioada pe care scroll-uiesc. Acest bias e parțial mitigat, NU eliminat.
3. **Lookahead bias pe `calitate`**. Câmpul `calitate ∈ {Clară, Mai mare ca impuls, Slabă}` este clasificat post-outcome (am văzut chart-ul întreg). DECI: NU folosesc `calitate` ca filtru în stopping rule. Rămâne descriptor în jurnal, NU criteriu de tradare.
4. **Backtest = upper bound al expectancy real**. Execuția live va avea slippage, latențe, emoții. Expectancy real probabil 0.05-0.15R sub backtest. De aceea pragul `+0.20R` în backtest = aproximativ break-even-cu-edge-mic în live.
5. **Indicator drift**. Dacă indicatorul blackbox se update-ează, trade-urile vechi devin istoric irelevant. Trackuit prin coloana `indicator_version` în CSV; reset stat-uri la schimbare.
---
## Post-GO LIVE protocol
După un Set primește GO LIVE:
1. Forward paper trading cu 0.25R per trade pe acel Set.
2. Minimum 20 trade-uri live înainte de a urca sizing-ul la 0.5R sau full.
3. Dacă WR live diverge >10pp de backtest în prima 20 trade-uri → review (probabil execuție defectă sau bias subestimat).
---
## Semnătură
```
Marius — _________________________ — data: ___________
```
(prin commit-ul acestui fișier cu modificări la status "signed" + nume în istoric git)