| Overall Statistics |
|
Total Trades 0 Average Win 0% Average Loss 0% Compounding Annual Return 0% Drawdown 0% Expectancy 0 Net Profit 0% Sharpe Ratio 0 Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0 Beta 0 Annual Standard Deviation 0 Annual Variance 0 Information Ratio 0 Tracking Error 0 Treynor Ratio 0 Total Fees $0.00 |
import numpy as np
import pandas as pd
class MyAlgo(QCAlgorithm):
def Initialize(self):
self.SetCash(1000000)
# Start and end dates for the backtest.
self.SetStartDate(2017,1,1)
self.SetEndDate(2017,1,30)
self.AddEquity("SPY", Resolution.Minute)
# My list
self.stock_list = ["QQQ", "IVV", "XLF", "IWM"]
for i in range(len(self.stock_list)):
self.AddEquity(self.stock_list[i],Resolution.Minute)
# Schedule the rebalance function (once everyday 30 min. after market open)
self.Schedule.On(self.DateRules.EveryDay("SPY"),
self.TimeRules.AfterMarketOpen("SPY", 30),
Action(self.rebalance))
def OnData(self, data):
pass
def rebalance(self):
# Close History --------------------------------------------
# Call History (Daily)
history = self.History(self.stock_list, 60, Resolution.Daily)
# Unstack QC dataframe
price_history = history['close'].unstack(level=0)
# Call Current History
current = self.History(self.stock_list, 1, Resolution.Minute)
if current.empty: return # if data is missing (empty), return
curr_history = current['close'].unstack(level=0)
# Combine all in one
price_history = price_history.append(curr_history.iloc[0])
# Re-create a base DF to work on
df = pd.DataFrame(price_history.values, index = price_history.index, columns = price_history.columns)
df = df.dropna()
# Volume History ----------------------------------------------
vol_history = history['volume'].unstack(level=0)
curr_vol_history = current['volume'].unstack(level=0)
vol_history = vol_history.append(curr_vol_history.iloc[0])
# Re-create a volume DF to work on
df2 = pd.DataFrame(vol_history.values, index = vol_history.index, columns = vol_history.columns)
df2 = df2.dropna()
# ------------------------------------------------------------
# Get sma(20)
sma = df[-20:].mean(0).to_frame().T
# get the datetime from price history
sma.index = df[-1:].reset_index().time.values
sma = sma.reset_index()
sma.index = ['SMA20']
# Get current close
curr_close = df.iloc[-1].to_frame().T.reset_index()
curr_close.index = ['Curr_Close']
# Get Volume
curr_vol = df2.iloc[-1].to_frame().T.reset_index()
curr_vol.index = ['Volume']
# Concat all the DFs
table = pd.concat([sma, curr_close, curr_vol])
self.Log('Table :' +'\n'+ str(table) +'\n'+'\n'+ str(table.drop('index', axis=1)))