I recently purchased SPX options data from the CBOE. Normally, if the data is OK and the Put-Call parity holds, one should expect to correctly imply ZC (Zero Coupon bond) prices and forwards by performing a linear regression on all available collar prices (long put and short call of the same strike), given a fixed maturity $T$.
This works indeed very well, until we come close to maturity. More specifically, the linear regression gives wrong results for collars on their last trading day. For example, if I perform linear regression on all the collars available at date 2005-02-17 (Thursday) which expire on 2005-02-19, I get an annualized risk-free rate of 84.85% (or a ZC being worth ~99.5297%), which is clearly wrong.
What I find weird is that this behavior happens only one day before the 3rd friday. Is there something I am missing about how the prices behave when close to expiration ?
I'm adding here a plot of how of the term structure of the implied risk-free rate (that I have smoothed using a Nelson-Siegel fit but the behavior is present regardless of whether I smooth the curves or not) evolves as we approach the third Thursday 2005-02-17 :
When we are a little far from that date, we get more coherent term structures :