| Overall Statistics |
|
Total Trades 1 Average Win 0% Average Loss 0% Compounding Annual Return -13.528% Drawdown 2.700% Expectancy 0 Net Profit 0% Sharpe Ratio -1.466 Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha -0.008 Beta 0.999 Annual Standard Deviation 0.09 Annual Variance 0.008 Information Ratio -3.373 Tracking Error 0.002 Treynor Ratio -0.131 Total Fees $2.02 |
#
# QuantConnect Basic Template:
# Fundamentals to using a QuantConnect algorithm.
#
# You can view the QCAlgorithm base class on Github:
# https://github.com/QuantConnect/Lean/tree/master/Algorithm
#
import pandas as pd
import numpy as np
import talib
class BasicTemplateAlgorithm(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2017,8,1)
self.stocks = ["SPY","TQQQ"]
for s in self.stocks:
self.AddEquity(s)
# History request using list of tickers
hist = self.History(self.stocks, 1000, Resolution.Minute)
self.Log(str(hist.index))
self.Log(str(hist.columns))
# Check if returns an empty list. It should not.
if hist.empty:
self.Log(str(self.Time) + " empty hist")
return
# Select the closing prices
prices = hist.close
# The History method returns a multi-index pandas.DataFrame, where the
# symbols are index 0 and date/time is index 1.
# These lines are used to create a pandas.DataFrame where the symbols
# are in the columns, instead of index 0.
spy = prices.loc['SPY']
tqqq = prices.loc['TQQQ']
prices = pd.concat([spy,tqqq],axis = 1)
prices.columns = self.stocks
# Then we can .as_matrix normally
ret = prices.pct_change()[1:].as_matrix(self.stocks)
ret_mean = prices.pct_change().mean()
ret_std = prices.pct_change().std()
ret_norm = ret_mean / ret_std
ret_norm = ret_norm.as_matrix(self.stocks)
self.Log("ret_norm" + str(ret_norm))
def OnData(self, data):
if not self.Portfolio.Invested:
self.SetHoldings("SPY", 1)