# Convexity of Call option prices using Put-Call parity relationship

I am trying to price vanilla options using a particular Bayesian approach that I have found in a paper. To do that I need to construct a likelihood function, approximating the tail of the distribution using the derivatives of the call prices with respect to the strike. In the paper the work is carried out using only calls, while my dataset includes both calls and puts. since I want to work with both of them I tried to recover the call prices from the observed put prices simply using the put-call parity relationship. The problem is that I expected to find that the call prices recovered in that way respect the convexity in the strike price, so that the price of the derivative decreases when the strike increases.

Here there is an example of what I obtain. These are the initial observed prices for calls and puts (ordered by increasing strike):

[723.15, 713.1, 490.95, 432.0, 421.9, 393.6, 391.7, 386.5, 372.0, 341.81, 0.05, 319.42, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.08, 0.05, 0.05, 0.05, 0.1, 0.05, 223.65, 0.08, 214.74, 0.1, 0.05, 0.1, 0.1, 0.1, 194.04, 0.1, 0.1, 0.1, 0.09, 0.08, 173.38, 0.13, 0.15, 0.15, 0.1, 0.25, 147.35, 0.18, 136.92, 0.15, 0.15, 0.2, 123.6, 0.2, 122.45, 0.2, 118.6, 0.25, 108.0, 0.3, 102.15, 0.3, 0.31, 99.0, 0.35, 92.0, 0.4, 0.46, 77.18, 0.48, 79.7, 0.46, 71.85, 0.55, 66.95, 0.66, 65.0, 0.65, 59.33, 0.75, 52.8, 0.93, 48.0, 1.1, 42.51, 1.38, 40.7, 1.7, 33.75, 2.03, 28.88, 2.7, 26.4, 3.4, 22.1, 4.6, 18.4, 6.0, 14.15, 7.12, 11.25, 7.8, 9.0, 5.7, 11.36, 3.0, 14.0, 2.25, 18.4, 1.37, 23.8, 0.8, 26.4, 0.51, 33.2, 0.3, 36.5, 0.22, 0.2, 0.2, 51.4, 0.15, 0.15, 0.1, 0.1, 0.1, 0.05, 89.15, 0.1, 0.05, 0.05, 201.05, 251.05]

Here instead I have the same observed price after the use of the put-call parity:

[723.15, 713.1, 490.95, 432.0, 421.9, 393.6, 391.7, 386.5, 372.0, 341.81, 340.39, 319.42, 320.39, 310.39, 300.39, 295.39, 290.39, 275.39, 270.39, 265.39, 260.39, 255.42, 250.39, 245.39, 240.39, 235.44, 230.39, 223.65, 225.42, 214.74, 220.44, 215.39, 210.44, 205.44, 200.44, 194.04, 195.44, 190.44, 185.44, 180.43, 175.42, 173.38, 170.47, 165.49, 160.49, 155.44, 150.59, 147.35, 145.52, 136.92, 140.49, 135.49, 130.54, 123.6, 125.54, 122.45, 120.54, 118.6, 115.59, 108.0, 110.64, 102.15, 105.64, 100.65, 99.0, 95.69, 92.0, 90.74, 85.8, 77.18, 80.82, 79.7, 75.8, 71.85, 70.89, 66.95, 66.0, 65.0, 60.99, 59.33, 56.09, 52.8, 51.27, 48.0, 46.44, 42.51, 41.72, 40.7, 37.04, 33.75, 32.37, 28.88, 28.04, 26.4, 23.74, 22.1, 19.94, 18.4, 16.34, 14.15, 12.46, 11.25, 7.8, 9.34, 5.7, 6.7, 3.0, 4.34, 2.25, 3.74, 1.37, 4.14, 0.8, 1.74, 0.51, 3.54, 0.3, 1.84, 0.22, 0.2, 0.2, 1.74, 0.15, 0.15, 0.1, 0.1, 0.1, 0.05, 9.49, 0.1, 0.05, 0.05, 1.39, 1.39]

For completeness these are the respective type of option (call/put) and the strike prices, while the maturity is fixed and very short in this case( the same problem appears also for longer maturities). All options are written on SPX.

[1370.0, 1380.0, 1600.0, 1660.0, 1670.0, 1700.0, 1705.0, 1710.0, 1720.0, 1750.0, 1760.0, 1775.0, 1780.0, 1790.0, 1800.0, 1805.0, 1810.0, 1825.0, 1830.0, 1835.0, 1840.0, 1845.0, 1850.0, 1855.0, 1860.0, 1865.0, 1870.0, 1870.0, 1875.0, 1875.0, 1880.0, 1885.0, 1890.0, 1895.0, 1900.0, 1900.0, 1905.0, 1910.0, 1915.0, 1920.0, 1925.0, 1925.0, 1930.0, 1935.0, 1940.0, 1945.0, 1950.0, 1950.0, 1955.0, 1955.0, 1960.0, 1965.0, 1970.0, 1970.0, 1975.0, 1975.0, 1980.0, 1980.0, 1985.0, 1985.0, 1990.0, 1990.0, 1995.0, 2000.0, 2000.0, 2005.0, 2005.0, 2010.0, 2015.0, 2015.0, 2020.0, 2020.0, 2025.0, 2025.0, 2030.0, 2030.0, 2035.0, 2035.0, 2040.0, 2040.0, 2045.0, 2045.0, 2050.0, 2050.0, 2055.0, 2055.0, 2060.0, 2060.0, 2065.0, 2065.0, 2070.0, 2070.0, 2075.0, 2075.0, 2080.0, 2080.0, 2085.0, 2085.0, 2090.0, 2090.0, 2095.0, 2095.0, 2100.0, 2100.0, 2105.0, 2105.0, 2110.0, 2110.0, 2115.0, 2115.0, 2120.0, 2120.0, 2125.0, 2125.0, 2130.0, 2130.0, 2135.0, 2135.0, 2140.0, 2145.0, 2150.0, 2150.0, 2155.0, 2160.0, 2165.0, 2170.0, 2175.0, 2180.0, 2180.0, 2185.0, 2190.0, 2195.0, 2300.0, 2350.0]

['C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'P', 'C', 'P', 'P', 'P', 'P', 'P', 'P', 'P', 'P', 'P', 'P', 'P', 'P', 'P', 'P', 'P', 'C', 'P', 'C', 'P', 'P', 'P', 'P', 'P', 'C', 'P', 'P', 'P', 'P', 'P', 'C', 'P', 'P', 'P', 'P', 'P', 'C', 'P', 'C', 'P', 'P', 'P', 'C', 'P', 'C', 'P', 'C', 'P', 'C', 'P', 'C', 'P', 'P', 'C', 'P', 'C', 'P', 'P', 'C', 'P', 'C', 'P', 'C', 'P', 'C', 'P', 'C', 'P', 'C', 'P', 'C', 'P', 'C', 'P', 'C', 'P', 'C', 'P', 'C', 'P', 'C', 'P', 'C', 'P', 'C', 'P', 'C', 'P', 'C', 'P', 'C', 'C', 'P', 'C', 'P', 'C', 'P', 'C', 'P', 'C', 'P', 'C', 'P', 'C', 'P', 'C', 'P', 'C', 'C', 'C', 'P', 'C', 'C', 'C', 'C', 'C', 'C', 'P', 'C', 'C', 'C', 'P', 'P']

The only simplified assumption that I did is assuming interest rate equal to 0, so that I obtain the call prices like C = P + S - K. Could the problem derive from that assumption or there is another reason that brings to violate the convexity in K of such call prices? Is there an easy way to infer the IR from my available data? One example of my problem is showed by this pair:

[319.42, 320.39] [1775.0, 1780.0] ['C', 'P'] In my opinion the call price 320.39 obtained by the PCP should be lower than the previous one, because its strike is higher. This repeats many times in my dataset if I apply the PCP.

• First why are you showing so many decimal places, and where did you get this data? Secondly please show a specific example of where you think the 'convexity ' is violated.
– dm63
Nov 28, 2017 at 0:55
• Sorry for that. I improved the format and showed one example.
– AleB
Nov 28, 2017 at 1:17
• This is probably caused by incorrect put/call parity calculation, due to the fact that deep in the money call option prices are not exactly contemporaneous with the underlying futures price you are using. Another possibility is that the deep in the money option prices are stale, since no one trades them. I'm 100pct sure that the prices are not real. One last thing: there's no point in studying short dated options that are more than 20pct in or out of the money, since they have very little time value. Either increase expiration or focus on closer strikes.
– dm63
Nov 28, 2017 at 2:04
• Actually, when imposing the relationship $C - P = S - K$ you are assuming more than just a zero risk free rate. Indeed the true call put parity writes: $$C - P = DF(0,T) \left( F(0,T) - K \right)$$ Thus you are also saying that $DF(0,T)F(0,T) = S$ while in fact, $DF(0,T)F(0,T) = S e^{(-repo-q)T}$, thus you are neglecting the effect of dividends (repo rate or similar liquidity costs). Now, given the data in your hands, you could easily estimate $F(0,T)$ as the strike where the call/put price curves intersect. Nov 28, 2017 at 9:58