Beginn, Ende und Dauer der Maximale Drawdown in Python
Gegeben eine Zeitreihe, ich will berechnen Sie den maximum drawdown, und ich auch möchten, suchen Sie den Anfang und das Ende Punkte der maximale drawdown, also kann ich die Berechnung der Dauer. Ich möchte markieren den Anfang und das Ende der drawdown auf einem Grundstück an der timeseries wie diese:
eine Katze beschäftigt http://oi61.tinypic.com/r9h4er.jpg
Bisher habe ich code zum generieren einer zufälligen Zeit-Serie, und ich habe code zum berechnen der max-drawdown. Wenn jemand weiß, wie zu identifizieren die Orte, an denen der drawdown beginnt und endet, würde ich es wirklich schätzen!
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
# create random walk which I want to calculate maximum drawdown for:
T = 50
mu = 0.05
sigma = 0.2
S0 = 20
dt = 0.01
N = round(T/dt)
t = np.linspace(0, T, N)
W = np.random.standard_normal(size = N)
W = np.cumsum(W)*np.sqrt(dt) ### standard brownian motion ###
X = (mu-0.5*sigma**2)*t + sigma*W
S = S0*np.exp(X) ### geometric brownian motion ###
plt.plot(S)
# Max drawdown function
def max_drawdown(X):
mdd = 0
peak = X[0]
for x in X:
if x > peak:
peak = x
dd = (peak - x) / peak
if dd > mdd:
mdd = dd
return mdd
drawSeries = max_drawdown(S)
MaxDD = abs(drawSeries.min()*100)
print MaxDD
plt.show()
Vielleicht interessiert Sie dies: stackoverflow.com/questions/21058333/...
InformationsquelleAutor siegel | 2014-03-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Finden Sie einfach heraus, wo läuft maximum minus den aktuellen Wert am größten ist:
wenn u dun Verstand, können Sie erklären, den code für i und j?
InformationsquelleAutor behzad.nouri
auf der Rückseite dieses fügte ich unerwater Analyse, ob das hilft niemanden...
InformationsquelleAutor Berto
Ihre max_drawdown bereits verfolgt die peak-Lage. Ändern Sie die
if
auch zu speichern, end-Lagemdd_end
wenn es speichert mdd, undreturn mdd, peak, mdd_end
.InformationsquelleAutor ramcdougal