Implementazione Python
Il codice di riferimento descritto nell’appendice del volume, eseguibile con Python 3.10 o successivo e basato esclusivamente sulla libreria standard.
Licenza MIT: uso libero, anche commerciale, alle condizioni indicate nel testo della licenza. Python 3.10 o successivo.
Criteri di progettazione
Tre scelte progettuali rendono esplicite le ipotesi che determinano il calcolo dell’esposizione aggregata.
Applicazione separata del segno
Le greche si calcolano senza segno di posizione. L’ipotesi di inventario interviene successivamente come parametro separato, così da poterne misurare direttamente l’effetto sui risultati.
Convenzione temporale esplicita
La convenzione temporale è un parametro esplicito, non un’ipotesi implicita. Passare da giorni di borsa a calendario, nel caso al picco con tassi e dividendi nulli, cambia il gamma di un fattore √(8.760/1.638) ≈ 2,31.
Zero gamma come radice del profilo
Il profilo viene valutato ricalcolando le greche a ogni prezzo ipotetico. La ricerca restituisce le radici associate ai cambi di segno rilevati nella griglia; radici tangenti o troppo ravvicinate rispetto al passo possono non essere individuate. La somma cumulata a spot fisso definisce invece una grandezza distinta.
Esempio d’uso
from gex import Catena, Linea, beta, moltiplicatore
catena = Catena([
Linea(6500, "call", ore_residue=2.0, iv=0.12, oi_stock=16000),
Linea(6500, "put", ore_residue=2.0, iv=0.12, oi_stock=15000),
# ...
])
catena.gex(6508) # dollari di delta per movimento dell'1%
catena.cex(6508, ore=1) # flusso da charm; negativo = acquisti
catena.zero_gamma() # cambi di segno rilevati nell'intervallo
catena.sopra_sotto(6508) # GEX sotto e sopra il prezzo, separati
catena.concentrazione(6508) # indice di Herfindahl sui pesi di gamma
catena.stock_flow(6508) # inventario preesistente e flusso corrente
# ipotesi di segno alternative, per misurarne l'effetto
catena.w_put = -0.7
catena.zero_gamma() # sensibilità del livello all'ipotesi
b = beta(catena.gex(6508), volume_dollari=300e9,
sigma_giornaliera=0.0075, orizzonte_min=5)
moltiplicatore(b) # 1/(1+beta)
esempio.py applica le funzioni alla catena illustrativa del
volume e produce i risultati attesi per il confronto.
Funzioni disponibili
| Funzione | Restituisce |
|---|---|
greche(...) |
delta, gamma, vega, theta, charm, vanna, speed, vomma, colour per una unità di sottostante. Tassi e dividendi sono inclusi in tutte le espressioni, comprese charm e vanna. |
Catena.gex / dex / vex / cex |
Le quattro esposizioni aggregate, ciascuna con la propria scala dichiarata. |
Catena.gamma_efficace |
Esposizione gamma–vanna combinata sotto una relazione specificata tra variazione dello spot e variazione della volatilità implicita. |
Catena.zero_gamma |
Radici associate ai cambi di segno rilevati nell’intervallo, raffinate per bisezione. |
Catena.per_strike / per_scadenza / sopra_sotto |
Decomposizioni per strike, scadenza e posizione relativa allo spot. |
beta / moltiplicatore |
Parametro di retroazione, ridimensionabile in funzione dell’orizzonte, e moltiplicatore di volatilità. |
size_massima / movimento_pareggio |
Dimensionamento nei due scenari quadratici implementati e pareggio gamma–theta sotto le ipotesi dichiarate. |
Script di riproduzione
Gli script impiegati per generare i dati e le figure del volume. La modifica dei parametri di configurazione aggiorna in modo coerente l’intero apparato quantitativo.
| File | Che cosa produce | |
|---|---|---|
genera-dati.py |
Profili di gamma, delta, charm e vanna; catena illustrativa; profilo GEX e controesempio a radici multiple; curva del moltiplicatore; sensibilità allo smile. | Scarica |
simulazione-seduta.py |
Ricostruzione oraria di una seduta 0DTE: open interest, GEX, CEX, zero gamma, principali strike di esposizione e retroazione. | Scarica |
dimensionamento.py |
I due criteri di dimensionamento e il loro punto di incrocio al variare del tempo residuo. | Scarica |
crypto-confronto.py |
Confronto tra le greche dei contratti inversi e quelle dei contratti vanilla, con la retroazione nei due mercati. | Scarica |