//LocalConstantVolatility is essentially same as BlackConstantVol and is a local volatility version of BlackConstantVol
//Let's set the quoteValue = 0.05 and use the constantVolatility a BlackConstantVol
volatilityQuote.setValue(0.05);
final LocalVolTermStructure localConstantVolatility = new LocalConstantVol(2,new UnitedStates(Market.NYSE),handleToVolatilityQuote, new Actual365Fixed());
//Calculating blackVolatility using maturity as 10 days after today and strike as 20
if(constantVolatility.blackVol(date10.clone(), 20) == localConstantVolatility.localVol(date10.clone(), 20,true)){
System.out.println("BlackVolatility and LocalVolatility are same and are = "+localConstantVolatility.localVol(date10.clone(), 20,true));
}
//Calculating blackVolatility using maturity as 20 days after today and strike as 30
if(constantVolatility.blackVol(date20.clone(), 30) == localConstantVolatility.localVol(date20.clone(), 30,true)){
System.out.println("BlackVolatility and LocalVolatility are same and are = "+localConstantVolatility.localVol(date20.clone(), 30,true));
}
//Calculating blackVolatility using maturity as 30 days after today and strike as 40
if(constantVolatility.blackVol(date30.clone(), 40) == localConstantVolatility.localVol(date30.clone(), 40,true)){
System.out.println("BlackVolatility and LocalVolatility are same and are = "+localConstantVolatility.localVol(date30.clone(), 40,true));
}
System.out.println("//================================LocalVolCurve==========================================");
//LocalVolatility curve wraps BlackVarianceCurve and uses it to calculate the interpolated local volatility
final LocalVolTermStructure localVolatilityCurve = new LocalVolCurve(new RelinkableHandle<BlackVarianceCurve>((BlackVarianceCurve)varianceCurve));
//Calculating blackVolatility using maturity as 12 days after today and strike as 20
volatility1 = localVolatilityCurve.localVol(date12.clone(), 20,true);
System.out.println("Interpolated BlackVolatility on LocalVolCurve = "+volatility1);
//Calculating blackVolatility using maturity as 22 days after today and strike as 30
volatility2 = localVolatilityCurve.localVol(date22.clone(), 30,true);
System.out.println("Interpolated BlackVolatility on LocalVolCurve = "+volatility2);
//Calculating blackVolatility using maturity as 32 days after today and strike as 40
volatility3 = localVolatilityCurve.localVol(date32.clone(), 40,true);
System.out.println("Interpolated BlackVolatility on LocalVolCurve = "+volatility3);
//TODO
// System.out.println("//================================LocalVolSurface========================================");