static public double CalcStrike( InitialTerm.InitialParameter param, double forward, double volatility, InitialTerm.DeltaType deltaType, InitialTerm.VolatilityType volatilityType) { switch (volatilityType) { case InitialTerm.VolatilityType.ATM: return(CalcAtmStrike(param, forward, volatility, deltaType)); case InitialTerm.VolatilityType.MS25Call: return(CalcInvCdf( param, volatility, forward, 0.25, Type, deltaType)); case InitialTerm.VolatilityType.MS25Put: return(CalcInvCdf( param, volatility, forward, -0.25, Type, deltaType)); case InitialTerm.VolatilityType.MS10Call: return(CalcInvCdf( param, volatility, forward, 0.1, Type, deltaType)); case InitialTerm.VolatilityType.MS10Put: return(CalcInvCdf( param, volatility, forward, -0.1, Type, deltaType)); default: return(0); } }
static public InitialTerm.CallPutType CallOrPut(InitialTerm.VolatilityType volatilityType) { var type = InitialTerm.CallPutType.put; if (volatilityType == InitialTerm.VolatilityType.MS10Put || volatilityType == InitialTerm.VolatilityType.MS25Put) { type = InitialTerm.CallPutType.put; } else { type = InitialTerm.CallPutType.call; } return(type); }
public static double Volatility(InitialTerm.InitialParameter param, InitialTerm.VolatilityType volatilityType) { double volatility = 0.0; if (volatilityType == InitialTerm.VolatilityType.ATM) { volatility = param.volATM; } else if (volatilityType == InitialTerm.VolatilityType.MS25Call || volatilityType == InitialTerm.VolatilityType.MS25Put) { volatility = param.volATM + param.volMS25; } else if (volatilityType == InitialTerm.VolatilityType.MS10Call || volatilityType == InitialTerm.VolatilityType.MS10Put) { volatility = param.volATM + param.volMS10; } return(volatility); }