Il bot DHCS (Delta-Hedged Convexity Selling)#
Se il bot TRPS vive di finestre da quindici minuti, il bot DHCS ha un solo appuntamento al giorno ma i conti che devono tornare alla cifra decimale. La strategia della pagina DHCS — put front-month ATM/−1σ, delta-hedge giornaliero con futures Micro, roll mensile — si traduce in un’architettura più corta e più rilassata di quella della pagina Il bot TRPS, e la differenza tra i due bot è essa stessa istruttiva: replica, sul piano del software, il confronto tra le due strategie della pagina TRPS vs DHCS. Anche qui, tutti gli orari in America/New_York.
Il rito delle 15:45#
Il cuore del bot è un unico job serale, tra le 15:45 e le 16:00, quando opzioni e futures sono entrambi liquidi e i prezzi di chiusura sono ormai rappresentativi. La sequenza, nell’ordine inderogabile imparato alla pagina Il bot TRPS: riconciliazione (posizioni e ordini contro journal, dati freschi, margine), poi la decisione, poi l’esecuzione, poi la scrittura.
Il calcolo del delta. È il passaggio matematicamente delicato, e merita il dettaglio. Il delta della posizione in opzioni si può prendere da due fonti: i greeks di modello che l’API di IBKR fornisce con le quotazioni, oppure un calcolo proprio (Black-Scholes con la IV corrente dello strike). Il bot fa entrambe le cose e le confronta: la fonte primaria sono i greeks del broker — coerenti con ciò che vede il sistema di margine — ma il calcolo indipendente fa da sanity check, perché i greeks via API hanno i loro momenti di fragilità (valori mancanti o palesemente stantii nei minuti convulsi). Se le due stime divergono oltre una tolleranza, o se una delle due manca, il bot non ribilancia e notifica: meglio una sera di hedge leggermente sporco che un aggiustamento basato su un numero inventato. Qui torna anche la finezza della pagina DHCS: alla copertura nominale si può aggiungere il correttivo per il beta implicito (vega·∂IV/∂S) — nel mio caso un semplice fattore moltiplicativo configurabile, di default modesto, perché la precisione decimale su un residuo stimato è eleganza sprecata.
La banda di ribilanciamento. Calcolato il delta della posizione in opzioni e sottratto quello della copertura esistente (numero di MES corti × il loro delta unitario), resta lo scoperto. Il bot non lo azzera a ogni costo: ribilancia solo se lo scoperto eccede una banda — in delta (es. ±0,05 per contratto SPX equivalente) o, equivalentemente, in nozionale. La banda è il compromesso della pagina DHCS tra precisione e costi resi espliciti: dentro la banda, lo scoperto è rumore a media zero che non vale lo spread di un ordine; fuori, si aggiusta. La granularità dei MES (5 dollari per punto, pagina Futures) rende l’aritmetica gentile: il numero di contratti correttivi è lo scoperto in dollari diviso (5 × livello dell’indice), arrotondato — e l’errore di arrotondamento massimo, mezzo Micro, è per costruzione più piccolo della banda. Con l’ES da 50 dollari per punto la stessa aritmetica produrrebbe aggiustamenti a gradoni grossolani: è il motivo per cui il Micro non è un ripiego per conti piccoli ma lo strumento giusto del mestiere.
Un ciclo mensile simulato: il delta scoperto (blu) vaga dentro la banda finché il gamma non lo spinge fuori; ogni freccia rossa è un ordine MES che lo riporta a zero. Dentro la banda, lo spread risparmiato vale più della precisione.
L’esecuzione. Gli ordini sui MES sono limit aggressivi vicino al mid (il book dei Micro nelle ore di cassa è profondo e lo spread minimo); il caso patologico del fill mancato entro pochi minuti degrada a ordine a mercato, perché qui — a differenza dei 15 centesimi della TRPS — l’economia del singolo tick è trascurabile rispetto al costo di restare scoperti. Ogni esecuzione aggiorna il journal con il nuovo stato della copertura, e il riepilogo serale registra la scomposizione del P&L del giorno nelle sue componenti stimate — theta incassato, costo di gamma realizzato (½·gamma·ΔS²), effetto vega — che è il cruscotto con cui si capisce perché la strategia sta guadagnando o perdendo, non solo quanto (pagina DHCS).
Il roll mensile#
A 7-10 giorni dalla scadenza (parametro configurato), il job serale aggiunge un passo: chiudere la put corrente, aprire quella del mese successivo allo strike che corrisponde al delta target (−0,25/−0,40, pagina DHCS), e ricalcolare da zero la copertura. Tre note di implementazione. Primo, l’ordine delle gambe: si chiude la vecchia put prima di aprire la nuova — per qualche minuto il portafoglio è sovra-coperto (i futures corti restano), che è lo sbilancio nella direzione prudente; mai il contrario. Secondo, il sizing si ricalcola a ogni roll sul valore corrente del conto e sul budget di stress della pagina DHCS (la perdita simulata nello scenario estremo non deve eccedere la frazione configurata): è il momento naturale in cui la strategia si riadatta al capitale, senza mai farlo a metà ciclo. Terzo, il roll è anche l’occasione del controllo di regime: il bot registra IV corrente, term structure e premio incassato, alimentando la serie storica con cui verifico che la tariffa continui a ripagare il rischio (il termometro IV/RV delle pagine Volatility risk premium e Edge).
Perché questo bot può permettersi di essere pigro#
Prima del confronto, una nota su come si sceglie la banda — l’unico parametro davvero “tunabile” del bot, e quindi l’unico su cui vale la pena spendere metodo. La via giusta non è l’ottimizzazione sul backtest (pagina Misure di rischio: i parametri magici sono overfitting in attesa di manifestarsi), ma il replay: si riproducono le serie storiche giornaliere di indice e IV sul codice di produzione — lo stesso identico codice, non una sua imitazione — e si misura, per bande diverse, il trade-off tra costi di transazione cumulati e volatilità del tracking. La curva che esce è piatta in un intervallo ampio: tra 0,03 e 0,08 di delta cambia poco, sotto si pagano spread per nulla, sopra il rumore residuo inizia a pesare. La piattezza è la notizia: dove la curva è piatta, la scelta è robusta, e si prende un valore centrale e non lo si tocca più. Il replay serve anche da collaudo generale: fargli attraversare il marzo 2020 e l’agosto 2024 simulati rivela più bug di sei mesi di paper tranquillo.
Il confronto con la pagina Il bot TRPS è il punto concettuale della pagina. Il bot TRPS ha appuntamenti critici: se manca la finestra delle 16:00 perde la giornata, se manca il cambio della guardia delle 10:00 lascia le posizioni con la sola guardia notturna oltre il suo turno. Il bot DHCS no: se il job serale salta — Gateway giù, casa al buio, bug — la conseguenza è che la copertura resta quella di ieri, e lo scoperto accumulato è il gamma di un giorno in più: tracking error, non emergenza (pagina DHCS: il gap tra ribilanciamenti è già nel disegno della strategia). La posizione in opzioni, a 20-30 giorni dalla scadenza, ha un gamma modesto; gli stop non servono perché il delta è coperto; e il mercato dei futures è aperto quasi 24 ore, quindi nel caso estremo l’aggiustamento lo faccio io dall’app in qualunque momento (Principio 3). In termini di progetto: il bot TRPS deve essere puntuale, il bot DHCS deve essere esatto — e l’esattezza, a differenza della puntualità, tollera il rinvio. Ne discende un’architettura senza macchina a stati: un singolo job idempotente lanciato da systemd all’orario stabilito, che se fallisce ritenta più tardi e se fallisce ancora notifica e rinuncia, sapendo che domani il calcolo del delta riassorbirà da solo l’arretrato. La riconciliazione del Principio 4 resta sacra — è l’unico vero prerequisito di ogni esecuzione — ma il dead-man switch qui può permettersi soglie rilassate: un ping al giorno, non uno a ogni passo.
Gli scenari brutti, per completezza. Il fill parziale sul roll (chiusa la vecchia put, la nuova non eseguita): il bot resta nello stato sovra-coperto prudente e ritenta l’apertura il giorno dopo — si perde un giorno di theta, non si aggiunge rischio. Il vega spike infrasettimanale (pagina DHCS): il bot non ha, di proposito, alcuna logica di reazione automatica — niente stop sul VIX, niente riduzioni di emergenza — perché ogni regola di de-risking reattivo che ho testato vendeva sui massimi di volatilità ciò che andava tenuto fino al rientro; lo spike lo assorbe il sizing fatto a monte sul budget di stress, e l’eventuale decisione straordinaria spetta all’umano, informato da una notifica sul telefono quando la perdita mark-to-market supera una soglia (il canale, comandi di stato e di arresto compresi, è lo stesso condiviso col bot TRPS: pagine Setup e Il bot TRPS). E lo scenario di margine: anche qui il what-if fa da cancello a ogni ordine, ma la posizione delta-hedged ha la proprietà gradevole (pagina TRPS vs DHCS) che il requisito resta relativamente stabile proprio perché i futures compensano le opzioni negli scenari del modello — il bot DHCS, in pratica, non ha mai visto un rifiuto per margine in condizioni in cui quello TRPS arrancava.