public void testInitialisation() { //"Testing caplet LMM process initialisation..." //SavedSettings backup; DayCounter dayCounter = new Actual360(); RelinkableHandle <YieldTermStructure> termStructure = new RelinkableHandle <YieldTermStructure>();; termStructure.linkTo(Utilities.flatRate(Date.Today, 0.04, dayCounter)); IborIndex index = new Euribor6M(termStructure); OptionletVolatilityStructure capletVol = new ConstantOptionletVolatility( termStructure.currentLink().referenceDate(), termStructure.currentLink().calendar(), BusinessDayConvention.Following, 0.2, termStructure.currentLink().dayCounter()); Calendar calendar = index.fixingCalendar(); for (int daysOffset = 0; daysOffset < 1825 /* 5 year*/; daysOffset += 8) { Date todaysDate = calendar.adjust(Date.Today + daysOffset); Settings.setEvaluationDate(todaysDate); Date settlementDate = calendar.advance(todaysDate, index.fixingDays(), TimeUnit.Days); termStructure.linkTo(Utilities.flatRate(settlementDate, 0.04, dayCounter)); LiborForwardModelProcess process = new LiborForwardModelProcess(60, index); List <double> fixings = process.fixingTimes(); for (int i = 1; i < fixings.Count - 1; ++i) { int ileft = process.nextIndexReset(fixings[i] - 0.000001); int iright = process.nextIndexReset(fixings[i] + 0.000001); int ii = process.nextIndexReset(fixings[i]); if ((ileft != i) || (iright != i + 1) || (ii != i + 1)) { Assert.Fail("Failed to next index resets"); } } } }
internal static global::System.Runtime.InteropServices.HandleRef getCPtr(ConstantOptionletVolatility obj) { return((obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr); }
internal static global::System.Runtime.InteropServices.HandleRef getCPtr(ConstantOptionletVolatility obj) { return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr; }