2016-08-29 1 views
0

Ich habe (wieder) schrieb eine Back-Test-Funktion in Python mit PandasKann nicht Python Funktion

def backtest(positions,price,initial_capital=10000): 
    #creating protfolio 
    portfolio =positions*price['price']  
    pos_diff=positions.diff() 

    #creating holidings 
    portfolio['holidings']=(positions*price['price'].sum(axis=1) 
    portfolio['cash']=initial_capital-(pos_diff*price['price']).sum(axis=1).cumsum() 

    #full account equity 
    portfolio['total']=portfolio['cash']+ portfolio['holidings'] 
    portfolio['return']=portfolio['total'].pct_change() 
    return portfolio 

wo Positionen und Preis sind beiden Datenrahmen von 1 Spalte und 5-Säule bzw. initialisieren.

Inorder für die Fehlerprüfung Ich betreibe diese Funktion allein in meinem Python, aber es wird diesen Fehler Rückkehr

File "", line 8 
    portfolio['cash']=initial_capital-(pos_diff*price['price']).sum(axis=1).cumsum() 

SyntaxError: invalid syntax 

Antwort

2

fehlende hintere Klammer auf Zeile vor:

portfolio['holidings']=(positions*price['price'].sum(axis=1) 
              ^need) here 

sein sollte:

portfolio['holidings']=(positions*price['price']).sum(axis=1) 

Immer wenn Sie einen Syntaxfehler bekommen, schauen Sie sich die Zeile vor, wenn der Fehler und die Zeile in qu Estion gut aussehen und macht keinen Sinn

+0

Die Linie vor natürlich! Ich habe in der Fehlermeldung danach gesucht;) – IanS