Option Pricing Models Interfaces and Methods

ISpanOptionPricingModel: IDispatch interface methods:

 

PutExerciseStyle(short)

                  Sets Option ExerciseStile

Parameter value:

0 for American (Default value)

1 for European.

            Returns 0 (success) or non-zero (failure).

 

PutOptionTypeIsCall(BOOL);

Sets option type. 

Returns 0 (success) or non-zero (failure).

 

PutUndPrice(double);

Sets price of the underlying instrument. 

Returns 0 (success) or E_UNDERPICE (failure).

 

PutStrikePrice(double);

Sets option strike price. 

Returns 0 (success) or E_STRIKEPRICE (failure).

 

PutVolatility(double);

Sets volatility of the underlying instrument. 

Returns 0 (success) or E_VOLATILITY (failure).

 

PutRiskFreeRate(double);

Sets risk free interest rate. 

Returns 0 (success) or E_RISKFREERATE (failure).

 

PutDivYield(double);

Sets underlying instrument dividend yield. 

Returns 0 (success) or E_DIVYIELD (failure).

 

PutExpirTime(double);

Sets option expiration time. 

Returns 0 (success) or E_TIMETOEXPIR (failure).

 

PutUnderlyingAssetType(short);

Sets Underlying Asset Type for “Greeks” Calculations.

Parameter value:

0 for Futures (Default)

1 for Physicals.

Returns 0 (success) or non-zero (failure).

 

PutAllGreeksFlag (bool);

Sets flag for all Greeks Calculation.

Returns 0 (success) or non-zero (failure).

 

PutDeltaFlag (bool);

Sets flag for Delta Calculation.

Returns 0 (success) or non-zero (failure).

 

PutVegaFlag (bool);

Sets flag for Vega Calculation.

Returns 0 (success) or non-zero (failure).

 

PutGammaFlag(bool);

Sets flag for Gamma Calculation.

Returns 0 (success) or non-zero (failure).

 

PutThetaFlag (bool);

Sets flag for Theta Calculation.

Returns 0 (success) or non-zero (failure).

 

PutRhoFlag (bool);

Sets flag for Rho Calculation.

Parameter value:

Defaults for all “Greek” Flags set to true for Merton model, but false for Whaley and Cox-Ross-Rubinstein models because they are computationally expensive.

Returns 0 (success) or non-zero (failure).

 

PutUndPriceChange(double);

Sets price of the underlying instrument. 

Returns 0 (success) or E_UNDERPICE (failure) if Zero change.

 

PutVolatilityChange (double);

Sets volatility of the underlying instrument. 

Returns 0 (success) or E_VOLATILITY (failure) ) if Zero change.

 

PutExpirTimeChange (double);

Sets option expiration time. 

Returns 0 (success) or E_TIMETOEXPIR (failure) ) if Zero change.

 

PutRiskFreeRateChange (double);

Sets risk free interest rate. 

Returns 0 (success) or E_RISKFREERATE (failure) ) if Zero change.

 

PutDivYieldChange (double);

Sets underlying instrument dividend yield. 

Parameter value:

Defaults for Changes set to 0.01% for all Change methods.

Returns 0 (success) or E_DIVYIELD (failure) ) if Zero change.

 

Calculate();

Calculates theoretical prices for an opiton. 

Returns 0 (success) or non-zero failure codes: E_FAIL , S_NOTCONVERGE, E_OUTOFMEMORY

 

GetPrice(double*);

Gets option theoretical price. 

Returns 0 (success) or non-zero (failure).

 

GetDelta(double*);

Gets option delta. 

Returns 0 (success) or non-zero (failure).

 

GetVega(double*);

Gets option vega. 

Returns 0 (success) or E_NOTIMPL (failure).

 

GetTheta(double*);

Gets option theta. 

Returns 0 (success) or E_NOTIMPL (failure).

 

GetGamma(double*);

Gets option gamma of the underlying instrument. 

Returns 0 (success) or E_NOTIMPL (failure).

 

GetRho(double*);

Gets option rho. 

Returns 0 (success) or E_NOTIMPL (failure).

 

GetIntinsicValue(double*);

Gets Intrinsic Value. 

Returns 0 (success) or non-zero (failure).

 

GetCostOfCarry(double*);

Gets CostOfCarry. 

Returns 0 (success) or non-zero (failure).

 

GetExpirTime(double*);

Gets option expiration time. 

Returns 0 (success) or non-zero (failure).

 

ISpanMertonPricingModel: ISpanOptionPricingModel interface has following methods used for analytical calculations of European Options prices on  Equities or Futures:

 

GetSpanNormalProbability(IspanNormalProbability*);

Gets a pointer to the ISpanNormalProbability interface.

Returns 0 (success) or non-zero (failure).

 

ISpanWhaleyPricingModel: ISpanOptionPricingModel interface has following methods for numerical calculation of American Options on Futures:

 

PutMaxIterations(long);

Sets max number of iterations. 

Returns 0 (success) or non-zero (failure).

 

PutConvergeTreshhold (double);

Sets Convergence Treshhold. 

Returns 0 (success) or non-zero (failure).

 

GetCriticalPrice();

Gets critical price. 

Returns 0 (success) or non-zero (failure).

 

GetModelIterations(long);

Gets number of iterations. 

Returns 0 (success) or non-zero (failure).

 

ISpanCoxRossRubPricingModel: ISpanOptionPricingModel interface has following methods for numerical calculation of American Options on Futures and Equities

 

PutTreeDimension(long);

Returns 0 (success) or E_TREEDIM (failure). 

 

ISpanOptionVolatilityModel: IDispatch interface has following methods used for numerical calculations of Implied volatilities running backward SpanOptionPricingModel:

 

PutSpanOptionPricingModel(ISpanOptionModel*);

Sets a pointer to the ISpanOptionPricingModel interface.

Returns 0 (success) or non-zero (failure).

 

PutPrice(double*);

Gets option theoretical price. 

Returns 0 (success) or E_OPTIONPRICE (failure)

 

PutMaxIterations(long);

Sets max number of iterations. 

Returns 0 (success) or non-zero (failure).

 

PutConvergeTreshhold(double);

Sets Convergence Treshhold. 

Returns 0 (success) or non-zero (failure).

 

PutLoVolatility(double);

Sets low level for volatility range. 

Returns 0 (success) or non-zero (failure).

 

PutHiVolatility(double);

Sets high level for volatility range. 

Returns 0 (success) or non-zero (failure).

 

PutHiVolLimit(double);

Sets high limit for volatility. 

Returns 0 (success) or non-zero (failure).

 

Calculte();

Calculates option volatility. 

Returns 0 (success) or non-zero failure codes: E_LOVOLATILITY, E_HIVOLATILITY, or E_INTRINSICVAL.(failure)

 

GetVolatility(double);

Gets Implied volatility for the option. 

Returns 0 (success) or non-zero (failure).

 

GetModelIterations(long);

Gets number of iterations. 

Returns 0 (success) or non-zero (failure).

 

ISpanNormalProbability: IDispatch interface has following methods 

 

PutProbabilityEventValue(double);

Sets probability event Value. 

Returns 0 (success) or non-zero (failure).

 

Calculate();

Calculates normal cumulative probability and probability density. 

Returns 0 (success) or non-zero (failure).

 

GetProbabilityDensity(double*);

Gets normal probability density. 

Returns 0 (success) or non-zero (failure).

 

GetCumulativeProbability(double*);

Gets normal cumulative probability.  

Returns 0 (success) or non-zero (failure).



Calculation Status is represented by an HRESULT generic return code

 Code Name                               Code Value                   Description       

S_OK                                       0x00000000                   Operation succesfull

S_NOTCONVERGE                   0x0000020B                  Operation succesfull  but did not converge because Max Iterations or Conversion treshhold is too low

 E_NOTIMPL                              0x80004001                   Not Imlemented

 E_INVALIDARG                         0x80070257                   One or more arguments are invalid          

 E_FAIL                                     0x80040005                   Unspecified failure

 E_OUTOFMEMORY                  0x8007000E                  Failed to allocate necessary memory

 E_UNDERPICE                         0x80040201                   Underlying Price < 0 or (Underlying Price = 0 and Time to Expiration = 0)

E_STRIKEPRICE                       0x80040202                   Strike Price < 0 or (Strike Price = 0 and Time to Expiration = 0)

 E_TIMETOEXPIR                       0x80040203                   Time to Expiration < 0

 E_RISKFREERATE                   0x80040204                   Risk free Rate < 0

 E_DIVYIELD                              0x80040205                   Dividend Yield < 0

 E_VOLATILITY                          0x80040206                   Volatility < 0

 E_TREEDIM                              0x8004020C                  number of time intervals on the binomial tree is <= 0.

 E_OPTIONPRICE                      0x80040207                   Option Price <= 0

 E_INTRINSICVAL                       0x80040208                   Opiton Price not worth Intrinsic value

 E_LOVOLATILITY                      0x80040209                   “Low Volatility Guess” value is not sufficient to produce initial trial price lower than the actual price. 

 E_HIVOLATILITYLIM                  0x8004020A                  Upper Limit Value that triggers stop in searching for the sufficient “High Volatility Guess” is not sufficient. Value should be increased.

 E_MAXITERATIONS                   0x8004020FL                 Upper bound value of iterations that triggers stop in iterations when exceeded is <=0.

 E_LOVOLATILITYVAL                0x80040210L                 Low volatility guess value sufficient to produce initial trial price lower than the actual price is <0.

 E_HIVOLATILITYVAL                 0x80040211L                 High volatility guess value sufficient to produce initial trial price higher than the actual price is <=0.

 E_HIVOLATILITYLIMVAL            0x80040212L                 Upper Limit Value that triggers stop in searching for the sufficient “High Volatility Guess” is <= 0.

 E_CONVERGETRESHHOLD      0x80040213L                 Conversion treshhold value that triggers stop in iterations when absolute difference between the trial price and the target price is less than treshhold is <= 0.




How was your SPAN Site Experience? Submit Feedback

Copyright © 2024 CME Group Inc. All rights reserved.