| Overall Statistics |
|
Total Trades 6 Average Win 0% Average Loss -0.01% Compounding Annual Return -5.940% Drawdown 3.300% Expectancy -1 Net Profit -2.564% Sharpe Ratio -1.598 Probabilistic Sharpe Ratio 2.936% Loss Rate 100% Win Rate 0% Profit-Loss Ratio 0 Alpha -0.056 Beta 0.032 Annual Standard Deviation 0.03 Annual Variance 0.001 Information Ratio -2.427 Tracking Error 0.126 Treynor Ratio -1.505 Total Fees $0.00 Estimated Strategy Capacity $880000.00 Lowest Capacity Asset USDCAD 8G |
# The official interest rate is from Quandl
from QuantConnect.Python import PythonQuandl
from NodaTime import DateTimeZone
class ForexCarryTradeAlgorithm(QCAlgorithm):
def Initialize(self):
# self.SetStartDate(2016, 1, 1)
# self.SetEndDate(2020, 12, 31)
# self.SetCash(100000)
self.SetStartDate(2021, 1, 1)
self.SetEndDate(2021, 6, 4)
# self.SetCash(21000) high low
self.SetCash(13340) #low
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)
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'