How to price VXX options with BlackScholes

Discussion in 'Options' started by optiontrader123, Feb 21, 2020.

  1. In fairness, you don't really know what he's trying to do here. For example, he might be doing some sort of ex post experiments to establish pricing efficiency (i.e. knowing the actual realized vol and simulating delta hedging at each point in time).

    In any case, learning to price options from the first principles (as opposed to simply taking the market inputs) is a very useful exercise for a variety of reasons. For one, you learn how the market makers come up with these prices in the first place.
     
    #11     Feb 22, 2020
    ajacobson and ironchef like this.
  2. Yes it is a useful exercise and good to know how to calculate approx as you say. I think I have a reached a problem I wonder if it is possible in somehow.

    The unknown factor as I have understand is the Implied Volatility when theoretically calculating the option price. But the problem is to calculate the Implied Volatility you need to know the option price which is the whole question from the beginning.

    I wonder if there is a way to calculate the Implied Volatility not knowing the option price for that particular strike?
     
    #12     Feb 22, 2020
  3. guru

    guru


    Yes, obtaining IV is the problem because as you noticed it’s calculated from option prices, or it’s just a way to evaluate option prices.
    Option pricing is based simply on whatever anyone wants to pay for them or buy them for. The $0.82 option may have $0.75 bid price and $0.89 ask price, but if I’m willing to pay $0.81 for that option then my own bid will affect the IV and everyone will see different IV. And then your calculations may also show that the option is worth $0.85, or somewhere between bid and ask, with my own bid affecting the IV and now the new theoretical option price.
    And generally the option prices and IV are result of a balance between different market makers and traders using various pricing models and hedging techniques.
    If you wanted to trade options at specific prices then someone may calculate that it’s too cheap and that they can hedge them with something else, and buy 1000 options from you. You’d then need to quickly adjust your price higher to not go out of business. And that’s how IV must and will change, based on demand, hedging, information, etc. If you’re not a professional market maker employing quants then all you can do is to observe option prices, not calculate them, unless for your own modeling and what-if scenarios.
     
    #13     Feb 22, 2020
  4. ironchef

    ironchef

    If like @Same Lazy Element said, you just want to get a feel of how everything plays together, HV (or a factored HV) could be a good approximation to start. I often backtest using HV.

    If you want to find IV so you can beat MM at their own game (miss-priced), it is a different problem?
     
    #14     Feb 22, 2020
  5. guru,

    Yes I got the same feeling there, it actually are 2 unknown variables in the equation here which makes the IV depend on the actual market price of the option prices at that specific time. So prices comes first and then IV in that order in a way.
    Thank you for that explanation.

    ironchef,
    Yes that is true, in a way I just need to get a feel at a first stage how things might work out approx. Yes okay I might then perheps be able to use HV in some way here. Perheps if HV has a tendency to be lower than IV for example use any substraction etc to come even a bit closes to an estimate.
    Interesting to know that you use HV when backtesting. I might try to do that and see what I can find.
    I am not really after to beat the MM at their own game for this purpose though.
     
    #15     Feb 22, 2020
  6. panzerman

    panzerman

    This code uses the method of bisection to find IV

    #include <cmath>
    #include "fin_recipes.h"
    double option_price_implied_volatility_call_black_scholes_bisections(const double& S,
    const double& K,
    const double& r,
    const double& time,
    const double& option_price){
    if (option_price<0.99*(S-K*exp(-time*r))) { // check for arbitrage violations.
    return 0.0; // Option price is too low if this happens
    };

    // simple binomial search for the implied volatility.
    // relies on the value of the option increasing in volatility
    const double ACCURACY = 1.0e-5; // make this smaller for higher accuracy
    const int MAX_ITERATIONS = 100;
    const double HIGH_VALUE = 1e10;
    const double ERROR = -1e40;

    // want to bracket sigma. first find a maximum sigma by finding a sigma
    // with a estimated price higher than the actual price.
    double sigma_low=1e-5;
    double sigma_high=0.3;
    double price = option_price_call_black_scholes(S,K,r,sigma_high,time);
    while (price < option_price) {
    sigma_high = 2.0 * sigma_high; // keep doubling.
    price = option_price_call_black_scholes(S,K,r,sigma_high,time);
    if (sigma_high>HIGH_VALUE) return ERROR; // panic, something wrong.
    };
    for (int i=0;i<MAX_ITERATIONS;i++){
    double sigma = (sigma_low+sigma_high)*0.5;
    price = option_price_call_black_scholes(S,K,r,sigma,time);
    double test = (price-option_price);
    if (fabs(test)<ACCURACY) { return sigma; };
    if (test < 0.0) { sigma_low = sigma; }
    else { sigma_high = sigma; }
    };
    return ERROR;
    };
     
    #16     Feb 22, 2020
  7. ajacobson

    ajacobson

    I agree with SLE the BS model is about setting expectations or understanding how to hedge. It's the marketplace's job to price.
     
    #17     Feb 22, 2020