Seite 1 von 1

Drawdown berechnen

Verfasst: Mittwoch 14. Oktober 2020, 20:13
von Bebbi
Ich bin leider wieder einmal hängengeblieben. Ich möchte von Zeitreihen den jährlichen Drawdown berechnen. Dies versuche ich mit folgendem Befehl, welcher korrekt zu sein scheint, da keine Fehlermeldung kommt:

Code: Alles auswählen

# Sterling Ratio
# Drawdown of the stocks and the index each year
stocks_dd_2010_ABBN = stocks_data.loc['30-09-2010':'31-08-2011',['ABBN_Preis']].apply(Drawdown)
stocks_dd_2010_ABBN
[\Code]

Das Resultat wird allerdings, egal welche Periode ich nehme immer mit 0 angegeben.

[Code]
ABBN_Preis    0
dtype: int32
[\Code]

Die Datenquelle stocks_data sieht wie folgt aus:

[Code]
stocks_data = pd.concat([ABBN,ADEN,CFR,CSGN,GEBN,GIVN,LHN,LONN,NESN,NOVN,SCMN,SGSN,SIKA,SLHN,ROG,SREN,UBSG,UHR,ZURN,SMI], axis=1)
stocks_data.head()
[\Code]

Bei den einzelnen Abkürzungen handelt es sich um die jeweiligen Dataframes zu den entsprechenden csv Files mit den Daten. Diese wurden alle zuvor schon einmal verwenden und sind vorhanden. Was hier zu sehen ist:

[Code]
ABBN = pd.read_csv('C:/Users/Startklar/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Anaconda3 (64-bit)/ABBN.csv', sep=" ",names=['Datum','ABBN_Preis'])
[\Code]

Angezeigt werden unter obigem Code folgende Werte:

[Code]
[	Datum	ABBN_Preis
0	30.09.2010	20.71
1	29.10.2010	20.38
2	30.11.2010	19.45
3	30.12.2010	20.83
4	31.01.2011	22.29
5	28.02.2011	22.72
6	31.03.2011	22.06
7	29.04.2011	23.88
8	31.05.2011	22.89
9	30.06.2011	21.80
10	29.07.2011	18.98
11	31.08.2011	17.28
[\Code]

Weshalb gibt mir das System immer den Wert 0 und rechnet nicht mit den entsprechenden Datensätzen?

Re: Drawdown berechnen

Verfasst: Dienstag 20. Oktober 2020, 19:36
von Bebbi
Ist die Frage zu spezifisch?

Re: Drawdown berechnen

Verfasst: Dienstag 20. Oktober 2020, 20:06
von snafu
Vielleicht steigt die Chance auf Hilfe, wenn du den Inhalt der Funktion Drawdown zeigst...

Re: Drawdown berechnen

Verfasst: Sonntag 25. Oktober 2020, 20:28
von Bebbi
Mache ich gerne:

Code: Alles auswählen


# Function for the drawdown
def Drawdown(stock): 
    stock_nrow=stock.shape[0]
    stock.index=range(0,stock_nrow)
    Pdrop=np.zeros(stock_nrow,dtype=bool)
    for i in range(1,stock_nrow):
        if stock.iloc[i]<stock.iloc[i-1]:
            Pdrop[i]=True
    Min=0
    i=0
    j=0
    while (i<stock_nrow-1):
        j=i+1
        if Pdrop[j]:
            while(j<stock_nrow-1):
                if Pdrop[j+1]:
                    j=j+1
                else:
                    if stock[j]/stock[i]-1<Min:
                        Min=stock[j]/stock[i]-1
                    break
            if j==stock_nrow-1:
                if stock[j]/stock[i]-1<Min:
                    Min=stock[j]/stock[i]-1
        i=j
    return(100*np.absolute(Min))



Re: Drawdown berechnen

Verfasst: Dienstag 27. Oktober 2020, 10:49
von Bebbi
wäre es vielleicht möglich die Datei jemanden zu schicken damit die Person es sich genauer anschauen kann? Ich habe sonst leider niemanden wo ich mich melden kann.