Balsam Research
2 min read

June Options Expiration

Event Studies

Tomorrow is quarterly options expiration, and according to at least one report, over $5 trillion in notional exposure is rolling off the board. When the market has been trading near the top end of its recent range, June expiries have not been kind to the market historically.

To quantify today’s setup, we looked at June expiries where the market closed in the top 25% of its ten-day range. The dates in the event study report below show the Thursday before expiration. Interestingly, today broke the streak of consistent up closes in strong markets coming into June expiration. After these events, we find consistent weakness over the next two weeks peaking at five days out.

Event study results for June options expiration when market near highs

Chart showing June options expiration event dates on S&P futures

If we look at all June expiries regardless of where the market closed in relation to recent highs/lows, results improve somewhat but still underperform the benchmark. Five days out is now actually slightly positive on average. This is a good reminder to be wary of small sample sizes even when the edge appears solid. A few observations one way or the other can easily sway results.

Event study results for all June options expirations regardless of market position

But given the negative seasonality mentioned in our last post and the recent weak (approaching abysmal on some days) market breadth, this is potentially an interesting setup for shorter-term traders.

class OpEx : Strategy
{
public static void Run()
{
CsiBarServer server = new CsiBarServer(@"c:\data\csi\current");
var data = server.LoadSymbol("ES");
var strat = new OpEx();
strat.PrimarySeries = data;
strat.RunSimulation();
strat.EventStudyReport();
strat.Chart();
}
private List<DateTime> _holidays;
protected override void OnStrategyStart()
{
base.OnStrategyStart();
_holidays = DateHelper.GetHolidays(PrimarySeries).ToList();
Col1 = Stochastic(10);
}
protected override void OnBarClose()
{
base.OnBarClose();
if ((DateHelper.IsOptionsExpiration(NextDate, holidays: _holidays) || (IsLastBar && DateHelper.IsOptionsExpiration(CurrentDate.AddDays(1)))) && CurrentDate.Month == 6 && Col1.Last >= 75)
{
SnapEvent();
}
}
}