| Overall Statistics |
|
Total Trades 24 Average Win 1.18% Average Loss -0.63% Compounding Annual Return 166.763% Drawdown 3.100% Expectancy 1.171 Net Profit 8.898% Sharpe Ratio 5.504 Probabilistic Sharpe Ratio 88.603% Loss Rate 25% Win Rate 75% Profit-Loss Ratio 1.89 Alpha 0.697 Beta -0.304 Annual Standard Deviation 0.14 Annual Variance 0.02 Information Ratio 6.509 Tracking Error 0.154 Treynor Ratio -2.532 Total Fees $0.00 Estimated Strategy Capacity $7200000.00 Lowest Capacity Asset USDCAD 8G |
class Futures_CSV(QCAlgorithm):
def Initialize(self):
self.SetCash(100000)
self.SetStartDate(2021, 6, 1)
self.SetTimeZone('America/New_York')
#CAD Futureshttps://www.quantconnect.com/project/8692527#
self.symbol = self.AddData(Difference, "Difference", Resolution.Minute).Symbol
self.SetBrokerageModel(BrokerageName.OandaBrokerage)
self.AddForex("USDCAD", Resolution.Minute, Market.Oanda)
def OnData(self, data):
if data.ContainsKey(self.symbol):
self.Plot("Difference", "CLOSE", data[self.symbol].GetProperty('CLOSE'))
#Entry
if data[self.symbol].Value <= -0.0015 and not self.Portfolio.Invested:
self.SetHoldings("USDCAD", -10)
elif data[self.symbol].Value >= 0.0015 and not self.Portfolio.Invested:
self.SetHoldings("USDCAD", 10)
else:
pass
#Exit
if self.Portfolio["USDCAD"].IsLong and data[self.symbol].Value <= 0:
self.Liquidate()
elif self.Portfolio["USDCAD"].IsShort and data[self.symbol].Value >= 0:
self.Liquidate()
else:
pass
class Difference(PythonData):
def GetSource(self, config, date, isLive):
source = "https://raw.githubusercontent.com/LeonidNID/Quantconnect/master/Difference_MINUTES_SHORTENED.csv"
return SubscriptionDataSource(source, SubscriptionTransportMedium.RemoteFile);
def Reader(self, config, line, date, isLive):
# If first character is not digit, pass
if not (line.strip() and line[0].isdigit()): return None
data = line.split(',')
difference = Difference()
difference.Symbol = config.Symbol
difference.Time = datetime.strptime(data[1], '%Y-%m-%dT%H:%M:%S')
difference.Value = float(data[2])
difference["CLOSE"] = float(data[2])
return difference