Il drawdown rappresenta la massima perdita % che si ha avuto dall'ultimo massimo di prezzo raggiunto.
Come vedete nel grafico sopra, dal 2020 a oggi, si vede una linea che rappresenta la perdita avuta dall'ultimo massimo toccato.
Per esempio, a fine 2023 vedete una perdita del 77%, che rappresenta la differenza tra il prezzo a fine 2023 rispetto all'ultimo massimo fatto dopo il 2020, cioè 69000$ di nov-21.
E' però più interessante poter vedere il secondo grafico:
Esso rappresenta la massima perdita considerando il periodo che va dall'anno indicato fino a oggi.
Per esempio nel 2014 era -83%, significa che considerando tutti i dati dal 2014 a oggi, la differenza tra il massimo raggiunto e il minimo fatto è dell'83%.
Invece dal 2022 a oggi, la differenza tra il massimo raggiunto e il minimo fatto è dell'67%.
Bisogna però sempre ricordarsi che i massimi BTC li ha raggiunti dopo l'halving, quindi bisogna guardare la massima perdita fatta dopo quel massimo. E qui emerge che la massima perdita si sta piano piano riducendo col passare degli anni.
Vi riporto di seguito il codice python che potrete usare dopo aver scaricato il csv dei dati sul vostro pc:
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import datetime
import webbrowser
# Caricare le serie storiche dei prezzi di chiusura giornalieri
btc = pd.read_csv(r'G:\dati\BTC-USD.csv', parse_dates=['Date'], index_col='Date')['Close'].dropna()
print(btc.tail())
print(btc.info())
btc.plot(title='Btc price')
plt.show()
# Rolling sui rendimenti di BTC per mean e std 2020-24
btc20r = btc.pct_change().loc['2020':]
rol = btc20r.rolling('30D').agg(['mean', 'std'])
rol.plot(subplots=True)
plt.show()
# DRAWDOWN 2020-24
## Running maximum, massima perdita
running_max = np.maximum.accumulate(btc.loc['2020':])
## Ensure the value never drops below 1
running_max[running_max<1] = 1
## Calculate the percentage drawdown
drawdown = (btc.loc['2020':])/running_max - 1
## Plot the results
drawdown.plot(title= 'Drawdown 2020-24')
plt.show()
print('Max drawdown is: ' + str(round(min(drawdown)*100, 0)) + '%')
# DRAWDOWN per anno, dal 2014 a oggi
## Ottieni l'anno corrente
anno_corrente = datetime.datetime.now().year
year = anno_corrente
## Calcolo Drawdown per ogni anno
dd_series = []
for y in range(2014, year, 1):
running_max = np.maximum.accumulate(btc.loc[str(y):])
running_max[running_max<1] = 1
drawdown = (btc.loc[str(y):])/running_max - 1
dd_series.append(round(min(drawdown)*100))
## Grafico a barre
anni = list(range(2014, year))
plt.bar(anni, dd_series)
plt.xlabel('Year')
plt.ylabel('Drawdown (%)')
plt.title('Drawdown from year:')
for i in range(len(anni)):
plt.text(anni[i], dd_series[i], f"{dd_series[i]}%", ha='center', va='bottom')
plt.xticks(anni, rotation=45) # Imposta i tick sull'asse x per mostrare gli anni
plt.show()
# Ringraziamenti
url = "https://bitcoinbalanceinvest.blogspot.com/p/guide-utili.html"
webbrowser.open(url)
Nessun commento:
Posta un commento