Trading algoritmico con Python - pagina 24

 

Tecniche del modello di regressione lineare con Python, NumPy, panda e Seaborn


Tecniche del modello di regressione lineare con Python, NumPy, panda e Seaborn

In questo video esploreremo alcune semplici tecniche di regressione in Python. Sono disponibili diversi strumenti per implementare la regressione in Python, ma ci concentreremo su un paio di essi, in particolare utilizzando NumPy. Tieni presente che questo tutorial non intende essere esaustivo e non eseguiremo alcun test statistico. Inseriremo semplicemente una linea e visualizzeremo l'output.

È possibile scaricare il notebook dal collegamento fornito nella descrizione del video su GitHub per proseguire. Iniziamo configurando il nostro ambiente e importando le librerie necessarie. Useremo NumPy, panda, l'API di Yahoo Finance per recuperare dati in tempo reale, matplotlib per la visualizzazione e seaborn per applicare un tema ai nostri grafici.

Successivamente, dobbiamo recuperare i dati. Otterremo dati per Google e l'ETF S&P 500, risalenti a circa un anno fa. A tale scopo utilizzeremo il lettore di dati Pandas e l'API di Yahoo Finance. Una volta che abbiamo i dati, possiamo dargli una rapida occhiata. Poiché per la nostra analisi siamo interessati solo ai prezzi "chiusi", adegueremo i dati di conseguenza.

Per eseguire la regressione, calcoleremo il tasso di rendimento istantaneo sia per Google che per l'ETF S&P 500. Dopo aver eliminato eventuali valori non validi, siamo pronti per calcolare la correlazione tra le due variabili. Scopriamo che sono fortemente correlati, ma non cercheremo di determinare la causalità in questa analisi. Considereremo invece lo S&P 500 come la variabile indipendente.

Per semplificare la visualizzazione, campioneremo un sottoinsieme più piccolo di punti dati. In questo caso, campioniamo casualmente 60 rendimenti e osserviamo la correlazione, che rimane simile al set di dati complessivo. Procediamo quindi a visualizzare i dati tracciando un grafico a dispersione con l'S&P 500 sull'asse x e Google sull'asse y.

Passando alla regressione, adatteremo un modello lineare utilizzando la funzione polyfit di NumPy. Passiamo i dati del campione, con l'S&P 500 come variabile indipendente e Google come variabile dipendente, insieme al grado del nostro polinomio (1 per regressione lineare semplice). Questo ci dà la pendenza e l'intercetta y della linea più adatta, che può essere interpretata come il valore beta.

Per tracciare la linea di tendenza, usiamo la funzione polivale di NumPy, passando la regressione e la variabile indipendente. Possiamo sovrapporre questa linea di tendenza al grafico a dispersione. Inoltre, la regressione può essere utilizzata come indicatore tecnico per prevedere i prezzi futuri. In questo esempio, regrediamo i prezzi di chiusura dell'S&P 500 rispetto al tempo.

Dopo aver ottenuto i coefficienti di regressione, possiamo calcolare i valori previsti per punti temporali futuri. Tracciamo i dati effettivi rispetto al tempo, aggiungiamo la linea di tendenza e creiamo un canale aggiungendo e sottraendo una deviazione standard dal modello lineare. Questo canale fornisce una rappresentazione visiva dell'intervallo di confidenza della previsione.

Infine, dimostriamo come effettuare previsioni per punti temporali specifici utilizzando il modello di regressione. Creando un oggetto poly1d con i coefficienti di regressione, possiamo inserire un valore (che rappresenta un punto temporale futuro) e ottenere il valore previsto. Citiamo anche brevemente il regplot di Seaborn, che fornisce un modo alternativo per visualizzare il grafico a dispersione con una linea di tendenza e un intervallo di confidenza.

Seguendo questo tutorial, puoi iniziare con la regressione lineare in Python ed esplorare varie tecniche per l'analisi e la previsione.

Ora che abbiamo coperto le basi della regressione lineare in Python, esploriamo alcune tecniche e concetti aggiuntivi.

Un aspetto importante dell'analisi di regressione è la valutazione della bontà di adattamento del modello. In altre parole, quanto bene la retta di regressione lineare rappresenta la relazione tra le variabili? Esistono varie misure statistiche che possono essere utilizzate per valutare l'adattamento, come il valore R-quadrato, che indica la proporzione della varianza nella variabile dipendente che può essere spiegata dalle variabili indipendenti.

Per calcolare il valore R-quadrato, possiamo usare la libreria statsmodels in Python. Importeremo il modulo necessario e adatteremo il modello di regressione lineare ai nostri dati. Quindi, possiamo estrarre il valore R-squared utilizzando l'attributo rsquared del modello.

Dimostriamolo con un esempio. Supponiamo di avere un set di dati con due variabili, X e Y, e di voler adattare un modello di regressione lineare per prevedere Y in base a X. Useremo la funzione sm.OLS (Ordinary Least Squares) dalla libreria statsmodels per eseguire la regressione analisi.

Innanzitutto, importiamo i moduli richiesti:

import statsmodels.api as sm
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
Successivamente, carichiamo i dati in un DataFrame panda ed estraiamo le variabili X e Y:

data = pd.read_csv( 'data.csv' )
X = data[ 'X' ]
Y = data[ 'Y' ]
Quindi aggiungiamo un termine costante alla variabile indipendente X. Ciò è necessario affinché la libreria statsmodels includa il termine di intercetta nel modello di regressione:

X = sm.add_constant(X)
Ora possiamo adattare il modello di regressione lineare e calcolare il valore R-quadrato:

model = sm.OLS(Y, X).fit()
r_squared = model.rsquared
Infine, possiamo stampare il valore R-quadrato per valutare la bontà dell'adattamento:

print( "R-squared:" , r_squared)
Il valore R-quadrato varia da 0 a 1, con 1 che indica un adattamento perfetto. Generalmente, un valore R al quadrato più alto suggerisce un migliore adattamento del modello ai dati.

Oltre al valore R-quadrato, è anche importante esaminare i grafici residui per verificare eventuali modelli o tendenze che potrebbero indicare violazioni delle ipotesi di regressione lineare. I residui sono le differenze tra i valori osservati e previsti della variabile dipendente. Un buon modello di regressione lineare dovrebbe avere residui casuali e uniformemente distribuiti intorno allo zero.

Per visualizzare i residui, possiamo tracciare un grafico a dispersione dei valori previsti rispetto ai residui. Se il grafico mostra uno schema o qualsiasi deviazione sistematica dalla casualità, suggerisce che il modello di regressione lineare potrebbe non essere appropriato per i dati.

Per creare il grafico residuo, possiamo usare la libreria matplotlib in Python:

predicted_values = model.predict(X)
residuals = Y - predicted_values

plt.scatter(predicted_values, residuals)
plt.axhline(y= 0 , color= 'r' , linestyle= '-' )
plt.xlabel( 'Predicted Values' )
plt.ylabel( 'Residuals' )
plt.title( 'Residual Plot' )
plt.show()
Il grafico a dispersione dei valori previsti rispetto ai residui dovrebbe mostrare un modello simile a una nuvola senza una struttura o tendenza chiara. Se osserviamo modelli distinti, come una forma curva o uno spread in aumento/diminuzione, ciò suggerisce che le ipotesi di regressione lineare potrebbero non essere valide.

In conclusione, la regressione lineare è una tecnica potente e ampiamente utilizzata per modellare la relazione tra variabili. Adattando una linea di regressione ai dati, possiamo fare previsioni e ottenere informazioni sulla variabile dipendente in base alle variabili indipendenti. È importante valutare la bontà dell'adattamento utilizzando misure come il valore R-quadrato e controllare i grafici residui per valutare la validità del modello di regressione.

Linear Regression Model Techniques with Python, NumPy, pandas and Seaborn
Linear Regression Model Techniques with Python, NumPy, pandas and Seaborn
  • 2021.07.05
  • www.youtube.com
#Python #Regression #NumPyhttps://alphabench.com/data/python-linear-regression.html✅ Please SUBSCRIBE:https://www.youtube.com/subscription_center?add...
 

Come calcolare la volatilità del portafoglio di investimenti azionari con Python, NumPy e Panda


Come calcolare la volatilità del portafoglio di investimenti azionari con Python, NumPy e Panda

In questo video, il presentatore mostra come calcolare la volatilità di un portafoglio di investimenti utilizzando Python e include le equazioni matematiche alla base. L'attenzione si concentra su un portafoglio a due titoli, poiché è facilmente calcolabile su un calcolatore portatile. Tuttavia, il presentatore menziona che per i portafogli con più di tre titoli, la moltiplicazione della matrice viene utilizzata per calcolare la volatilità. Il relatore utilizza la libreria NumPy e altre librerie di supporto per eseguire i calcoli.

Il video inizia con la configurazione dell'ambiente Python e l'importazione dei moduli necessari. Il relatore definisce quindi le variabili che verranno utilizzate durante il processo.

Per ottenere dati in tempo reale per il portafoglio, il relatore menziona l'uso di un'API e dimostra in modo specifico l'utilizzo di dati storici di fine giornata. Spiegano che è necessaria una chiave API per accedere ai dati e forniscono istruzioni su come registrarsi e ottenere la chiave. La data di inizio per i dati è fissata a circa un anno fa. Il presentatore imposta il portafoglio, assegna pesi uguali a ciascun titolo e crea un elenco vuoto per archiviare i dati scaricati.

Utilizzando un ciclo for, il relatore effettua chiamate API per ogni simbolo nel portfolio e recupera i dati. Dimostrano come costruire la chiamata API ottenendo l'URL dell'endpoint dal sito Web del fornitore di dati e apportando le modifiche necessarie. I dati vengono recuperati come una stringa JSON, che viene convertita in un DataFrame panda per un'ulteriore elaborazione. I prezzi di chiusura vengono estratti dal DataFrame e aggiunti alla lista dei dati.

Dopo aver completato il ciclo for, il presentatore converte l'elenco di dati in un DataFrame, lo traspone, rinomina le colonne con i nomi dei simboli e modifica l'indice in date. Quindi visualizzano il DataFrame risultante contenente i prezzi di chiusura per ciascun titolo.

Per calcolare la volatilità, il presentatore spiega che è necessario calcolare i tassi di rendimento istantanei. Creano un nuovo DataFrame utilizzando la funzione logaritmica di NumPy sui prezzi di chiusura e quindi calcolano le differenze tra valori consecutivi. Il DataFrame risultante rappresenta i tassi di rendimento istantanei per ciascun titolo. Il presentatore rimuove la prima riga del DataFrame per gestire qualsiasi valore NaN e dimostra il calcolo della varianza per ogni titolo.

Per calcolare la volatilità di ogni titolo, il presentatore utilizza la radice quadrata della varianza. Visualizzano le volatilità risultanti come percentuali.

Per la volatilità del portafoglio, il presentatore spiega che può essere calcolata come media ponderata delle volatilità di ciascun titolo. Poiché i titoli nell'esempio hanno la stessa ponderazione, il presentatore ha bisogno solo della media delle volatilità. Lo formattano come percentuale.

Successivamente, il relatore introduce il concetto di matrice di covarianza e dimostra come calcolarla utilizzando il DataFrame restituito. Adattano la covarianza giornaliera a una covarianza annuale e visualizzano la matrice di covarianza risultante.

Infine, il presentatore calcola la volatilità del portafoglio utilizzando la moltiplicazione di matrici. Moltiplicano i pesi per la matrice di covarianza e calcolano la radice quadrata del risultato. La volatilità del portafoglio viene visualizzata in percentuale, che rappresenta la deviazione standard.

In conclusione, il video fornisce una dimostrazione dettagliata di come calcolare la volatilità del portafoglio utilizzando Python. Il presentatore spiega i calcoli necessari, introduce librerie pertinenti come NumPy e sottolinea i vantaggi della diversificazione nella riduzione della volatilità del portafoglio.

How to Calculate Stock Investment Portfolio Volatility with Python, NumPy & Pandas
How to Calculate Stock Investment Portfolio Volatility with Python, NumPy & Pandas
  • 2021.08.18
  • www.youtube.com
#python #numpy #pandaslearn how to use Python and NumPy to calculate investment portfolio volatilityhttps://alphabench.com/data/python-portfolio-volatil...
 

Guida introduttiva a Steamlit per Python: crea un'app Web funzionante in pochi minuti



Guida introduttiva a Steamlit per Python: crea un'app Web funzionante in pochi minuti

In questo video, dimostrerò come utilizzare Streamlit per Python per creare un'app Web. Streamlit è un'interfaccia utente basata sul Web che è gratuita e ti consente di creare e condividere app di alta qualità senza alcuna esperienza di sviluppo front-end. Costruiremo una semplice app che ci consentirà di scaricare i dati sui prezzi delle azioni utilizzando un'API e rappresentarli graficamente. Iniziamo!

Innanzitutto, userò PyCharm come IDE, ma puoi usare qualsiasi IDE di tua scelta. Se non hai familiarità con PyCharm, ho fornito un collegamento nella descrizione del video per un video "Introduzione a PyCharm". Sentiti libero di dare un'occhiata se vuoi saperne di più.

Ho già creato un nuovo progetto in PyCharm chiamato "Streamlit Demo" e ho aggiunto un file Python. Poiché stiamo iniziando con un nuovo ambiente virtuale, dobbiamo installare alcune dipendenze. Avremo bisogno di Panda, della libreria Richieste e di Streamlit. A seconda della configurazione di PyCharm, potresti aver già installato Panda e Requests, ma dovrai sicuramente installare Streamlit. Inoltre, utilizzeremo l'API "End of Day Historical Data" per la nostra app, che consente chiamate API gratuite con un limite di circa 20 al giorno. Se hai bisogno di più di questo, offrono opzioni di abbonamento sul loro sito web.

Una volta installato Streamlit, diamo un'occhiata alla loro applicazione di esempio. Aprirò il terminale ed eseguirò Streamlit chiamando Python dalla riga di comando e quindi eseguendo il comando Streamlit. La loro applicazione di esempio è in un file chiamato "ciao". Dopo alcuni secondi, l'applicazione si avvierà e vedrai una pagina web con un'intestazione, del testo e collegamenti ipertestuali. Sul lato sinistro, ci sono varie dimostrazioni che puoi esplorare. La cosa bella delle loro demo è che forniscono il codice utilizzato per generare l'output. Ad esempio, c'è una demo con un grafico e, sotto di esso, puoi vedere il codice utilizzato per generare quel grafico. Streamlit si occupa della formattazione e del posizionamento dei contenuti nella pagina Web, quindi devi solo concentrarti sulla scrittura del codice per produrre l'output desiderato.

Una volta che sei soddisfatto della tua applicazione, puoi richiedere l'autorizzazione a Streamlit per pubblicarla dal vivo. Offrono ancora la pubblicazione gratuita, ma è necessario contattarli per configurarla. Successivamente, puoi inviare i tuoi file a GitHub e condividere la tua applicazione live in pochi secondi.

Ora passiamo alla creazione della nostra applicazione. Dimostrerò alcune funzionalità di Streamlit prima di iniziare a scrivere il codice dell'applicazione. Streamlit fornisce vari elementi che puoi utilizzare, come pulsanti, selettori di colori, barre laterali, caselle di testo e selettori di data. L'elemento più comunemente utilizzato è la funzione "scrittura", che consente di visualizzare il testo sulla pagina web. Puoi anche utilizzare la sintassi markdown all'interno della funzione "write" per formattare il testo. Inoltre, se desideri visualizzare testo in formato libero, puoi semplicemente utilizzare una docstring e Streamlit lo renderà come markdown.

Proviamo alcune di queste funzionalità scrivendo un'app di base. Definirò alcune dipendenze e poi ti mostrerò come utilizzare gli elementi Streamlit. Inizieremo con la funzione "st" ed esploreremo le sue diverse capacità. Ad esempio, possiamo utilizzare "st.button" per visualizzare un pulsante, "st.color_picker" per un selettore di colori e "st.sidebar" per creare una barra laterale. La funzione "write" è anche abbastanza utile per visualizzare il testo e puoi usare la sintassi markdown al suo interno. Dimostrerò queste caratteristiche comuni, ma tieni presente che Streamlit offre molte più opzioni.

Per eseguire l'applicazione, fermerò l'attuale server Streamlit e lo riavvierò eseguendo il comando Python con il nome.

Ecco un esempio di una semplice app Streamlit che ti consente di scaricare e rappresentare graficamente i dati sui prezzi delle azioni:

import streamlit as st
import pandas as pd
import requests

# Set the title and page layout
st.title( "Stock Price Data" )
st.sidebar.header( "Settings" )

# Create input fields in the sidebar
symbol = st.sidebar.text_input( "Enter a stock symbol (e.g., AAPL)" , value= "AAPL" )
start_date = st.sidebar.text_input( "Enter the start date (YYYY-MM-DD)" , value= "2022-01-01" )
end_date = st.sidebar.text_input( "Enter the end date (YYYY-MM-DD)" , value= "2022-12-31" )

# Create a button to trigger the data retrieval
if st.sidebar.button( "Get Data" ):
     # Make an API request to retrieve the stock price data
    url = f " https://api.example.com/stock/ {symbol}/history?start_date={start_date}&end_date={end_date}"
    response = requests.get(url)
    
     # Check if the API request was successful
     if response.status_code == 200 :
        data = response.json()
        df = pd.DataFrame(data)
        
         # Display the downloaded data
        st.write(df)
        
         # Create a line chart of the stock prices
        st.line_chart(df[ "close" ])
     else :
        st.write( "Error retrieving data from the API" )

# Add some additional information to the sidebar
st.sidebar.info( "This is a simple app to download and graph stock price data." )
st.sidebar.info( "Enter the stock symbol and date range, then click 'Get Data' to retrieve the data." )

In questo esempio, per prima cosa importiamo le librerie necessarie: Streamlit, Pandas e Requests. Quindi impostiamo il titolo e il layout della pagina utilizzando le funzioni st.title() e st.sidebar.header().

Successivamente, creiamo campi di input nella barra laterale utilizzando la funzione st.sidebar.text_input(). Gli utenti possono inserire un simbolo azionario, una data di inizio e una data di fine in questi campi.

Quindi creiamo un pulsante utilizzando la funzione st.sidebar.button(). Quando si fa clic sul pulsante, si attiva il processo di recupero dei dati. Costruiamo l'URL della richiesta API utilizzando il simbolo inserito, la data di inizio e la data di fine. Facciamo una richiesta GET all'API usando la funzione request.get().

Se la richiesta API ha esito positivo (codice di stato 200), recuperiamo i dati dalla risposta e creiamo un DataFrame Pandas. Visualizziamo i dati scaricati utilizzando la funzione st.write(), quindi creiamo un grafico a linee dei prezzi delle azioni utilizzando la funzione st.line_chart().

Se la richiesta API fallisce, viene visualizzato un messaggio di errore utilizzando la funzione st.write().

Infine, aggiungiamo alcune informazioni aggiuntive alla barra laterale utilizzando la funzione st.sidebar.info().

Per eseguire questa app, puoi salvarla in un file Python (ad es. stock_app.py) ed eseguirla utilizzando il comando streamlit run stock_app.py nel tuo terminale.

Questo è solo un esempio di base e puoi personalizzarlo ulteriormente in base alle tue esigenze. Streamlit offre molte più funzionalità per la creazione di app Web interattive, inclusi menu a discesa, caselle di controllo, dispositivi di scorrimento e altro ancora. È possibile esplorare la documentazione di Streamlit ( https://docs.streamlit.io/ ) per ulteriori informazioni ed esempi.

Getting Started with Steamlit for Python - Build a Functioning Web App in Minutes
Getting Started with Steamlit for Python - Build a Functioning Web App in Minutes
  • 2021.10.18
  • www.youtube.com
#python #streamlitHow to use streamlit - full-featured GUI for Pythonhttps://alphabench.com/data/python-streamlit-app.html*Please SUBSCRIBE:https://www.yo...
 

Utilizza l'API dei dati storici di fine giornata (EOD) per trovare l'ora del massimo/minimo giornaliero



Utilizza l'API dei dati storici di fine giornata (EOD) per trovare l'ora del massimo/minimo giornaliero

In questo video, esploreremo l'API dei dati storici di fine giornata, che ci consente di estrarre i prezzi di negoziazione massimi e minimi giornalieri per un titolo. Questa API fa parte di un modello freemium per i dati finanziari, offrendo 20 chiamate API gratuite al giorno. Il vantaggio di questa API è che fornisce l'accesso ai dati da oltre 70 scambi globali. Puoi trovare il link al loro sito web e il prezzo speciale nella descrizione del video.

Per iniziare, dobbiamo impostare il nostro ambiente. Utilizzeremo il modulo datetime per manipolare le date, la libreria helper per l'accesso ai dati storici, i panda per la manipolazione e il filtraggio dei dati e le richieste per effettuare chiamate API. Successivamente, dobbiamo ottenere la nostra chiave API, che può essere archiviata in un file o direttamente nel notebook per semplicità.

Definiremo anche la data di inizio per i nostri dati, in genere tornando indietro di circa 10 giorni. L'API ha limitazioni diverse in base al tipo di dati, con dati minuto per minuto limitati a 120 giorni e dati a intervalli di cinque minuti limitati a 600 giorni. L'API indicizza i dati utilizzando il timestamp Unix, che rappresenta il numero di secondi trascorsi dal 1 gennaio 1970. Convertiamo la data di inizio desiderata in un timestamp Unix per la richiesta API.

Una volta completata la configurazione necessaria, possiamo creare un'istanza dell'oggetto "End of Day Historical Data" utilizzando la nostra chiave API. Questo oggetto ci consente di recuperare i dati di cui abbiamo bisogno. La libreria helper fornisce vari endpoint che possono essere esplorati per diversi tipi di dati. In questo esempio, ci concentreremo sul recupero dei prezzi intraday per Tesla utilizzando intervalli di un minuto, a partire dalla data di inizio specificata.

Per visualizzare i dati, possiamo avvolgere la chiamata API in un costruttore per un DataFrame Pandas. In questo modo è più facile lavorare e visualizzare i dati. Visualizziamo le prime righe del DataFrame per verificare i dati recuperati, inclusi il timestamp Unix, la data e l'ora.

Se preferisci non utilizzare la libreria helper, il video fornisce un approccio alternativo utilizzando la libreria delle richieste per accedere direttamente all'endpoint API e recuperare i dati JSON.

Successivamente, eseguiamo alcune operazioni di pulizia dei dati. Sostituiamo l'indice basato su numeri interi con la data e l'ora dai dati. Aggiungiamo colonne separate per l'ora e la data e rimuoviamo le colonne non necessarie come l'offset GMT e l'ora della data originale. Il DataFrame risultante mostra la struttura rivista con le colonne aggiunte.

Per concentrarci sugli orari di negoziazione regolari, creiamo una copia dei dati originali. Poiché l'indice è un oggetto datetime, possiamo utilizzare il metodo between_time per filtrare gli orari desiderati. Come menziona il video, il fuso orario per questi dati è GMT-5, quindi regoliamo gli orari di conseguenza. Convertiamo anche i tempi in Eastern Time (ET) per una più facile interpretazione.

Per filtrare solo l'ora dalla colonna datetime, eseguiamo alcuni passaggi aggiuntivi. Poiché abbiamo già eseguito un calcolo, dobbiamo formattare nuovamente i dati prima di applicare il metodo datetime per estrarre l'ora. Il DataFrame risultante mostra gli orari regolati a New York City.

Infine, affrontiamo la domanda originale di quando si verificano i massimi e i minimi durante il giorno di negoziazione. Per prima cosa recuperiamo il massimo e il minimo generale per ogni giorno utilizzando la funzione groupby e i metodi min e max. Per determinare il tempo specifico di questi massimi e minimi, individuiamo rispettivamente l'indice dei valori minimo e massimo all'interno del DataFrame. Ciò fornisce informazioni sulla tempistica di questi punti di prezzo, consentendoci di osservare eventuali modelli o tendenze.

Nel complesso, questo video fornisce una guida dettagliata all'utilizzo dell'API dei dati storici di fine giornata, al recupero dei dati sui prezzi delle azioni e all'analisi dei tempi dei prezzi di negoziazione massimi e minimi.

Use End of Day (EOD) Historical Data API to Find Time of Daily High/Low
Use End of Day (EOD) Historical Data API to Find Time of Daily High/Low
  • 2021.11.22
  • www.youtube.com
@MattMacarty #python #pandas #EODHistoricalDataUse a financial services API to find the time a stock trades at it lowest or highest each dayUse a financi...
 

Come eseguire il backtest degli algoritmi di trading e delle metriche di portafoglio con Python e QuantStats



Come eseguire il backtest degli algoritmi di trading e delle metriche di portafoglio con Python e QuantStats

Oggi ti illustrerò una panoramica completa di Quant stats, un'ampia libreria di metriche finanziarie creata come strumento di profilazione del portafoglio. Con le statistiche Quant, puoi generare report dettagliati senza sforzo utilizzando solo una semplice riga. Questo strumento ti consente di misurare efficacemente le prestazioni del portafoglio e gli algoritmi di backtest di trading.

Le statistiche quantistiche si basano su note librerie di data science che potresti già conoscere e utilizzare. Per questa dimostrazione, sto lavorando in PyCharm e ho avviato un nuovo progetto. Se stai seguendo, assicurati di aver installato le dipendenze necessarie. Sto usando una versione leggermente più vecchia di Pandas perché le statistiche di Quant non vengono aggiornate da circa sei mesi e potrebbero esserci alcuni problemi di compatibilità con le ultime versioni di Pandas.

Per assicurarti di avere le dipendenze richieste, puoi aggiungerle a un file requirements.txt e installarle usando Pip. Inoltre, Quant stats è composto da tre moduli: statistiche, grafici e report. A causa dell'ampia funzionalità, non sarò in grado di coprire tutto in questo singolo video. Tuttavia, ti fornirò una panoramica e ti guiderò su come iniziare. È quindi possibile esplorare ulteriormente in base alle proprie esigenze e interessi specifici.

Prima di entrare nei dettagli, prendiamoci un momento per ascoltare il nostro sponsor. Se sei interessato a imparare come creare algoritmi di trading con Python, consenti a Looming Wealth di assisterti con il loro corso di trading algoritmico. In questo corso imparerai a creare bot che fanno trading automaticamente per tuo conto, implementare e utilizzare metriche tecniche e finanziarie e utilizzare l'apprendimento automatico per sviluppare algoritmi di trading unici. Puoi imparare al tuo ritmo o partecipare a lezioni dal vivo per un'esperienza di apprendimento collaborativo. Segui il link sottostante per saperne di più su Looming Wealth e ottenere uno sconto del 15% su uno qualsiasi dei loro corsi di trading.

Ora torniamo alle statistiche di Quant. In un nuovo file vuoto, inizia importando la libreria Quant stats. Successivamente, imposta un simbolo azionario da analizzare. Per questo esempio, userò l'ETF S&P 500 (SPY). Useremo le statistiche Quant per esaminare le sue prestazioni negli ultimi tre anni.

Per scaricare i dati sui resi, utilizzeremo Quant stats utils, che si basa sui dati di Yahoo Finance. Puoi utilizzare qualsiasi origine dati che preferisci; non c'è magia qui. Stampiamo i rendimenti per vedere cosa otteniamo. L'output sarà una serie Pandas con rendimenti giornalieri che coprono il periodo di tempo specificato.

Una volta che abbiamo i dati sui resi, possiamo calcolare varie statistiche usando le statistiche di Quant. Le funzioni disponibili sono numerose, molto più di quelle che possiamo descrivere in questo video. È possibile ottenere un elenco delle statistiche disponibili stampando l'attributo available_stats. Visualizziamo un elenco comprensivo delle statistiche disponibili, escluse le funzioni private.

Commenterò parte della comprensione dell'elenco per mantenerlo conciso. Procederemo a stampare un paio di statistiche comuni per l'S&P 500 negli ultimi tre anni. Calcoliamo il rapporto Sharpe usando qs.stats.sharpe_ratio(). Inoltre, troveremo il giorno e il mese migliori chiamando rispettivamente qs.stats.best_day() e qs.stats.best_month(). È possibile modificare queste chiamate per aggregare i dati in modo diverso, se necessario.

In alternativa, Quant stats fornisce un wrapper per Panda, consentendo di effettuare chiamate di metodo direttamente sull'oggetto portfolio. Estendendo Pandas, puoi utilizzare one-liner per accedere a varie statistiche. Ad esempio, puoi chiamare Quant stats.extend_pandas() e quindi utilizzare l'oggetto portfolio per recuperare statistiche come il rendimento lordo annuo composto e il prelievo massimo.

Oltre alle statistiche, Quant stats offre anche la possibilità di creare portafogli.

Successivamente, calcolerò i segnali in base alla strategia di crossover della media mobile. Se la media mobile veloce è al di sopra della media mobile lenta, è un segnale di acquisto. Altrimenti, è un segnale di vendita. Aggiungerò questi segnali al frame di dati.

Successivamente, calcolerò le posizioni in base ai segnali. Se è un segnale di acquisto, imposterò la posizione a 1 (indicando una posizione lunga), e se è un segnale di vendita, imposterò la posizione a -1 (indicando una posizione corta). Tutti gli altri casi saranno impostati su 0 (che indica nessuna posizione).

Ora che abbiamo le posizioni, calcolerò i rendimenti della strategia. Per fare ciò, moltiplicherò le posizioni per i rendimenti giornalieri dell'asset. Questo ci darà i rendimenti della strategia giornaliera.

Successivamente, calcolerò i rendimenti cumulativi della strategia prendendo il prodotto cumulativo dei rendimenti giornalieri. Questo ci darà la crescita della strategia nel tempo.

Infine, genererò il report utilizzando la funzione quantstats.reports.html. Questa funzione prende i dati cumulativi sui resi e genera un report HTML con varie metriche e visualizzazioni delle prestazioni. Salverò il rapporto come file HTML.

Per visualizzare automaticamente il rapporto, apro il file utilizzando il browser web. E questo è tutto per il codice.

Ora, quando esegui questo codice con i parametri scelti, genererà la strategia di crossover della media mobile, calcolerà le metriche delle prestazioni e genererà un report HTML con i risultati. È possibile personalizzare i parametri della strategia, come i periodi di media mobile o la finestra temporale, in base alle proprie esigenze.

How to Backtest Trading Algorithms and Portfolio Metrics with Python and QuantStats
How to Backtest Trading Algorithms and Portfolio Metrics with Python and QuantStats
  • 2022.12.07
  • www.youtube.com
​@MattMacarty #python #trading #algotrading How to Backtest Trading Strategies and Algorithms, Generate Portfolio Metrics✅ Please SUBSCRIBE:https://w...