Trading FOMC Announcements with Summary of Economic Projections
Log in to collectAcademic paper
Relief Rallies after FOMC Announcements: How Much Do Investors Care About Uncertainty?
Chen Gu
- Shanghai Business School
- ?Shanghai Business School - Research Center of Finance
Strategy in a nutshell
An investor buys nearby E-mini S&P 500 index futures contracts five minutes before the FOMC statements including the release of SEP and holds the position for 55 minutes after the announcement
Economic rationale
The author attributes the phenomenon to decreasing uncertainty (as measured by the VIX index) following the FOMC announcements with the SEP, which is especially due to SEP containing information about the future direction of monetary policy.
Backtest performance
Annualised return8.9%
Volatility5%
Beta0.008
Sharpe ratio1.78
Win rate62%
Full Python code
from AlgorithmImports import *
#endregion
class TradingFOMCAnnouncementsSummaryEconomicProjections(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2007, 1, 1)
self.SetCash(100000)
self.symbol = self.AddEquity("SPY", Resolution.Minute).Symbol
csv_string_file = self.Download('data.quantpedia.com/backtesting_data/economic/fed_summary_economic_projections.csv')
dates = csv_string_file.split('\r\n')
dates = [datetime.strptime(x, "%Y-%m-%d") for x in dates]
self.liquidate_next_day = True
self.Schedule.On(self.DateRules.On(dates), self.TimeRules.BeforeMarketClose(self.symbol, 1), self.DayBeforeAnnouncement)
self.Schedule.On(self.DateRules.EveryDay(self.symbol), self.TimeRules.BeforeMarketClose(self.symbol, 1), self.Rebalance)
def DayBeforeAnnouncement(self):
if not self.Portfolio[self.symbol].IsLong:
self.SetHoldings(self.symbol, 1)
self.liquidate_next_day = True
def Rebalance(self):
if self.liquidate_next_day:
self.liquidate_next_day = False
return
if self.Portfolio[self.symbol].IsLong:
self.Liquidate(self.symbol)