Options Pricing

Dec 30 2018
  • Options Pricing

  • BlitzTrader API provides implementation of the classic Black-Scholes option model for pricing Calls or Put. It also computes IV and Greeks: delta, gamma, theta, vega and rho The Library is used in our standard strategy of IV Scalping to compute delta position used to hedge the open position in options by buying/selling an underline contract. BlackSholes and OptionsGreek class provides API method to evaluate options pricing and Greeks

  • using namespace QX.Base.Financial
    .........
    private IVObject _ivOptionObject =
                  new IVObject("OptionInstrument",
                               "Option Instrument",
                                true,
                                InstrumentType.Options,
                                MarketDataType.All,
                                OrderEventType.All);
    private IVObject _ivUnderlyingObject =
                  new IVObject("UnderlyingInstrument",
                               "Underlying Instrument",
                               true,
                               InstrumentType.Equity | InstrumentType.Futures,
                               MarketDataType.All,
                               OrderEventType.All);
    .............................
    .............................
    IVInfo _ivInfoOption = base.GetIVInfo(_ivOptionObject);
    Options _optionInstrument = ((Options)_ivInfoOption.IVInstrument.Instrument);
    IVInfo _ivInfoUnderlying = base.GetIVInfo(_ivUnderlyingObject);
    int _optionMaturityDays = _optionInstrument.RemainingExpiryDays;
    double _timeToMaturityInYearsInABS = (double)_optionMaturityDays / 365;
    // 10% risk free Interest rate
    double _riskFreeInterestRateInABS = .01;
    double _dividendYieldInABS = 0;
    private double GetCallOptionsImpliedVolatility(double optionPrice,
                                                   double underlyingPrice)
    {
        double marketVolatility = 0;
        marketVolatility = BlackScholes.GetCallInitialImpliedVolatility(underlyingPrice,
                                                                       _optionInstrument.StrikePrice,
                                                                       _timeToMaturityInYearsInABS,
                                                                       _riskFreeInterestRateInABS,
                                                                       optionPrice,
                                                                       _dividendYieldInABS) / 100;
         return marketVolatility;
    }
    private double GetPutOptionsImpliedVolatility(double optionPrice,
                                                   double underlyingPrice)
    {
        double marketVolatility = 0;
        marketVolatility = BlackScholes. GetPutInitialImpliedVolatility (underlyingPrice,
                                                                        _optionInstrument.StrikePrice,
                                                                        _timeToMaturityInYearsInABS,
                                                                        _riskFreeInterestRateInABS,
                                                                        optionPrice,
                                                                        _dividendYieldInABS) / 100;
         return marketVolatility;
    }
    private double GetUnderlyingDelta(OrderSide underlyingOrderSide, double ivValue)
    {
        double underlyingPrice = 0;
        if (underlyingOrderSide == OrderSide.Buy)
            underlyingPrice =
                _ivInfoUnderlying.MarketDataContainer.TouchLineInfo.BestAskPrice;
        else if (underlyingOrderSide == OrderSide.Sell)
            underlyingPrice =
                _ivInfoUnderlying.MarketDataContainer.TouchLineInfo.BestBidPrice;
        if (underlyingPrice <= 0)
            return 0;
        double delta = 0;
        if (_optionInstrument.OptionType == OptionType.CA ||
                    _optionInstrument.OptionType == OptionType.CE)
        {
            delta = OptionsGreeks.GetCallOptionDelta(
                        underlyingPrice,
                        _optionInstrument.StrikePrice,
                        _riskFreeInterestRateInABS,
                        ivValue,
                        _timeToMaturityInYearsInABS,
                        _dividendYieldInABS);
        }
        else if (_optionInstrument.OptionType == OptionType.PA ||
                    _optionInstrument.OptionType == OptionType.PE)
        {
            delta = OptionsGreeks.GetPutOptionDelta(
                        underlyingPrice,
                        _optionInstrument.StrikePrice,
                        _riskFreeInterestRateInABS,
                        ivValue,
                        _timeToMaturityInYearsInABS,
                        _dividendYieldInABS);
        }
        return delta;
    }
     
 
  • Options Pricing

  • BlitzTrader API provides implementation of the classic Black-Scholes option model for pricing Calls or Put. It also computes IV and Greeks: delta, gamma, theta, vega and rho The Library is used in our standard strategy of IV Scalping to compute delta position used to hedge the open position in options by buying/selling an underline contract. BlackSholes and OptionsGreek class provides API method to evaluate options pricing and Greeks

  • using namespace QX.Base.Financial
    .........
    private IVObject _ivOptionObject =
                  new IVObject("OptionInstrument",
                               "Option Instrument",
                                true,
                                InstrumentType.Options,
                                MarketDataType.All,
                                OrderEventType.All);
    private IVObject _ivUnderlyingObject =
                  new IVObject("UnderlyingInstrument",
                               "Underlying Instrument",
                               true,
                               InstrumentType.Equity | InstrumentType.Futures,
                               MarketDataType.All,
                               OrderEventType.All);
    .............................
    .............................
    IVInfo _ivInfoOption = base.GetIVInfo(_ivOptionObject);
    Options _optionInstrument = ((Options)_ivInfoOption.IVInstrument.Instrument);
    IVInfo _ivInfoUnderlying = base.GetIVInfo(_ivUnderlyingObject);
    int _optionMaturityDays = _optionInstrument.RemainingExpiryDays;
    double _timeToMaturityInYearsInABS = (double)_optionMaturityDays / 365;
    // 10% risk free Interest rate
    double _riskFreeInterestRateInABS = .01;
    double _dividendYieldInABS = 0;
    private double GetCallOptionsImpliedVolatility(double optionPrice,
                                                   double underlyingPrice)
    {
        double marketVolatility = 0;
        marketVolatility = BlackScholes.GetCallInitialImpliedVolatility(underlyingPrice,
                                                                       _optionInstrument.StrikePrice,
                                                                       _timeToMaturityInYearsInABS,
                                                                       _riskFreeInterestRateInABS,
                                                                       optionPrice,
                                                                       _dividendYieldInABS) / 100;
         return marketVolatility;
    }
    private double GetPutOptionsImpliedVolatility(double optionPrice,
                                                   double underlyingPrice)
    {
        double marketVolatility = 0;
        marketVolatility = BlackScholes. GetPutInitialImpliedVolatility (underlyingPrice,
                                                                        _optionInstrument.StrikePrice,
                                                                        _timeToMaturityInYearsInABS,
                                                                        _riskFreeInterestRateInABS,
                                                                        optionPrice,
                                                                        _dividendYieldInABS) / 100;
         return marketVolatility;
    }
    private double GetUnderlyingDelta(OrderSide underlyingOrderSide, double ivValue)
    {
        double underlyingPrice = 0;
        if (underlyingOrderSide == OrderSide.Buy)
            underlyingPrice =
                _ivInfoUnderlying.MarketDataContainer.TouchLineInfo.BestAskPrice;
        else if (underlyingOrderSide == OrderSide.Sell)
            underlyingPrice =
                _ivInfoUnderlying.MarketDataContainer.TouchLineInfo.BestBidPrice;
        if (underlyingPrice <= 0)
            return 0;
        double delta = 0;
        if (_optionInstrument.OptionType == OptionType.CA ||
                    _optionInstrument.OptionType == OptionType.CE)
        {
            delta = OptionsGreeks.GetCallOptionDelta(
                        underlyingPrice,
                        _optionInstrument.StrikePrice,
                        _riskFreeInterestRateInABS,
                        ivValue,
                        _timeToMaturityInYearsInABS,
                        _dividendYieldInABS);
        }
        else if (_optionInstrument.OptionType == OptionType.PA ||
                    _optionInstrument.OptionType == OptionType.PE)
        {
            delta = OptionsGreeks.GetPutOptionDelta(
                        underlyingPrice,
                        _optionInstrument.StrikePrice,
                        _riskFreeInterestRateInABS,
                        ivValue,
                        _timeToMaturityInYearsInABS,
                        _dividendYieldInABS);
        }
        return delta;
    }

     

Contact US

Let us help you to achieve your goals!

     

     

     

     

     

    By providing Symphony with your contact information Symphony will process your personal data for the purpose of providing you with the information you have requested. For more information regarding Symphony's processing of your personal data, please read Symphony's Privacy Notice here.


    • Get latest updates from Us