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

Schreibe einen Kommentar