//the underlying termstructure and changes to same are linked to ImpliedVolTermStructure
//as well.
//Lets use underlying as varianceCurve defined above by creating a relinkable handle as shown below
final RelinkableHandle<BlackVolTermStructure> varianceCurveHandle = new RelinkableHandle<BlackVolTermStructure>(varianceCurve);
final BlackVarianceTermStructure impliedVolTermStructure = new ImpliedVolTermStructure(varianceCurveHandle, today);
//Calculating blackVolatility using maturity as 12 days after today and strike as 20
volatility1 = varianceCurve.blackVol(date12.clone(), 20);
final double impliedVolatility1 = impliedVolTermStructure.blackVol(date12.clone(), 20);
if(volatility1 == impliedVolatility1){
System.out.println("Interpolated BlackVolatility on BlackVarianceCurve is same for varianceCurve and ImpliedVolTermStructure derived on it and = "+volatility1);
}
//Calculating blackVolatility using maturity as 22 days after today and strike as 30
volatility2 = varianceCurve.blackVol(date22.clone(), 30);
final double impliedVolatility2 = impliedVolTermStructure.blackVol(date22.clone(), 30);
if(volatility2 == impliedVolatility2){
System.out.println("Interpolated BlackVolatility on BlackVarianceCurve is same for varianceCurve and ImpliedVolTermStructure derived on it and = "+volatility2);
}
//Calculating blackVolatility using maturity as 32 days after today and strike as 40
volatility3 = varianceCurve.blackVol(date32.clone(), 40);
final double impliedVolatility3 = impliedVolTermStructure.blackVol(date32.clone(), 40);
if(volatility3 == impliedVolatility3){
System.out.println("Interpolated BlackVolatility on BlackVarianceCurve is same for varianceCurve and ImpliedVolTermStructure derived on it and = "+volatility3);
}
//Calculating blackForwardVolatility between 12 days after today and 16 days after today with strike as 20
forwardVolatility1 = varianceCurve.blackForwardVol(date12.clone(), date16.clone(), 20, true);
final double impliedForwardVolatility1 = impliedVolTermStructure.blackForwardVol(date12.clone(), date16.clone(), 20, true);
if(forwardVolatility1 == impliedForwardVolatility1){
System.out.println("Interpolated BlackForwardVolatility on BlackVarianceCurve is same for varianceCurve and ImpliedVolTermStructure derived on it and = "+forwardVolatility1);
}
//Calculating blackForwardVolatility between 22 days after today and 26 days after today with strike as 40
forwardVolatility2 = varianceCurve.blackForwardVol(date22.clone(), date26.clone(), 40, true);
final double impliedForwardVolatility2 = impliedVolTermStructure.blackForwardVol(date22.clone(), date26.clone(), 40, true);
if(forwardVolatility2 == impliedForwardVolatility2){
System.out.println("Interpolated BlackForwardVolatility on BlackVarianceCurve is same for varianceCurve and ImpliedVolTermStructure derived on it and = "+forwardVolatility2);
}
//Calculating blackForwardVolatility between 27 days after today and 35 days after today with strike as 60
forwardVolatility3 = varianceCurve.blackForwardVol(date27.clone(), date35.clone(), 60, true);
final double impliedForwardVolatility3 = impliedVolTermStructure.blackForwardVol(date27.clone(), date35.clone(), 60, true);
if(forwardVolatility3 == impliedForwardVolatility3){
System.out.println("Interpolated BlackForwardVolatility on BlackVarianceCurve is same for varianceCurve and ImpliedVolTermStructure derived on it and = "+forwardVolatility3);
}
//Calculating blackVariance using maturity as 12 days after today and strike as 20
final double variance = varianceCurve.blackVariance(date12.clone(), 20);
final double impliedVariance = impliedVolTermStructure.blackVariance(date12.clone(), 20);
if(variance == impliedVariance){
System.out.println("Interpolated BlackVariance on BlackVarianceCurve is same for varianceCurve and ImpliedVolTermStructure derived on it and = "+varianceCurve.blackVariance(date12.clone(), 20));
}
//Calculating blackForwardVariance between 12 days after today and 16 days after today with strike as 20
final double forwardVariance = varianceCurve.blackForwardVariance(date12.clone(), date16.clone(), 20, true);
final double impliedForwardVariance = impliedVolTermStructure.blackForwardVariance(date12.clone(), date16.clone(), 20, true);
if(forwardVariance == impliedForwardVariance){
System.out.println("Interpolated BlackForwardVariance on BlackVarianceCurve is same for varianceCurve and ImpliedVolTermStructure derived on it and = "+varianceCurve.blackForwardVariance(date12.clone(), date16.clone(), 20, true));
}
System.out.println("//================================LocalConstantVol=======================================");