| Overall Statistics |
|
Total Trades 1009 Average Win 0.17% Average Loss -0.20% Compounding Annual Return 4.436% Drawdown 8.900% Expectancy 0.090 Net Profit 9.078% Sharpe Ratio 0.752 Probabilistic Sharpe Ratio 33.968% Loss Rate 41% Win Rate 59% Profit-Loss Ratio 0.86 Alpha 0.001 Beta 0.157 Annual Standard Deviation 0.042 Annual Variance 0.002 Information Ratio -0.889 Tracking Error 0.179 Treynor Ratio 0.199 Total Fees $5045.00 Estimated Strategy Capacity $520000000.00 Lowest Capacity Asset SPY R735QTJ8XC9X |
if __name__ == "__main__":
from myapi import *
else:
from AlgorithmImports import *
class BuyCloseSellOpen(QCAlgorithm):
def Initialize(self):
# message = "\n\n\n********** Printing from Initialize."; self.Debug(message); self.Log(message)
# set start and end date for backtest
self.SetStartDate(2019, 1, 1 )
self.SetEndDate( 2020, 12, 31)
# initialize cash balance
self.SetCash(1_000_000)
# add an equity
self.security = self.AddEquity("SPY", Resolution.Minute)
# use Interactive Brokers model for fees
self.SetBrokerageModel(BrokerageName.InteractiveBrokersBrokerage, AccountType.Margin)
# benchmark against S&P 500
self.SetBenchmark("SPY")
# keep track of whether closing order was sent for the day or not
self.closingOrderSent = False
def OnData(self, data):
# message = "\n\n\n********** Printing from OnData."; self.Debug(message); self.Log(message)
if not self.closingOrderSent and not self.Portfolio.Invested:
self.MarketOnCloseOrder("SPY", 1000)
self.closingOrderSent = True
def OnOrderEvent(self, orderEvent):
# message = "\n\n\n********** Printing from OnOrderEvent."; self.Debug(message); self.Log(message)
if orderEvent.Status == OrderStatus.Filled and orderEvent.FillQuantity > 0:
self.MarketOnOpenOrder("SPY", -1000)
self.closingOrderSent = False
if __name__ == "__main__":
print("Running BuyCloseSellOpen unit tests.")
import unittest
class BIST(unittest.TestCase):
def test(self):
print("Running test.")
algo = BuyCloseSellOpen()
self.assertEqual( algo.Portfolio.Invested, False )
algo.Initialize()
algo.OnData(0)
self.assertEqual( algo.Portfolio.Invested, True )
unittest.main()