Where is the data from?

Data is taken from Yahoo using the YQL Web service. Consequently, it's prone to inaccuracies, delays, and should not be relied upon. Especially for real-time needs and/or when markets are closed. This is a casual, educational and comparative snapshot tool.

Whoa, arb galore?!

Unfortunately, no. It's common for the last traded price of an option to not reflect current market conditions. The underlier may have moved, making the volatility calculated from the last traded option price appear under/over-priced. One needs to be cognizant of the bid/ask spread among both options and underlier, which can often suggest misleading or unrealistic volatilities.

Why is the graph so jagged?

The bid/ask spread typically widens after markets close, so implied volatilities calculated from these prices relative to one another can exhibit jagged, shark-tooth graphs. Similarly, teeny out-of-the-money options often have wide spreads that can lead to jagged graphs.

These calculations seem fishy. More details, please.

Implied volatilities are iteratively calculated based on the Bjerksund-Stensland approximation, suitable for american-style equity options. This has been tested to closely match the implied volatility calculations on the popular ThinkorSwim platform. It is important to note that the valuation ignores dividend yields, and sets the cost of carry at .0025, which are defaults on the aforementioned platform. Feel free to look a closer look at the code.

I'm comparing two different stocks, what is this x-axis?

The same strike can mean different things depending on the the underlier, so a strike by strike comparison isn't very illuminating. But viewing the strikes as relative distances from their respective at-the-money prices might be. Hence, the strikes are translated into percentages, (puts being negative, calls being positive) relative to their at-the-money. For example, the $90 put for a stock trading around $100 would have an x-axis value of -0.1, while the $150 call for the same stock would be located at +0.5.

There is a hump between the put and call volatilities. Explain.

Deep in-the-money options typically have wide bid/ask spreads and are unreliable indicators for implied volatility. Consequently the skew is constructed from out-of-the-money options, (puts to the left, calls to the right.) The hump between puts and calls demonstrates a divergence from put-call parity. In short, prices of put and call options at the same strike should theoretically have the same implied volatility. When the graph switches from puts to calls, the options are implying a different underlier price than that used to calculate the implied volatility. This is particularly noticeable when bid/ask spreads are wide, or trade information is dated, and the fair value of both options and underlier is difficult to ascertain. Infrequently traded options with wide bid/ask spreads tend to exhibit this problem, while popular, frequently traded options with tight spreads will exhibit a smooth curve, with little to no visible "vol hump." Since there are no professionals here, you should probably only be looking at the latter.