La popolarità del linguaggio di programmazione Python è dovuta, almeno in parte, alla versatilità che offre. Oltre al vasto numero di casi d'uso nello sviluppo web e di app, Python fornisce gli strumenti per costruire e implementare qualsiasi tipo di modello scientifico o matematico, indipendentemente dall'origine o dal tipo di dati.
Questa versatilità è resa possibile dall'ampia libreria standard che offre una gamma di servizi intesi a migliorare la funzionalità e la portabilità del linguaggio. Per applicazioni più specifiche, Python Package Index (PyPI) fornisce pacchetti aggiuntivi che estendono le capacità di Python per soddisfare le esigenze di ciascun dominio.
Per questi motivi, Python ha dimostrato di essere uno strumento formidabile nello sviluppo di nuove tecnologie finanziarie. Dall'analisi dei numeri grezzi alla creazione di interfacce utente grafiche (GUI) esteticamente gradevoli ma intuitive, esiste una miriade di pacchetti per aiutare gli utenti a creare i propri modelli finanziari. In questo articolo, metterò in evidenza i miei 10 migliori pacchetti per la finanza e la modellazione finanziaria con alcuni esempi di base.
Le migliori librerie Python Per La Finanza
Il campo delle tecnologie finanziarie è vasto e comprende di tutto, dalle assicurazioni, prestiti e trading, all'e-banking e altri servizi di pagamento. Questo articolo si concentra su applicazioni specifiche per la finanza quantitativa, che richiedono attività di programmazione come l'importazione e la trasformazione dei dati, le serie temporali e l'analisi dei rischi, il trading e il backtesting, l'integrazione con Excel e la visualizzazione dei dati.
Iniziamo
# 1 NumPy
Alla base, tutti i modelli finanziari si basano su numeri masticabili. I primi pochi pacchetti che ho nell'elenco forniscono il framework per farlo. Il primo è NumPy. NumPy è il pacchetto più essenziale per il calcolo scientifico e matematico in Python. Non solo introduce array e matrici n-dimensionali in Python, ma contiene anche alcune funzioni matematiche di base per manipolare queste strutture di dati. La maggior parte dei pacchetti Python di livello superiore per la finanza menzionati più avanti in questo elenco dipendono da NumPy.
Ad esempio, per creare due matrici complesse 2×2 e stampare la somma:
import numpy as np
a = np.array([[1+2j, 2+1j], [3, 4]])
b = np.array([[5, 6+6j], [7, 8+4j]])
print(a+b)
Produzione:
[[6.+2.j 8.+7.j]
[10.+0.j 12.+4.j]]
E per prendere il complesso coniugato di uno di loro:
np.conj(a)
Ulteriori informazioni su come viene utilizzato NumPy sono disponibili qui.
# 2 SciPy
Il pacchetto NumPy fornisce strutture matematiche di base per la manipolazione e l'archiviazione dei dati. Ma per costruire modelli sofisticati basati su questi dati, è necessario un deposito di strumenti e operazioni statistici più avanzati. Entra in gioco SciPy . Questo pacchetto fornisce funzioni e algoritmi fondamentali per i calcoli scientifici avanzati necessari per costruire qualsiasi modello statistico. Questi includono algoritmi per l'interpolazione, l'ottimizzazione, il clustering, la trasformazione e l'integrazione dei dati. Queste operazioni sono essenziali quando si esegue qualsiasi tipo di analisi dei dati o si costruisce qualsiasi tipo di modello predittivo.
Per dimostrare l'interpolazione, utilizzo prima NumPy per creare alcuni punti dati con una funzione arbitraria, quindi confronto diversi metodi di interpolazione:
from scipy.interpolate import interp1d
import pylab
x = np.linspace(0, 5, 10)
y = np.exp(x) / np.cos(np.pi * x)
f_nearest = interp1d(x, y, kind='nearest')
f_linear = interp1d(x, y)
f_cubic = interp1d(x, y, kind='cubic')
x2 = np.linspace(0, 5, 100)
pylab.plot(x, y, 'o', label='data points')
pylab.plot(x2, f_nearest(x2), label='nearest')
pylab.plot(x2, f_linear(x2), label='linear')
pylab.plot(x2, f_cubic(x2), label='cubic')
pylab.legend()
pylab.show()
# 3 Pandas
NumPy e SciPy gettano le basi matematiche. Il pacchetto pandas , invece, stabilisce una struttura dati intuitiva e di facile utilizzo, un DataFrame, specificamente progettato per l'analisi e la costruzione di modelli. Si basa sugli array introdotti da NumPy ed è ottimizzato per dati tabulari, multidimensionali ed eterogenei. Le manipolazioni più comuni, come groupby, unione, unione o riempimento, sostituzione e assegnazione di valori nulli, possono essere eseguite in una singola riga. Inoltre, il pacchetto fornisce funzioni per l'importazione di dati da una varietà di formati standard e altri per il tracciamento rapido, il recupero di statistiche di base o l'output di dati.
Per creare un DataFrame:
import pandas as pd
df_1 = pd.DataFrame({'col1': [1,2], 'col2': [3,4]})
E per concatenare due dataframe insieme:
df_2 = pd.DataFrame({'col3': [5,6], 'col4': [7,8]})
df = pd.concat([df_1,df_2], asse = 1)
Output:
col1 col2 col3 col4
0 1 3 5 7
1 2 4 6 8
Per eseguire una semplice operazione di filtraggio, estraendo la riga che soddisfa la condizione logica:
df[df.col3 == 5]
Ulteriori esempi possono essere trovati nella documentazione qui .
# 4 statsmodels
SciPy fornisce una libreria di strumenti statistici che consentono agli utenti di costruire un modello e panda lo rende facile da implementare. Il pacchetto statsmodels si basa su questi pacchetti implementando test più avanzati di diversi modelli statistici. Per ogni modello è disponibile un ampio elenco di statistiche e diagnostica dei risultati per ogni stimatore, con l'obiettivo di fornire all'utente un quadro completo delle prestazioni del modello. I risultati vengono confrontati con i pacchetti statistici esistenti per garantire che siano corretti.
Ad esempio, importo un set di dati integrato:
import numpy as np
import statsmodels.api as sm
rand_data = sm.datasets.randhie.load(as_pandas=False)
rand_exog = rand_data.exog.view(float).reshape(len(rand_data.exog), -1)
rand_exog = sm.add_constant(rand_exog, prepend=False)
E per adattare il set di dati con un modello di Poisson:
poisson_mod = sm.Poisson(rand_data.endog, rand_exog)
poisson_res = poisson_mod.fit(method="newton")
print(poisson_res.summary())
L'output dovrebbe essere simile a questo:
Maggiori informazioni possono essere trovate qui .
#5 Quandl
Finora i pacchetti che ho elencato sono imparziali rispetto al tipo di dato considerato. Naturalmente, quando si considerano i modelli finanziari, abbiamo bisogno di dati finanziari. È qui che Quandl viene in soccorso. Il modulo Quandl Python offre agli utenti l'accesso alla vasta raccolta di dati economici, finanziari e di mercato raccolti da banche centrali, governi, organizzazioni multinazionali e molte altre fonti. La maggior parte dei set di dati non elaborati è accessibile gratuitamente al momento della registrazione (è necessaria una chiave API), con set di dati più avanzati e approfonditi disponibili a pagamento.
La documentazione del pacchetto può essere trovata qui .
# 6 Zipline
Zipline è un pacchetto che unisce le statistiche, le strutture dei dati e le fonti di dati. È una formidabile libreria di trading algoritmico per Python, evidente dal fatto che alimenta Quantopian, una piattaforma gratuita per la creazione e l'esecuzione di strategie di trading. I dati di Quandl vengono facilmente importati e gli algoritmi personalizzati sono facilmente progettati, testati e implementati. Ciò include il backtesting degli algoritmi e il trading dal vivo. Un algoritmo di base è simile a questo:
from zipline.api import order, record, symbol
def initialize(context):
passdef handle_data(context, data):
order(symbol('AAPL'), 10)
record(AAPL=data.current(symbol('AAPL'), 'price'))
Importiamo le funzioni order, record e symbol da zipline, per costruire un algoritmo che registra il prezzo delle azioni di Apple. Per altri esempi di algoritmi, consulta la documentazione .
#7 Pyfolio
Dopo aver progettato e testato un algoritmo in zipline, il pacchetto pyfolio fornisce un modo semplice per generare un riscontro contenente le statistiche sulle prestazioni. Queste statistiche includono rendimenti annuali/mensili, quantili di rendimento, rapporti rolling beta/Sharpe, rotazione del portafoglio e altro ancora. Per generare un riscontro di pubblicazione campione su un singolo supporto:
import pyfolio as pf
stock_rets = pf.utils.get_symbol_rets('FB')
pf.create_returns_tear_sheet(stock_rets, live_start_date='2015-12-1')
L'output sarà una serie di tabelle e grafici contenenti le metriche delle prestazioni.
La documentazione ha alcuni altri esempi che vanno più in dettaglio.
#8 TA-Lib
I prossimi due pacchetti sono alternative all'utilizzo di zipline e pyfolio. La prima è la Technical Analysis Library, o TA-Lib in breve. Il progetto è scritto in C++, ma esiste un wrapper per Python . Come zipline, TA-Lib fornisce strumenti finanziari comuni come studi di sovrapposizione, indicatori di momentum, indicatori di volume, indicatori di volatilità, trasformazioni di prezzo, indicatori di ciclo, riconoscimento di modelli e funzioni statistiche pure.
Ecco un esempio di codice Python che utilizza la libreria TA-Lib per calcolare e visualizzare l'indice di forza relativa (RSI) di un'azione:
import talib
import yfinance as yf
import matplotlib.pyplot as plt
# leggi i dati storici di un'azione utilizzando yfinance
ticker = 'AAPL'
data = yf.download(ticker, start='2020-01-01', end='2022-03-22')
# calcola l'indice di forza relativa (RSI) utilizzando TA-Lib
rsi = talib.RSI(data['Close'])
# disegna un grafico a linee dell'RSI
plt.plot(data.index, rsi)
plt.title(f'Indice di forza relativa (RSI) di {ticker}')
plt.xlabel('Data')
plt.ylabel('RSI')
plt.show()
In questo esempio, si importa la libreria TA-Lib, la libreria yfinance per leggere i dati storici di un'azione e la libreria Matplotlib per disegnare un grafico a linee dell'RSI. Si leggono i dati storici di un'azione utilizzando yfinance, e si calcola l'RSI utilizzando la funzione RSI() di TA-Lib. Un elenco completo delle funzionalità è disponibile qui .
#9 QuantLib
La seconda alternativa a zipline e pyfolio è QuantLib. Simile a TA-Lib, QuantLib è scritto in C++ e quindi esportato in Python. Il progetto QuantLib mira a creare una libreria open source gratuita per la modellazione, il trading e la gestione del rischio. Il pacchetto contiene strumenti per progettare e implementare algoritmi avanzati che includono funzionalità come convenzioni di mercato, modelli di curve di rendimento, risolutori, PDE, Monte Carlo e altri.
Il progetto esiste da quasi 20 anni e c'è un'ampia documentazione .
#10 Matplotlib
I suddetti pacchetti Python per la finanza stabiliscono fonti di dati finanziari, strutture di dati ottimali per dati finanziari, nonché modelli statistici e meccanismi di valutazione. Ma nessuno fornisce uno degli strumenti Python più importanti per la modellazione finanziaria: la visualizzazione dei dati (tutte le visualizzazioni in questo articolo sono fornite da matplotlib ).
La visualizzazione non è importante solo per comprendere le tendenze all'interno dei dati finanziari, ma anche per trasmettere approfondimenti al personale non tecnico. Esistono più di pochi pacchetti di visualizzazione dei dati all'interno di Python, ciascuno con aspetti positivi e negativi (vedere il mio articolo qui ), ma il più semplice da implementare per la modellazione finanziaria è matplotlib. Ciò è dovuto principalmente al fatto che molti dei pacchetti in questo elenco si basano già su matplotlib. Inoltre, la documentazione è abbondante e la sintassi semplice e diretta.
Esempio :
import matplotlib.pyplot as plt
import pandas as pd
# leggi i dati finanziari da un file CSV
data = pd.read_csv('dati_finanziari.csv')
# crea un grafico a linee con i dati finanziari
plt.plot(data['anno'], data['ricavi'], label='Ricavi')
plt.plot(data['anno'], data['utile_netto'], label='Utile netto')
# aggiungi un titolo al grafico e una legenda
plt.title('Dati finanziari di un\'azienda')
plt.xlabel('Anno')
plt.ylabel('Valore')
plt.legend()
# mostra il grafico
plt.show()
Conclusione sulle migliori libreire python per la finanza
In questo articolo si è analizzata la popolarità del linguaggio di programmazione Python, attribuendola in parte alla versatilità che offre. Oltre alla vasta gamma di casi d'uso nello sviluppo web e di app, Python fornisce gli strumenti per la costruzione e l'implementazione di qualsiasi tipo di modello scientifico o matematico, indipendentemente dall'origine o dal tipo di dati. Questa versatilità è resa possibile dall'ampia libreria standard che offre una serie di funzioni volte a migliorare la funzionalità e la portabilità del linguaggio. Per applicazioni più specifiche, l'indice del pacchetto Python (PyPI) fornisce pacchetti aggiuntivi che estendono le capacità di Python per soddisfare le esigenze di ogni dominio.
Queste caratteristiche hanno reso Python uno strumento formidabile nello sviluppo di nuove tecnologie finanziarie. Dalla gestione di numeri grezzi alla creazione di interfacce utente grafiche (GUI) esteticamente piacevoli ma intuitive, esistono numerose librerie per aiutare gli utenti a costruire i propri modelli finanziari. In questo articolo sono stati evidenziati i 10 migliori pacchetti per la finanza e la modellizzazione finanziaria, con alcuni esempi di base.
Comments