| Overall Statistics |
|
Total Trades 0 Average Win 0% Average Loss 0% Compounding Annual Return 0% Drawdown 0% Expectancy 0 Net Profit 0% Sharpe Ratio 0 Probabilistic Sharpe Ratio 0% Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0 Beta 0 Annual Standard Deviation 0 Annual Variance 0 Information Ratio 0 Tracking Error 0 Treynor Ratio 0 Total Fees $0.00 |
import numpy as np
from datetime import timedelta, datetime
import decimal
from QuantConnect.Data.Custom.TradingEconomics import *
class RegressionChannelAlgorithm(QCAlgorithm):
def Initialize(self):
self.SetCash(1000000)
self.SetStartDate(2015,11,12)
self.SetEndDate(2019,11,23)
slowperiod = 1000
self.SetBenchmark('SPY')
self.SetWarmUp(timedelta(31))
self.AddForex("EURUSD", Resolution.Daily, Market.Oanda)
self.AddForex("USDCHF", Resolution.Daily, Market.Oanda)
self.AddForex("AUDUSD", Resolution.Daily, Market.Oanda)
self.AddForex("GBPUSD", Resolution.Daily, Market.Oanda)
self.AddForex("USDJPY", Resolution.Daily, Market.Oanda)
self.usdrate = self.AddData(TradingEconomicsCalendar, TradingEconomics.Calendar.UnitedStates.InterestRate).Symbol
self.usdinfla = self.AddData(TradingEconomicsCalendar, TradingEconomics.Calendar.UnitedStates.CoreInflationRate).Symbol
history = self.History(TradingEconomicsCalendar, self.usdrate, 365, Resolution.Daily)
def OnData(self, data):
if self.IsWarmingUp:
return
if not (data.ContainsKey("EURUSD")) or not (data.ContainsKey("USDCHF")):
return
# Using the data is the same as other data types:
if not (data.ContainsKey(self.usdrate)):
return
if not (data.ContainsKey(self.usdinfla)):
self.Log("Checking for keys...")
return
self.Log("Inflation Data keys...found")
usdrateannouncement = data[self.usdrate]
#usdinflaEvent = data[self.usdinfla]
#if usdrateannouncement.Event != "Fed Interest Rate Decision":
# return
# In the event of a rate increase, rebalance 50% to Bonds.
interestRateDecreased = usdrateannouncement.Forecast <= usdrateannouncement.Previous
interestRateIncreased = usdrateannouncement.Forecast >= usdrateannouncement.Previous
#inflationRateDecreased = usdinflaEvent.Forecast <= usdinflaEvent.Previous
#inflationRateIncreased = usdinflaEvent.Forecast >= usdinflaEvent.Previous
self.Log("checking for rate announcements...")
if interestRateDecreased: #inflationRateDecreased:
#self.Debug(usdrateannouncement.Event)
self.Log(usdinflaEvent.Event)
self.MarketOrder("EURUSD", -100000)
#self.MarketOrder("USDCHF", 100000)
#self.MarketOrder("GBPUSD", -100000)
#self.MarketOrder("AUDUSD", -100000)
self.MarketOrder("USDJPY", -100000)
elif interestRateIncreased: # or inflationRateDecreased:
#self.Debug(usdrateannouncement.Event)
self.Log(usdinflaEvent.Event)
self.MarketOrder("EURUSD", 100000)
#self.MarketOrder("USDCHF", -100000)
#self.MarketOrder("GBPUSD", 100000)
#self.MarketOrder("AUDUSD", -200000)
self.MarketOrder("USDJPY", 100000)
elif not self.Portfolio.Invested:
self.MarketOrder("EURUSD", -100000)
#self.MarketOrder("USDCHF", 100000)
#self.MarketOrder("GBPUSD", -100000)
#self.MarketOrder("AUDUSD", -100000)
self.MarketOrder("USDJPY", -100000)