Overall Statistics |
Total Trades 2 Average Win 0% Average Loss 0% Compounding Annual Return 29.091% Drawdown 3.500% Expectancy 0 Net Profit 2.359% Sharpe Ratio 1.727 Probabilistic Sharpe Ratio 61.467% Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0.225 Beta -0.15 Annual Standard Deviation 0.103 Annual Variance 0.011 Information Ratio -1.164 Tracking Error 0.116 Treynor Ratio -1.189 Total Fees $0.00 |
import numpy as np from datetime import timedelta, datetime import decimal class RegressionChannelAlgorithm(QCAlgorithm): def Initialize(self): self.SetCash(1000000) self.SetStartDate(2019,10,20) self.SetEndDate(2019,11,20) slowperiod = 1000 self.SetBenchmark('SPY') self.SetWarmUp(slowperiod) self.AddForex("AUDUSD", Resolution.Hour, Market.Oanda) self.AddForex("NZDUSD", Resolution.Hour, Market.Oanda) def OnData(self, data): if self.IsWarmingUp: return if not (data.ContainsKey("NZDUSD")): return NZDUSD = self.Securities["NZDUSD"].AskPrice - self.Securities["NZDUSD"].BidPrice AUDUSD = self.Securities["AUDUSD"].AskPrice - self.Securities["AUDUSD"].BidPrice spreadDelta = decimal.Decimal(NZDUSD - AUDUSD) liquidate = decimal.Decimal(2) golong = decimal.Decimal(5) liquidate2 = decimal.Decimal(2) #if this is negative then short audusd and buy nzdusd, if this is positive then buy audusd and short nzdusd ? if not self.Portfolio["NZDUSD"].IsLong and not self.Portfolio["AUDUSD"].IsShort: if spreadDelta < 0: self.SetHoldings("AUDUSD", -2) self.SetHoldings("NZDUSD", 2) self.Log("spreadDelta less than 0: " + str(spreadDelta)) if self.Portfolio["NZDUSD"].IsLong and self.Portfolio["AUDUSD"].IsShort: self.Log("Is spreadDelta greater than 2?: " + str(spreadDelta)) self.Log("Is spreadDelta greater than 2?: " + str(spreadDelta > liquidate)) if spreadDelta > liquidate: self.SetHoldings("AUDUSD", 0) self.SetHoldings("NZDUSD", 0) self.Log("spreadDelta greater than 2: " + str(spreadDelta)) if not self.Portfolio["NZDUSD"].IsShort and not self.Portfolio["AUDUSD"].IsLong: if spreadDelta >golong: self.SetHoldings("AUDUSD", 2) self.SetHoldings("NZDUSD", -2) self.Log("spreadDelta greater than 5: " + str(spreadDelta)) if self.Portfolio["NZDUSD"].IsShort and self.Portfolio["AUDUSD"].IsLong: if spreadDelta < liquidate2: self.SetHoldings("AUDUSD", 0) self.Log("spreadDelta less than 2: " + str(spreadDelta)) self.SetHoldings("NZDUSD", 0)