Explique la signification et la méthode de calcul de Calmar Ratio.
Retour de la date de début au jour actuel d'un certain problème [suit cette définition](https://qiita.com/NT1123/items/096dc41c24751934747e#2-1-return%E3%81%AE%E5%AE%9A % E7% BE% A9).
Il s'agit d'une expression qui évalue la vitesse à laquelle le retour tombe et descend après que le retour ait atteint son maximum. </ b>
Plus précisément, la valeur maximale de Return est $ R_ {max} ^ {(n)} $ dans la période allant de la date de début à n jours ouvrables.
R_{max}^{(n)}=max\left\{R_{i} | 0<i≦n \right\}
Ici, Maxdrowdown $ MDD_ {max} ^ {(n)} $ est défini par la formule suivante.
MDD_{max}^{(n)}=max\left\{\frac{R_{max}^{(n)}}{R_{i}} | 0<i≦n \right\}
Formule de définition du rapport de calmar
Calmar Ratio=\frac{CAGR(n)}{MDD_{max}^{(n)}}
La formule de définition du CAGR est décrite ici.
Supplément: Comparé au Shapen Ratio, le Calmar Ratio est un indice qui considère le pire taux de déclin. </ b>
test.py
def CAGR(DF):
df = DF.copy()
df["daily_ret"] = DF["Close"].pct_change() #Calculez le taux de variation à partir de la veille du cours de clôture du cours de l'action.
df["cum_return"] = (1 + df["daily_ret"]).cumprod() #cumprod(Renvoie le produit cumulatif de tous les éléments en scalaire y.
n = len(df)/252 #Le jour de négociation pour un an est fixé à 252 jours.
print( "df[cum_return]" )
print( df["cum_return"] )
print( "df[cum_return][-1] ")
print( df["cum_return"][-1] )
CAGR = (df["cum_return"][-1])**(1/n) - 1
return CAGR
def max_dd(DF):
"function to calculate max drawdown"
df = DF.copy()
df["daily_ret"] = DF["Close"].pct_change()
df["cum_return"] = (1 + df["daily_ret"]).cumprod() #cumprod()Multipliez tous les éléments.
print(df["cum_return"])
#ax.legend() #Dessinez une légende
df["cum_roll_max"] = df["cum_return"].cummax()
df["drawdown"] = df["cum_roll_max"] - df["cum_return"]
df["drawdown_pct"] = df["drawdown"]/df["cum_roll_max"]
max_dd = df["drawdown_pct"].max()
ax=df["cum_return"].plot(marker="*",figsize=(10, 5))
ax=df["cum_roll_max"].plot(marker="*",figsize=(10, 5))
ax=df["drawdown"].plot(marker="*",figsize=(10, 5))
ax=df["drawdown_pct"].plot(marker="*",figsize=(10, 5))
ax.legend() #Dessinez une légende
return max_dd
def calmar(DF):
"function to calculate calmar ratio"
df = DF.copy()
clmr = CAGR(df)/max_dd(df)
return clmr
Recommended Posts