static public double CalcDeltaValue( InitialTerm.InitialParameter param, double forward, double strike, double volatility, InitialTerm.CallPutType type, InitialTerm.DeltaType deltaType) { var d1 = DFuncCalculator.CalcDValue(param, volatility, param.tau, forward, strike); var d2 = d1 - volatility * Math.Sqrt(param.tau); switch (deltaType) { case InitialTerm.DeltaType.PipsSpotDelta: return((int)type * Math.Exp(-param.rateOfForeign * param.tau) * CDF((int)type * d1)); case InitialTerm.DeltaType.PercentageSpotDelta: return((int)type * Math.Exp(-param.rateOfDomestic * param.tau) * strike / param.spotRate * CDF((int)type * d2)); default: return(0.0); } }
static public double CalcOptionPrice( InitialTerm.InitialParameter param, double forward, double strike, double d1, double d2, InitialTerm.CallPutType type) { return((int)type * forward * Math.Exp(-param.rateOfForeign * param.tau) * Normal.CDF(0, 1, (int)type * d1) - strike * Normal.CDF(0, 1, (int)type * d2)); }
public static double CalcInvCdf( InitialTerm.InitialParameter param, double volatility, double forward, double delta, InitialTerm.CallPutType type, InitialTerm.DeltaType deltaType) { Volatility = volatility; Forward = forward; DeltaType = deltaType; Number = delta; var strikeCalculator = new StrikrCalcultor(param); return(UseBisection.Calc( strikeCalculator.DeltaFunctionOfStrike, 0.5 * param.spotRate, 2.0 * param.spotRate)); }