Code qui crée un graphique de drawdown basé sur des données exponentielles.
python
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from datetime import datetime
import seaborn as sns
sns.set()
J'utilise le fichier csv obtenu sur le site NASDAQ, mais toutes les données exponentielles feront l'affaire.
python
#Combinez les prix de clôture des fichiers CSV enregistrés à l'avance à partir des sites suivants en un seul
#https://www.nasdaq.com/market-activity/funds-and-etfs/vti/historical
def make_df(etfs):
df = pd.DataFrame()
for etf in etfs:
csvfile = etf +'.csv'
csv_data = pd.read_csv(csvfile)
csv_data.Date = pd.to_datetime(csv_data.Date)
csv_data = csv_data.set_index('Date')
csv_data= csv_data.rename(columns={' Close/Last': etf})
df[etf] = csv_data[etf]
df = df.sort_index().dropna()
return df
python
#Tableau de tirage
def dd_chart(df):
#Tirage calculé par le DfDD pour tous les fonds_Tout créer
dfDD_all = pd.DataFrame()
for i in range(0,df.shape[1]):
dfDD = pd.DataFrame(df.iloc[:,i])
dfDD['max'] = dfDD.iloc[:,0].cummax()
dfDD[dfDD.columns[0]+'_DD'] = dfDD.iloc[:,0] / dfDD['max'] -1
dfDD_all[dfDD.columns[0]+'_DD'] = dfDD[dfDD.columns[0]+'_DD']
#Créer un graphique
fig = plt.figure()
dfDD_all.plot(figsize = (15, round(dfDD_all.shape[1]/2+0.4,0)*5), subplots=True,
layout=(-1, 2),sharey=True, title ='Drawdown')
plt.savefig('dd_plot.png',bbox_inches="tight")
python
etfs = ['VTI','SPXL']
df = make_df(etfs)
dd_chart(df)
Un graphique comme celui-ci est créé.
Recommended Posts