The strategy trades the high-yield CDS index CDX.NA.HY, rebalancing weekly based on FOMC schedules, opening short positions on odd weeks and long positions on even weeks.

I. STRATEGY IN A NUTSHELL

Trades the high-yield CDS index CDX.NA.HY around FOMC announcements. Positions open the day before each FOMC meeting (or second day for two-day meetings). Weekly rebalancing: short in odd weeks, long in even weeks.

II. ECONOMIC RATIONALE

CDS returns follow a biweekly FOMC cycle. FOMC and Board meetings reduce macro uncertainty, lowering equity risk premiums and boosting CDS returns. Even-week returns are stronger after accommodative surprises or poor prior stock performance.

III. SOURCE PAPER

Does the FOMC Cycle Affect Credit Risk? [Click to Open PDF]

Difang Huang, Monash University; Yubin Li, Harbin Institute of Technology, Shenzhen; Xinjie Wang, Southern University of Science and Technology; Zhaodong Zhong, Rutgers University

<Abstract>

This paper studies the returns of CDS indices over the Federal Open Market Committee (FOMC) cycle. We document that the CDS return is significantly higher in even weeks than in odd weeks of the FOMC cycle. The biweekly pattern in the CDS market is not a mere reflection of that in the stock market. A simple trading strategy based on the biweekly pattern yields an annual excess return of 8.8%. This pattern is linked to the resolution of macroeconomic uncertainty by the biweekly schedules of the Fed Reserve internal Board of Governors meetings. We provide further evidence that the Fed affects the CDS market via unexpected information signals and monetary policies that lead to reductions in the risk premium.

IV. BACKTEST PERFORMANCE

Annualised Return8.89%
Volatility14.87%
Beta0.039
Sharpe Ratio0.6
Sortino Ratio-0.364
Maximum DrawdownN/A
Win Rate43%

V. FULL PYTHON CODE

from AlgorithmImports import *
class FOMCCycleAndCreditRisk(QCAlgorithm):
    def Initialize(self):
        self.SetStartDate(2012, 1, 1)   # HYG price is causing margin call in 2011.
        self.SetCash(100000)
        
        self.weights = { "HYG" : 1, 'IEI' : -0.5, 'SHY': -0.5 }
        
        for symbol in self.weights:
            data = self.AddEquity(symbol, Resolution.Minute)
            data.SetLeverage(5) # leverage can be set according to the strategy
        csv_string_file = self.Download('data.quantpedia.com/backtesting_data/economic/fed_days.csv')
        dates = csv_string_file.split('\r\n')
        dates_before_fed = [datetime.strptime(x, "%Y-%m-%d") for x in dates]
        
        self.trade_flag = False
        self.days_to_switch_positions = 5
        
        symbol = [x for x in self.weights.keys()][0]
        self.Schedule.On(self.DateRules.On(dates_before_fed), self.TimeRules.AfterMarketOpen(symbol, 1), self.FEDDays)
        self.Schedule.On(self.DateRules.EveryDay(symbol), self.TimeRules.AfterMarketOpen(symbol, 1), self.Rebalance)
        
    # At FED day go +1.0HYG - 0.5xIEI - 0.5xSHY
    def FEDDays(self):
        # At first liquidate portfolio on FED days
        self.Liquidate()
        
        self.FedDaysAndOddWeeksInvestment()
        self.days_to_switch_positions = 5
        self.trade_flag = True
    # every odd week go +1.0xHYG - 0.5xIEI - 0.5xSHY
    # every even week go -1.0xHYG + 0.5xIEI + 0.5xSHY
    def Rebalance(self):
        if self.trade_flag:
            if self.days_to_switch_positions == 0: 
                if self.Portfolio["HYG"].IsLong:
                    self.FedDaysAndEvenWeeksInvestment()
                else:
                    self.FedDaysAndOddWeeksInvestment()
                self.days_to_switch_positions = 5
            self.days_to_switch_positions -= 1
    
    def FedDaysAndOddWeeksInvestment(self):
        for symbol, weight in self.weights.items():
            if self.Securities[symbol].Price != 0:
                self.SetHoldings(symbol, weight)
    def FedDaysAndEvenWeeksInvestment(self):
        for symbol, weight in self.weights.items():
            if self.Securities[symbol].Price != 0:
                self.SetHoldings(symbol, -weight)

VI. Backtest Performance

Leave a Reply

Discover more from Quant Buffet

Subscribe now to keep reading and get access to the full archive.

Continue reading