Sep-06-2018, 05:19 AM
import pandas as pd import numpy as np import statsmodels.tsa.stattools as ts import matplotlib.pyplot as plt from scipy import optimize data = pd.read_csv('aapl.csv') data1 = data[['Date']] def backtest( init_capital, max_capital_deploy, buy_margin, sell_margin): # TODO : # daily MTM , exit on Stop loss and target, MDD, etc longwindow = int(parameters[0]) shortwindow = int(parameters[1]) if (longwindow < shortwindow) or (shortwindow < 1) or (init_capital <= 0) or (max_capital_deploy <=0) or (buy_margin < 0) or (sell_margin < 0) : return 0 short_moving_avg = ratio.rolling(window = shortwindow, center=False).mean() long_moving_avg = ratio.rolling(window = longwindow, center=False).mean() capital = init_capital qty1 = 0 pos = 0 margin_blocked = 0 trade_pnl = [] mtm_pl = [] for i in range(len(data)): if capital <= 0: break if pos == 0: if short_moving_avg[i] > long_moving_avg[i]: pos = -1 p1 = price1[i] margin_blocked = capital * max_capital_deploy qty1 = -(margin_blocked / 2) // (p1 * sell_margin) if -qty1 < 1: break elif short_moving_avg[i] < long_moving_avg[i]: pos = 1 p1 = price1[i] margin_blocked = capital * max_capital_deploy qty1 = (margin_blocked / 2) // (p1 * buy_margin) if qty1 < 1 : break elif pos < 0: if short_moving_avg[i] > long_moving_avg[i]: pnl = qty1 * (price1[i] - p1) if not fixedcapital: capital += pnl trade_pnl = np.append(trade_pnl, pnl) margin_blocked = 0 qty1 = 0 pos = 0 else: pnl = qty1 * (price1[i] - p1) mtm_pl = np.append(mtm_pl, pnl) trade_pnl = np.append(trade_pnl, pnl) margin_blocked = 0 qty1 = 0 pos = 0 else: if moving_window_z_score[i] > -exitlimit: pnl = qty1 * (price1[i] - p1) trade_pnl = np.append(trade_pnl, pnl) margin_blocked = 0 qty1 = 0 pos = 0 else: pnl = qty1 * (price1[i] - p1) mtm_pl = np.append(mtm_pl, pnl) trade_pnl = np.append(trade_pnl, pnl) margin_blocked = 0 qty1 = 0 pos = 0 return capital, trade_pnl, mtm_pl
Error: File "<ipython-input-101-0541da3091dd>", line 116
else:
^
SyntaxError: invalid syntax
I m new to python I want to fix this else issue also how I can call or print trade pnl and mtm pnl