Put call parity to find the fair price of SPX options ?


I was wondering if anyone is using put call parity to find the fair trading price of SPX options
I was watching a presentation by JL Lord at Stratagemtrading about synthetics and put call parity and at one point he was talking about SPX and gave an example which I found using Think back in TOS This was on 5/26/2017 looking at the May 30 expiration which was expiring in 4 days
So the closing price on that day for SPX was 2415.82 and the 2375 strike that he was looking at the calls were 35.60/44.40 bid/ ask and the put ask was 0.20
So the question was what is the fair price for this call option to sell ?
So according to the formula LC=S-K-SP so that's the stock price 2415.82 - strike price 2375 - the short put 0.20 =40.62 which was close to the mid of 40 if you calculate it and the last on TOS was showing 40.07

He was kind of joking and saying that you are giving away too much money if you place your order at the mid and that the order will be filled in milliseconds if you do
I have to somewhat disagree with that
Perhaps that would have worked with that particular strike but in reality I find that sometimes I get filled at the mid but if I try to get a little more I do not get filled and sometimes I have to give them 5-10 cents to get filled but to get filled 60 cents better than the mid I find that a little hard to believe

Also looking at some of the strikes closer to the money the put call parity formula makes even less sense
Calculating for the 2410 strike the call bid/ask is 6.70/7.50 and the put ask is 2.25 so using the formula 2415.82-2410-2.25=3.57 while calculating the mid comes to 7.1 which is the same last price on TOS

So in this case you would get filled at a worse price than the mid so unless I am missing something this put call parity formula to get the fair price for the option is not valid unless someone can prove to me otherwise


I did not watch the presentation, so my comments have inherent ignorance baked in. I do NOT use put call parity to find the fair trading price of SPX options, but do use it for aid in deriving forward price of the index (separate topic).

Thinkback lists EOD values, which seem be after the BID/ASK widens, so here are the numbers at the moment the general market closed 4PM Eastern, while active trading is still occurring and bid/ask spreads are still fairly tight. -- For the May 30th 2375 Strikes @ 1PM Pacific on 5/26/2017 (Courtesy of LiveVol 1-min data)
PUT BID->0.10, PUT ASK->0.20
CALL BID->35.70, CALL ASK->44.20

For the 2410 Strikes:
CALL BID->6.70, CALL ASK->7.20
PUT BID-> 1.85, PUT ASK->2.15

Not to discount what was stated, but for the example referenced, would not one's First order price sanity check merely be:
price floor must be greater than Last-Strike, or 2415.82-2375==40.82 <-- this would be value at expiration, so this is floor value which is missing all premium from time/volatility! -- IMHO Fair would suggest a value higher than this as a loose lower bound. This example has 4 DTE, so if more time was remaining, this approach become less useful as time value may be larger portion of value.
When I recently needed to trade a strike with a large BID/ASK on an SPX option (I forget which one), I noticed a similar issue, where taking the MID would basically be Negative premium, so I determined a price that would have a small positive premium, and only walked my price down to that limit, and let it sit, which was filled in less than 15 min (I don't recall the actual wait time).

I found a note by Steve Speer that may relate to your "Also looking ..." reference -> "(and near-the-money strikes frequently have significant parity error because of wide spreads and non-market-maker bids and offers)." suggesting your observation subsequent is accurate.

Thanks for the detailed posts!


Thanks for your thoughts
Even with the live prices it's not any better as the floor for the 2410 would have to be at 5.82 at expiration and 3.67 if you take out the put price while the mid price for the call is at 6.95 so it's a little bit closer but quite far apart for a fair fill

So what I hear you saying is that it's not that useful unless the underlying is close to expiration and the put has very low value
and even so it may not get filled because of liquidity

Trying to apply this formula to NDX is totally useless as the bid ask prices are much wider all over not just OTM and by the time you go all the way out to where the put has little value there is little or no volume so you are not even going to get filled at mid price unless you overpay
I guess he must have selected that strike just as an example or got lucky because in most other cases the put call parity formula is not useful for determining the fair call option value


I may have been unclear:
My comment:
"This example has 4 DTE, so if more time was remaining, this approach become less useful as time value may be larger portion of value. "
Related to my simple calculation, not Call Put Parity, suggesting my simple formula looses effectiveness with longer DTE!


Thanks for clarifying
I tried to look for the formula in other places and I think I found an error in his formula
His formula is like this LC+SP+K=S where LC= Long call SP= Short put K= strike and S= stock
I am thinking maybe the short put should have been negative because I have seen the formula in another place as Call – Put = Stock – Strike which is the same formula but with the negative SP

So in the first example than the call would be LC = 2415.82-2375+0.20= 41.02 which is about $1 higher than the mid and than doing the second example would be LC=2415.82-2410+2.15 for the live price =7.97 and the mid price for the live price was 6.95 which is also close to $1
So while you may or may not get filled at that price at least the corrected formula seems to be more consistent and in the ballpark of possible fills
Just for fun I calculated the price for today on the Sep 21 expiration in SPX for the at the money strike of 2900 and using the formula LC = 2901.52-2900+23 = 24.52 while the mid price is at 24.65 so it might be better to go with the mid price in this case

I tried to do the calculation for NDX but with it's wider bid/ask prices it's nowhere near the mid price It's about $10 off but at least it's fairly consistent over the strikes so that's a wild guess of what the fair price would be for NDX options


New member
I concur with Gary above and thanks to him I have also gone into vol surface analysis based on Steve Speer's "white paper". Note that Put-Call Parity is only effective on European type options in its simplest form. It is very useful to calculate the forward price for the underlying at the exact DTE.
Many use a the straight underlying instead of the future or forward in the calculation and let's say it is usually an acceptable approximation.


Hi Bruno,
I was only looking at SPX so that would be European expiration
Just out of curiosity are you using the same or similar formula or do you have your own formula ?
I saw another version of the formula that is using the risk free bond rate in the formula but that seems more complicated
Can you get a reasonable accurate result for the NDX with your formula or is that too much of a wild thing with the bid/ask prices being so wide ?


New member
Most people use the formula described here (http://www.theoptionsguide.com/understanding-put-call-parity.aspx) sometimes even further simplified C- P = S - X
Put Call Parity is explained in more detail on Wikipedia https://en.wikipedia.org/wiki/Put–call_parity
I do calculate a synthetic forward for the expiry being studied.
With regard to rates, I also calculate an approximate figure based on rates tables available on the Internet from overnight to 6 months away.
Overall low rates do not play a big role for short dated options. They do on longer dated options however those may be less liquid and spreads somewhat wider so this is a bit of a catch-22 situation.


I concur with Bruno's statements. (C-P parity used in derivation of forwards for me as well)
BTW: For TOS users, who prefer to do all analysis from within TOS, they now have access to the FRED Libor rates: for 1-mo, you can reference "USD1MTD156N:FRED", for example!


New member

I had viewed the Stratagem presentation sometime back and took some notes. But I think he made a mistake with the call put parity formula (I could be wrong of course).

If this formula is correct and we consider (1+r)t to be 1 then:

Call = Stock + Put - Strike

In his example, you would get 41.02 instead of his 40.62

2415.82 + 0.20 - 2375 = 41.02

Maybe I'll send him an email



New member
I sent an email to Scott Ruble.

In the mean time, I simply checked both formulas and I think he inverted the sign on the put. He has it - instead of +


RUT, Oct 5, 2018
Price: 1'710.97


Using the formula above:

1'710.97 - 1725 + 23.70 = 9.67

His formula:

1'710.97 - 1725 - 23.70 = -37.73

Doesn't make sens.


I know what you mean
That's why I started this thread
Bruno already confirmed the formula so Scot's calculation is wrong
I already came to the same conclusion I just wanted to verify in case I was wrong
I guess even a great trader can make a mistake once in a while
I also sent an email but I never got a response maybe because my free trial expired or he did not want to bother with a small error

I guess 20 cents +/- is not noticeable at the price but as you observed when you get closer to the money the price no longer makes sense
I was also questioning whether you would get filled at that price better than the mid which I was also skeptical on
While it may seam logical most of the time I don't get filled at the mid so I don't see how this is going to get filled any faster
Perhaps this was the case last year or just this particular expiration when this trade was made but most of the time the SPX bid ask spreads are much closer these days so it's probably not worth going through the calculation especially if you are not even getting filled at the mid

Try using that formula in NDX where the bid ask prices are much wider and see if you can get filled at better prices than the mid and than perhaps I may believe that you can use the put call parity to get the fair price otherwise I will always be skeptical


New member
We all make mistakes !!!
Put Call Parity is always respected for European options (Wikipedia is the best reference) otherwise there would be arbitrage opportunities.
In my calculations (e.g. synthetic forward), I rely on highly liquid near the money options where the spread is tightest. Spread and transaction cost (sometimes called friction costs) can sometimes cause minor variations i.e. errors that are too small to warrant arbitrage.
About advantageous fills, market makers are always ahead of us on the "buy side" and they either use an estimate for the underlying that is slightly different from live quotations, or rely on different volatility figures, dividend yield etc. It may also be occasionally be linked to their book keeping i.e. not be entirely related to pricing. The Mid is always our best bet and a better fill can hardly be accountable to their generosity :)