| Overall Statistics |
|
Total Trades 2 Average Win 0% Average Loss 0% Compounding Annual Return 985.083% Drawdown 2.100% Expectancy 0 Net Profit 3.095% Sharpe Ratio 10.785 Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0.37 Beta 106.848 Annual Standard Deviation 0.144 Annual Variance 0.021 Information Ratio 10.716 Tracking Error 0.144 Treynor Ratio 0.014 Total Fees $15.59 |
import numpy as np
class BasicTemplateAlgorithm(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2012,10, 1) #Set Start Date
self.SetEndDate(2012,10,5) #Set End Date
self.SetCash(100000) #Set Strategy Cash
self.max_leverage = 2.0 # Set total leverage you want
self.qt_factor = 1.0 # Set total leverage level you want to order each time
self.AddEquity("WMT", Resolution.Minute) # Set Resolution 'Minute'
self.Securities["WMT"].SetLeverage(2.0) # Set Leverage 2.0
# Schedule the rebalance function (twice everyday 30 min. & 35 min. after market open)
self.Schedule.On(self.DateRules.EveryDay("WMT"),
self.TimeRules.AfterMarketOpen("WMT", 30),
Action(self.rebalance))
self.Schedule.On(self.DateRules.EveryDay("WMT"),
self.TimeRules.AfterMarketOpen("WMT", 35),
Action(self.rebalance))
def OnData(self, data):
pass
def rebalance(self):
self.Log('Cash Before: ' + str(self.Portfolio.Cash))
self.Log('GetBuyingPower Before: ' + str(self.Portfolio.GetBuyingPower("WMT", OrderDirection.Buy)))
self.Log('CalculateOrderQuantity: ' + str(self.CalculateOrderQuantity("WMT", 1)))
# Order by quantity each time equivelant with 1.0x of total portfolio value --------------
# Get maximum leveraged Portfolio Value
total_leverage = float(self.Portfolio.TotalPortfolioValue) * self.max_leverage
self.Log('Total Portfolio Value with max Leverage: ' + str(total_leverage))
price = float(self.Securities["WMT"].Price)
# Get Quantity you want to trade each time (here we trade 1.0x of total portfolio value each time.)
qt = (total_leverage * (self.qt_factor/self.max_leverage)) / price
# Market Order
self.MarketOrder("WMT", qt)
self.Log('Total Cost: ' + str(self.Portfolio["WMT"].HoldingsCost))
self.Log('AveragePrice: ' + str(self.Portfolio["WMT"].AveragePrice))
self.Log('TotalFees: ' + str(self.Portfolio.TotalFees) +'\n')
self.Log('Cash After: ' + str(self.Portfolio.Cash))
self.Log('GetMarginRemaining After: ' + str(self.Portfolio.GetMarginRemaining("WMT", OrderDirection.Buy))+'\n')