FOMC周期效应
登录后收藏学术论文
Stock Returns Over the FOMC Cycle
联邦公开市场委员会(FOMC)周期中的股票回报 [点击查看论文]
- Duke University
- National Bureau of Economic Research
- ?Duke University - Fuqua School of Business
- ?National Bureau of Economic Research (NBER)
- University of California, Berkeley
- ?University of California, Berkeley - Haas School of Business
- Federal Reserve Board of Governors
- ?Federal Reserve Board
策略概要
投资者在联邦公开市场委员会(FOMC)周期周(第0、2、4和6周)做多标普500指数ETF、基金、期货或差价合约,其余时间持有现金。联邦公开市场委员会(FOMC)周期从预定的FOMC公告前一天开始,并在每年八次FOMC会议中的每一次会议上重置。
II. 策略合理性
回测表现
波动率13.15%
夏普比率0.92
索提诺比率0.25
胜率58%
完整 Python 代码
from AlgorithmImports import *
class TheFOMCCycleEffect(QCAlgorithm):
def initialize(self) -> None:
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/fed_days.csv')
dates: List[str] = csv_string_file.split('\r\n')
dates_before_fed: List[datetime.date] = [(datetime.strptime(x, "%Y-%m-%d") - BDay(1)).date() for x in dates]
self.trade_flag: bool = False
self.days_to_switch_positions: bool = 5
self.schedule.on(self.date_rules.on(dates_before_fed), self.time_rules.after_market_open(self.symbol, 1), self.day_before_FED)
self.schedule.on(self.date_rules.every_day(self.symbol), self.time_rules.after_market_open(self.symbol, 1), self.rebalance)
def day_before_FED(self) -> None:
self.set_holdings(self.symbol, 1)
self.days_to_switch_positions = 5
self.trade_flag = True
def rebalance(self) -> None:
if self.trade_flag:
if self.days_to_switch_positions == 0:
if self.portfolio[self.symbol].is_long:
self.liquidate(self.symbol)
else:
self.set_holdings(self.symbol, 1)
self.days_to_switch_positions = 5
self.days_to_switch_positions -= 1