Scheduled Economic Announcements Effect in Stocks
Log in to collectAcademic paper
How Much Do Investors Care About Macroeconomic Risk? Evidence from Scheduled Economic Announcements
Pavel G. Savor; Mungo Ivor Wilson
- DePaul University
- ?DePaul University - Kellstadt Graduate School of Business
- ?affiliation not provided to SSRN
- University of Oxford
- ?University of Oxford - Said Business School
Strategy in a nutshell
The strategy invests in equities via CFDs, ETFs, or futures only on major economic announcement days (CPI, PPI, jobs data, FOMC decisions). On other days, positions are closed and capital stays in cash, targeting gains from heightened market activity while minimizing exposure to low-information periods.
Economic rationale
Research shows markets demand a risk premium on announcement days due to heightened uncertainty. As risk-averse investors require higher compensation, stock returns rise predictably around these events, making such days attractive for targeted equity exposure.
Backtest performance
Annualised return7.2%
Beta0.093
Sortino ratio-0.104
Win rate54%
Full Python code
from AlgorithmImports import *
from pandas.tseries.offsets import BDay
#endregion
class ScheduledAnnouncementsAnomaly(QCAlgorithm):
def initialize(self):
self.set_start_date(2000, 1, 1)
self.set_cash(100_000)
self.symbol: Symbol = self.add_equity("SPY", Resolution.MINUTE).symbol
csv_string_file: str = self.download('data.quantpedia.com/backtesting_data/economic/economic_announcements.csv')
dates: List[str] = csv_string_file.split('\r\n')
self.announcement_dates_t_minus_one: List[datetime.date] = [(datetime.strptime(x, "%Y-%m-%d") - BDay(1)).date() for x in dates]
def on_data(self, data: Slice) -> None:
if self.time.hour == 15 and self.time.minute == 44:
if self.time.date() in self.announcement_dates_t_minus_one:
if not self.portfolio[self.symbol].is_long:
self.market_on_close_order(self.symbol, self.calculate_order_quantity(self.symbol, 1.))
else:
if self.portfolio[self.symbol].is_long:
self.market_on_close_order(self.symbol, -self.portfolio[self.symbol].quantity)