| 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 |
from clr import AddReference
AddReference("System")
AddReference("QuantConnect.Algorithm")
AddReference("QuantConnect.Indicators")
AddReference("QuantConnect.Common")
from System import *
from QuantConnect import *
from QuantConnect.Data import *
from QuantConnect.Algorithm import *
from QuantConnect.Indicators import *
from QuantConnect.Python import PythonQuandl
# from QuantConnect.Data.Custom import Quandl
from datetime import timedelta
import pandas as pd
class Example(QCAlgorithm):
'''TODO: XXX Write a comment about the strategy'''
def Initialize(self):
# Backtest initialization
# self.SetStartDate(2011, 1, 1)
# self.SetEndDate(2013, 2, 1)
# self.SetEndDate(2018, 1, 1)
self.SetStartDate(2012, 6, 12)
self.SetEndDate(2017, 7, 18)
self.SetCash(100000)
self.ASSET_UNDERLYING = 'SPXL'
self.OPEN_TRADNG_HOURS = [10]
self._daily_history = {}
# Add the equities to universe
self._asset_underlying = self.AddEquity(self.ASSET_UNDERLYING, Resolution.Minute)
# Work with split adjustment (not dividend adjustment)
self._asset_underlying.SetDataNormalizationMode(DataNormalizationMode.SplitAdjusted)
oneDayConsolidator = self.ResolveConsolidator(self.ASSET_UNDERLYING, Resolution.Daily)
oneDayConsolidator.DataConsolidated += self.daily_history_consolidator
self.SubscriptionManager.AddConsolidator(self.ASSET_UNDERLYING, oneDayConsolidator)
# Set trading events
for minutes in self.OPEN_TRADNG_HOURS:
self.Schedule.On(
self.DateRules.EveryDay(self.ASSET_UNDERLYING),
self.TimeRules.AfterMarketOpen(self.ASSET_UNDERLYING, minutes),
Action(self._trade)
)
def daily_history_consolidator(self, sender, bar):
ticker = bar.Symbol.Value
current_quotes_df = pd.DataFrame(
{
'open': [float(bar.Open)],
'high': [float(bar.High)],
'low': [float(bar.Low)],
'close': [float(bar.Close)],
'volume': [int(bar.Volume)]
},
index=[pd.to_datetime(self.Time)]
)
self.Log("Ticker: %s" % ticker)
if ticker in self._daily_history:
self._daily_history[ticker] = self._daily_history[ticker].append(
current_quotes_df)
else:
self._daily_history[ticker] = current_quotes_df
def _trade(self):
if self.ASSET_UNDERLYING not in self._daily_history:
# No history enough
return
# Get all historic quotes
underlying_price = float(self.Securities[self.ASSET_UNDERLYING].Price)
self.Log('Asset %s close price: %.02f' % (self.ASSET_UNDERLYING, underlying_price))