package examples; import org.quantlib.Actual365Fixed; import org.quantlib.ActualActual; import org.quantlib.BusinessDayConvention; import org.quantlib.CPI; import org.quantlib.CPIBond; import org.quantlib.CPISwap; import org.quantlib.Calendar; import org.quantlib.CashFlow; import org.quantlib.Compounding; import org.quantlib.Date; import org.quantlib.DateGeneration; import org.quantlib.DateVector; import org.quantlib.Datum; import org.quantlib.DayCounter; import org.quantlib.DiscountingBondEngine; import org.quantlib.DiscountingSwapEngine; import org.quantlib.DoubleVector; import org.quantlib.Frequency; import org.quantlib.GBPLibor; import org.quantlib.IborIndex; import org.quantlib.InterpolatedZeroLinear; import org.quantlib.Leg; import org.quantlib.Linear; import org.quantlib.Month; import org.quantlib.Period; import org.quantlib.PiecewiseZeroInflationLinear; import org.quantlib.RelinkableYieldTermStructureHandle; import org.quantlib.RelinkableZeroInflationTermStructureHandle; import org.quantlib.Schedule; import org.quantlib.Settings; import org.quantlib.TimeUnit; import org.quantlib.UKRPI; import org.quantlib.UnitedKingdom; import org.quantlib.YieldTermStructure; import org.quantlib.YieldTermStructureHandle; import org.quantlib.ZeroCouponInflationSwapHelper; import org.quantlib.ZeroHelper; import org.quantlib.ZeroHelperVector; import org.quantlib.ZeroInflationIndex; import org.quantlib.ZeroInflationTermStructure; import org.quantlib._CPISwap; public class CPIBonds { /** * @param args */ static { try { System.loadLibrary("QuantLibJNI"); } catch (RuntimeException e) { e.printStackTrace(); } } public static void main(String[] args) throws Exception { // common data long beginTime = System.currentTimeMillis(); // Date startDate; DateVector zciisD = new DateVector(); DoubleVector zciisR = new DoubleVector(); Integer zciisDataLength; // option variables DoubleVector nominals = new DoubleVector(); // 1M nominals.add(100); Frequency frequency = Frequency.Annual; // usual setup double volatility = 0.01; Integer length = 7; Calendar calendar = new UnitedKingdom(); BusinessDayConvention convention = BusinessDayConvention.ModifiedFollowing; Date today = new Date(25, Month.November, 2009); Date evaluationDate = calendar.adjust(today); Settings.instance().setEvaluationDate(evaluationDate); Integer settlementDays = 0; Integer fixingDays = 0; Date settlement = calendar.advance(today,settlementDays,TimeUnit.Days); // startDate = settlement; // uk rpi index Date from = new Date(20, Month.July, 2007); //Date from(20, July, 2008); Date to = new Date(20, Month.November, 2009); Schedule rpiSchedule = new Schedule(from, to, new Period(1, TimeUnit.Months),new UnitedKingdom(), BusinessDayConvention.ModifiedFollowing,BusinessDayConvention.ModifiedFollowing,DateGeneration.Rule.Forward, false); double fixData[] = { 206.1, 207.3, 208.0, 208.9, 209.7, 210.9, 209.8, 211.4, 212.1, 214.0, 215.1, 216.8, 216.5, 217.2, 218.4, 217.7, 216, 212.9, 210.1, 211.4, 211.3, 211.5, 212.8, 213.4, 213.4, 213.4, 214.4, -999.0, -999.0 }; // link from cpi index to cpi TS RelinkableZeroInflationTermStructureHandle hcpi = new RelinkableZeroInflationTermStructureHandle(); boolean interp = false;// this MUST be false because the observation lag is only 2 months // for ZCIIS; but not for contract if the contract uses a bigger lag. UKRPI ii = new UKRPI(interp, hcpi); for (Integer i=0; i