My question is about best practices for reconstructing volatility smiles for a fixed tenor from American option data. For simplicity/liquidity, I am currently considering options on SPY. I am currently having difficulty merging together information from calls and puts to construct the entire smile in a unified way. The resources I have found first recommend to construct the surface from the out-of-the-money options of both types, so I am selecting an ATM strike, solving for the implied repo rate at that strike, and then constructing the vol surface by calculating implied volatilities from end of day mid prices on those out of the money options using that repo rate. The problem with this is that the skews from the call and put sections do not line up creating a kink at the strike at which I join the surface. This kink causes a load of arbitrage violations, see the image below.
I am wondering what is the standard way to correct for this? One thing I can think of that may help would be to calculate an implied repo for each shared strike, but then we are digging into some in-the-money-options for which put-call parity has less reason to hold. On the same note is it even ok to back out implied repos from ATM American option prices given that put-call parity technically doesn't hold for them? Is there an alternative procedure for getting the appropriate rate?
Note, that I am currently using European BS to derive the implied volatilities but for OTM options I would hope the early exercise premium would be small and not be affecting the skew this much. Note: I have implemented the BAW American option approximation formula separately and the skews appear to match worse (but this may be a bug!).
My question is somewhat related to this question although it is more of an extension.
Below is an example of the difference in skew for SPY options at the March 2015 regular expiry (puts are blue, calls are green). Note the kink at strike ~205.