Overall Statistics |
Total Trades 120 Average Win 0.18% Average Loss -0.04% Compounding Annual Return 6.262% Drawdown 8.700% Expectancy 2.301 Net Profit 35.548% Sharpe Ratio 0.841 Probabilistic Sharpe Ratio 31.147% Loss Rate 44% Win Rate 56% Profit-Loss Ratio 4.87 Alpha 0.045 Beta -0.003 Annual Standard Deviation 0.053 Annual Variance 0.003 Information Ratio -0.509 Tracking Error 0.165 Treynor Ratio -13.904 Total Fees $0.00 Estimated Strategy Capacity $1900000.00 Lowest Capacity Asset USDTRY 8G |
# The official interest rate is from Quandl from QuantConnect.Python import PythonQuandl from NodaTime import DateTimeZone class BootCampTask(QCAlgorithm): def Initialize(self): self.SetStartDate(2016, 6, 1) self.SetEndDate(2021, 6, 1) self.SetCash(100000) tickers = ["USDEUR", "USDZAR", "USDAUD", "USDJPY", "USDTRY", "USDINR", "USDCNY", "USDMXN", "USDCAD"] rate_symbols = ["BCB/17900", # Euro Area "BCB/17906", # South Africa "BCB/17880", # Australia "BCB/17903", # Japan "BCB/17907", # Turkey "BCB/17901", # India "BCB/17899", # China "BCB/17904", # Mexico "BCB/17881"] # Canada self.symbols = {} for i in range(len(tickers)): symbol = self.AddForex(tickers[i], Resolution.Daily, Market.Oanda).Symbol self.AddData(QuandlRate, rate_symbols[i], Resolution.Daily, DateTimeZone.Utc, True) self.symbols[str(symbol)] = rate_symbols[i] self.Schedule.On(self.DateRules.MonthStart("USDEUR"), self.TimeRules.AfterMarketOpen("USDEUR"), Action(self.Rebalance)) def Rebalance(self): top_symbols = sorted(self.symbols, key = lambda x: self.Securities[self.symbols[x]].Price) if self.Securities[top_symbols[0]].Price != 0 and self.Securities[top_symbols[-1]].Price != 0: self.SetHoldings(top_symbols[0], -0.5) self.SetHoldings(top_symbols[-1], 0.5) def OnData(self, data): pass class QuandlRate(PythonQuandl): def __init__(self): self.ValueColumnName = 'Value'