Pipeline-ul vision (screenshot extraction + CSV append + Python stats) era
greoi pentru backtest semi-manual. Înlocuit cu un singur template Excel
generat din openpyxl + Dashboard cu comparație 5 strategii management pe
aceleași semnale blackbox.
- Strategii: TP0 only / TP1 only / TP2 only / Hybrid+BE / Hybrid no BE
- Input minim (12 coloane galbene); Sesiune și Zi derivate auto din Data+Ora
- Dashboard cu coloana "Cum citesc" + secțiune Glosar cu exemple concrete
- Breakdowns PER SESIUNE / STRATEGIE / INDICATOR / DIRECȚIE
- Equity curve cu 5 linii
Eliminat: m2d-extractor agent, /backtest, /batch, /m2d-log, /stats slash
commands, scripts/{append_row,pl_calc,stats,manual_log,regenerate_md,
vision_schema,calendar_parse}.py, tests/, screenshots/, data/extractions/.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
atm-backtesting
Jurnal Excel manual pentru backtesting pe semnale blackbox (entry / SL / TP precalculate de alt trader sau de un indicator), cu comparație 5 strategii de management side-by-side.
Ce face
Introduci datele de bază ale fiecărui trade — dată, oră, strategie, indicator, TF, direcție, SL/TP0/TP1/TP2 în %, outcome — și Excel calculează automat:
- R-multiples și $ P&L pentru 5 strategii paralele
- Dashboard: Win Ratio, Average Win/Loss, Profit Factor, Risk:Reward, Expectancy, HWM Balance, Max Drawdown — câte un set per strategie
- Breakdown per Sesiune, Strategie, Indicator, Direcție
- Equity curve (5 linii — câte una per strategie)
Cele 5 strategii de management comparate:
| # | Strategie | Comportament |
|---|---|---|
| 1 | TP0 only | 100% poziție, close la TP0. Foarte conservator (bird in hand). |
| 2 | TP1 only | 100% poziție, OCO la SL sau TP1, fără intervenție. |
| 3 | TP2 only | 100% poziție, OCO la SL sau TP2 (let it ride). |
| 4 | Hybrid + BE | 50% close la TP0, mut SL la BE, 50% close la TP1. Recomandat de trader. |
| 5 | Hybrid no BE | 50% close la TP0, fără BE, 50% close la TP1. Compară direct cu #4 ca să vezi dacă BE-ul aduce valoare. |
Rezultatul: pe aceleași semnale, vezi care metodă de management produce cel mai mare expectancy, profit factor și cea mai mică drawdown.
De ce 2 variante Hybrid (cu/fără BE)
BE move este o regulă teoretică de management, nu o decizie istorică pe fiecare trade. Așa că nu o marchezi manual pe rând — în schimb, ambele variante (cu și fără BE) se calculează automat pentru fiecare trade. Compari direct dacă regula BE-ului adaugă R-uri sau le scoate.
Setup (o singură dată)
pip install openpyxl
python scripts/generate_template.py
Se generează data/backtest.xlsx. Deschide-l în Excel sau LibreOffice Calc.
Workflow zilnic
- Deschide
data/backtest.xlsxși du-te în sheet-ul Trades. - Adaugă un rând nou (continuă imediat sub ultimul completat — nu lăsa goluri între rânduri).
- Completează coloanele galbene (input) — restul (albastre) se calculează automat:
- Data, Ora RO (sesiunea + ziua se derivă automat de aici)
- Strategie (M2D / EMA cross / ... — dropdown, editabil în Config)
- Indicator (DIA / SPY / US30 / ... — dropdown)
- TF (1min / 3min / 15min — dropdown; e TF-ul de entry, vezi mai jos)
- Direcție (Buy / Sell — dropdown)
- SL %, TP0 %, TP1 %, TP2 % — distanțe față de entry, în procente (ex. 0.30 pentru 0.30%)
- Outcome (SL / TP0 only / TP1 / TP2 — dropdown)
- Notes (opțional)
- Coloanele albastre derivate (Zi, Sesiune, R_, $_, Bal_* pentru cele 5 strategii) se umplu automat.
- Mergi la sheet-ul Dashboard — metricile, breakdown-urile și equity curve se actualizează live.
Coloana TF
Pentru M2D, TF-ul mic este TF-ul de entry, iar TF-ul mare e implicit:
| TF (input) | Perechea M2D |
|---|---|
| 1min | 1 / 5 min |
| 3min | 3 / 15 min |
| 15min | 15 / 60 min |
Dacă folosești o altă strategie cu pereche diferită, descrie în Notes.
Cum se calculează Sesiunea automat
Pe baza Data + Ora RO, regulile M2D (vezi strategie_M2D.md):
| Sesiune | Condiție |
|---|---|
| A1 | 16:35–17:00 RO, Mar/Mie/Joi |
| A2 | 17:00–18:00 RO, Mar/Mie/Joi (sweet spot) |
| A3 | 18:00–19:00 RO, Mar/Mie/Joi |
| B | 22:00–22:45 RO, Mar/Mie/Joi (Power Hour) |
| C | 15:30–16:30 RO (pre-NY chop / news risk), orice zi |
| D | Luni sau Vineri |
| Other | În afara ferestrelor de mai sus |
Notă: zilele FOMC/NFP/CPI ar trebui marcate ca C, dar formula nu detectează evenimente — marchează manual în Notes dacă e zi news majoră.
Configurare
Sheet-ul Config permite editarea:
- Account Size Start ($) — balanța inițială (default $10,000)
- Risk per Trade (%) — % din account riscat per trade (default 1.0%)
- Listele pentru dropdown-uri: Strategii, Indicatori, TF, Direcție, Outcome
La schimbarea Account Size sau Risk %, toate sumele $ din Trades și Dashboard se recalculează.
Formule R-multiples (referință)
SL_%, TP0_%, TP1_%, TP2_% sunt distanțe pozitive față de entry, exprimate în procente.
Tabelul de mai jos arată R-multiple-ul rezultat pentru fiecare combinație (Outcome × Strategie):
| Outcome | TP0 only | TP1 only | TP2 only | Hybrid + BE | Hybrid no BE |
|---|---|---|---|---|---|
| SL | −1 | −1 | −1 | −1 | −1 |
| TP0 only | +TP0/SL | −1 | −1 | +0.5·TP0/SL | +0.5·TP0/SL − 0.5 |
| TP1 | +TP0/SL | +TP1/SL | −1 | +0.5·(TP0+TP1)/SL | +0.5·(TP0+TP1)/SL |
| TP2 | +TP0/SL | +TP1/SL | +TP2/SL | +0.5·(TP0+TP1)/SL | +0.5·(TP0+TP1)/SL |
Citirea Outcome-ului:
SL— prețul a atins SL fără să atingă vreodată TP0 (loss complet).TP0 only— prețul a atins TP0, dar nu și TP1 (ulterior fie a venit înapoi la SL, fie a fost închis la BE pentru variantele cu BE move).TP1— prețul a atins TP1 (a trecut prin TP0).TP2— prețul a atins TP2 (a trecut prin TP0 și TP1).
Asumpții de simulare:
TP1 onlyșiTP2 onlysimulează OCO pur, fără intervenție manuală. Outcome=TP0 onlyse închide la SL (presupunere worst-case).TP2 onlycu Outcome=TP1se închide la SL (TP1 a fost atins, dar SL ar fi venit înainte de TP2).- Diferența dintre Hybrid + BE și Hybrid no BE apare doar când Outcome=
TP0 only; la TP1/TP2 ambele dau identic.
Regenerare template
Dacă strici structura Excel-ului accidental sau modifici scripts/generate_template.py:
python scripts/generate_template.py
Atenție: suprascrie data/backtest.xlsx. Fă backup la rândurile tale înainte (copy-paste într-un alt fișier sau export CSV).
Decizii GO LIVE / ABANDON
Vezi STOPPING_RULE.md — threshold-urile semnate (N≥40, WR≥55%, Expectancy≥+0.20R) și caveat-urile metodologice.
Fișiere
atm-backtesting/
├── data/
│ └── backtest.xlsx # source of truth — jurnalul tău
├── scripts/
│ └── generate_template.py # regenerator template
├── strategie_M2D.md # referință reguli M2D (Buy/Sell setup, SL/TP, sesiuni)
├── calendar_evenimente.yaml # calendar news (FOMC/NFP/CPI etc.) pentru identificare manuală sesiune
├── STOPPING_RULE.md # threshold-uri decizie + caveats semnate
├── pyproject.toml # dependență: openpyxl
└── README.md # acest fișier