>_ DevTrendsit

Lingua

Home

Linguaggi

Sezioni

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Sicurezza
Jupyter

Come calcolare rischi e prezzi dei derivati in Python alla velocità del C++

Se hai mai provato a scrivere modelli finanziari per la valutazione di opzioni, swap o obbligazioni in Python, probabilmente ti sei trovato di fronte a un noto dilemma. Da un lato c'è il Python puro, lento, dove le simulazioni Monte Carlo richiedono troppo tempo. Dall'altro ci sono librerie pesanti come QuantLib con wrapper C++, dove leggere il codice sorgente o eseguire il debug del comportamento del modello diventa un compito tutt'altro che banale.

La libreria FinancePy offre un approccio alternativo. È stata creata da Dominic O'Kane, ex professore di finanza alla EDHEC Business School con dodici anni di esperienza nel settore finanziario. Il suo obiettivo era sviluppare uno strumento aperto dove tutto il codice è scritto in Python, e i risultati dei calcoli si avvicinano il più possibile a quelli dei sistemi professionali come Bloomberg.

Come è strutturato il progetto

L'architettura della libreria ruota attorno a un concetto chiaro. Qualsiasi calcolo di valutazione è descritto dalla formula:

Valutazione = Prodotto + Modello + Mercato

Nel codice, questo appare logico. I moduli della libreria sono suddivisi in diverse directory principali:

  • utils: date, calendari finanziari e generatori di scadenzari di pagamento
  • market: curve dei tassi d'interesse, superfici di volatilità e prezzi di mercato
  • models: modelli matematici di valutazione, dal Black-Scholes al modello di Vasicek
  • products: strumenti specifici, suddivisi in categorie come Bonds, Credit, Equity, FX e Rates

Ogni prodotto ha un metodo value(). Crei un oggetto strumento finanziario, gli passi un modello e la situazione attuale del mercato, e poi ottieni il valore o i parametri di rischio. Per la maggior parte dei prodotti, l'autore ha aggiunto simulazioni Monte Carlo. Questo aiuta a capire come funzionano i pagamenti dei contratti nel tempo.

Come viene raggiunta la velocità

FinancePy è scritto in Python puro, ma utilizza attivamente la libreria Numba. Alla prima chiamata di funzione, il compilatore JIT trasforma la matematica del modello in codice macchina. Per questo motivo, la prima importazione di un modulo potrebbe richiedere un paio di secondi.

Tuttavia, tutte le chiamate successive richiedono frazioni di millisecondo. Le funzioni compilate vengono memorizzate nella cache. Il risultato è che ottieni velocità a livello di C/C++ mantenendo la possibilità di aprire un file di codice sorgente e leggere l'algoritmo riga per riga senza dover compilare Cython o scrivere estensioni C.

Un esempio chiaro e notebook

L'installazione avviene con una chiamata pip standard:

pip install financepy

Puoi poi importare le utility per le date:

from financepy.utils import Date

start_date = Date(19, 2, 2026)
future_date = start_date.add_days(2)
print(future_date) # 21-FEB-2026

Gli sviluppatori non dovranno indovinare le firme delle funzioni dal codice sorgente. Nel repository troverai oltre 90 Jupyter notebook con esempi pronti all'uso. Questi contengono scenari dettagliati: dalla valutazione base di obbligazioni societarie e opzioni barriera su valute fino alla costruzione di curve di sconto complesse e credit default swap.

Stile del codice e contributi

L'autore evita deliberatamente l'ereditarietà complessa e l'architettura sovraccarica. La leggibilità e le prestazioni sono prioritarie rispetto ai trucchi linguistici intelligenti. Un semplice ciclo for nel codice FinancePy è preferito a una complessa list comprehension, poiché Numba ottimizza i cicli regolari in modo più efficace.

Se vuoi inviare una pull request al progetto, l'autore ha requisiti chiari:

  • Rigorosa conformità allo standard PEP8
  • Commenti chiari per ogni funzione e classe
  • Presenza di test unitari e almeno un test di integrazione per ogni metodo

Vale la pena usarlo

FinancePy è adatto ad analisti quantitativi, gestori di rischi e portafogli che necessitano di uno strumento chiaro per una rapida verifica di prezzi e sensibilità. Il progetto sarà utile anche per studenti e insegnanti di corsi di finanza per l'apprendimento della matematica dei derivati.

Il progetto richiede solo NumPy, SciPy e Numba come dipendenze. La licenza GPL-3.0 garantisce l'accesso a tutto il codice sorgente. Il progetto è in stato beta e l'autore avvisa onestamente di possibili discrepanze nella generazione delle date o nei metodi di interpolazione rispetto ai terminali proprietari. Tuttavia, per ricerche personali, test di strategie di trading e valutazione rapida di derivati, le capacità della libreria sono più che sufficienti.

Progetti correlati