research(goal50): R2 prop-firm + roadmap finale — 50eur/g in mesi NON esiste via legale; stack onesto 18-36 mesi

- MC aggiornato alle regole VERE (HYRO 10/6/4, BREAKOUT 10/6/3, FTMO 10/10/5):
  de-luck P(pass) 55-68% a leva 1-1.5x, mediana 68-137g; funded 100k de-luck
  P(vivo) 69%, atteso blended onesto 250-450 eur/MESE (attriti fuori-MC: carry,
  recycling bust, controparte non regolata, cap industria 200k).
- Roadmap: prop = unico canale che cambia scala in mesi (8-15 eur/g);
  stack 24 mesi top-decile 30-60 eur/g, mediana 10-25; fisco 33% = muro x1.5.
- Book live INVARIATO.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Adriano Dal Pastro
2026-07-24 21:02:45 +00:00
parent acfba63420
commit 2e7178487d
2 changed files with 100 additions and 20 deletions
+24 -14
View File
@@ -131,10 +131,12 @@ def part_c(book: pd.Series) -> None:
r = book.to_numpy()
n_paths, max_days = 20_000, 365
# regole VERE verificate (ricerca web R2, 2026-07-24): le firm crypto-native danno
# DD 3-6%, NON 10% — e' il vincolo binding per un book con maxDD storico 9.4%.
rules = [
("target 8% / DD 10% statico / daily 4%", 0.08, 0.10, 0.04, False),
("target 10% / DD 10% statico / daily 5%", 0.10, 0.10, 0.05, False),
("target 10% / DD 10% TRAILING / daily 5%", 0.10, 0.10, 0.05, True),
("HYRO 1-step: tgt 10% / DD 6% st / daily 4%", 0.10, 0.06, 0.04, False),
("BREAKOUT Classic: tgt 10% / DD 6% st / dl 3%", 0.10, 0.06, 0.03, False),
("FTMO Swing: tgt 10% / DD 10% st / daily 5%", 0.10, 0.10, 0.05, False),
]
for drift_scale, lab in ((1.0, "book modellato"), (0.6, "de-luck x0.6 (onesto)")):
base = _block_bootstrap_paths(r, max_days, n_paths, drift_scale=drift_scale)
@@ -146,21 +148,29 @@ def part_c(book: pd.Series) -> None:
d = f"{res['median_days']:.0f}g" if np.isfinite(res["median_days"]) else "n/a"
print(f" {name:<44} P(pass entro 1a) {res['p_pass']:>5.1%} mediana {d}")
# fase funded: 100k, split 80%, anno di ritorni; conto perso se DD>10%
# fase funded: 100k, split 80%, anno di ritorni; regole di bust VERE (R2):
# HYRO = max loss 6% statico + daily 4% (vol nativa book 11% -> gia' nel range
# 10-12% raccomandato); FTMO = 10% statico + daily 5%.
print("\n --- fase FUNDED: $100k nozionale, split 80%, orizzonte 1 anno ---")
funded_rules = [("HYRO (max loss 6% st, daily 4%)", 0.06, 0.04),
("FTMO (max loss 10% st, daily 5%)", 0.10, 0.05)]
for drift_scale, lab in ((1.0, "book modellato"), (0.6, "de-luck x0.6")):
paths = _block_bootstrap_paths(r, 365, n_paths, drift_scale=drift_scale)
eq = np.cumprod(1 + paths, axis=1)
hwm = np.maximum.accumulate(np.maximum(eq, 1.0), axis=1)
blown = (eq < hwm * 0.90) | (paths < -0.05)
alive = ~blown.any(axis=1)
pnl = (eq[:, -1] - 1) * 100_000 * 0.80
pnl_alive = pnl[alive]
q = np.percentile(pnl_alive, [10, 50, 90]) if alive.any() else [np.nan] * 3
print(f" {lab:<24} P(conto vivo a 1a) {alive.mean():>5.1%} payout se vivo "
f"p10/p50/p90: EUR {eur_day(q[0]) :>5.1f} / {eur_day(q[1]):>5.1f} / {eur_day(q[2]):>5.1f} al giorno")
print("\n NB: regole reali (consistency, min trading days, no-bot) possono uccidere lo stile")
print(" low-frequency — il verdetto finale dipende dalla ricerca web sulle firm 2026.")
for fname, dd_lim, dl_lim in funded_rules:
blown = (eq < 1 - dd_lim) | (paths < -dl_lim)
alive = ~blown.any(axis=1)
pnl = (eq[:, -1] - 1) * 100_000 * 0.80
pnl_alive = pnl[alive]
q = np.percentile(pnl_alive, [10, 50, 90]) if alive.any() else [np.nan] * 3
print(f" {lab:<16} {fname:<32} P(vivo 1a) {alive.mean():>5.1%} "
f"payout p10/p50/p90: EUR {eur_day(q[0]):>5.1f} / {eur_day(q[1]):>5.1f} / "
f"{eur_day(q[2]):>5.1f} /g")
print("\n NB (ricerca R2 completata 2026-07-24): HYRO = API reale Bybit da funded, consistency")
print(" 40% solo in eval; BREAKOUT = carry nascosto 0.033%/g (~12%/anno) ostile ai multi-week")
print(" hold, esecuzione manuale ok a cadenza 1d; FTMO = CFD con swap ~10-25%/anno. Questi")
print(" attriti + recycling bust + controparte non regolata NON sono nel MC: l'atteso blended")
print(" onesto a $100k funded e' ~250-450 EUR/MESE (8-15/g), 15-30/g al cap $200k.")
# ----------------------------------------------------------------------------- D