/* * (c) Copyright Christian P. Fries, Germany. All rights reserved. Contact: email@christianfries.com. * * Created on 07.08.2014 */ package net.finmath.marketdata.model.curves; import org.joda.time.DateTimeConstants; import org.joda.time.LocalDate; import org.junit.Assert; import org.junit.Test; import net.finmath.marketdata.model.AnalyticModelInterface; import net.finmath.time.businessdaycalendar.BusinessdayCalendarExcludingTARGETHolidays; import net.finmath.time.businessdaycalendar.BusinessdayCalendarInterface; import net.finmath.time.businessdaycalendar.BusinessdayCalendarInterface.DateRollConvention; import net.finmath.time.daycount.DayCountConventionInterface; import net.finmath.time.daycount.DayCountConvention_ACT_360; /** * @author Christian Fries * */ public class ForwardCurveNelsonSiegelSvenssonTest { @Test public void test() { final double[] nssParameters = new double[] { 0.02, -0.010, 0.16, -0.17, 4.50, 3.5 }; LocalDate referenceDate = new LocalDate(2014, DateTimeConstants.AUGUST, 16); String paymentOffsetCode = "3M"; BusinessdayCalendarInterface paymentBusinessdayCalendar = new BusinessdayCalendarExcludingTARGETHolidays(); BusinessdayCalendarInterface.DateRollConvention paymentDateRollConvention = DateRollConvention.MODIFIED_FOLLOWING; DayCountConventionInterface daycountConvention = new DayCountConvention_ACT_360(); ForwardCurveInterface forwardCurve = new ForwardCurveNelsonSiegelSvensson("EUR Curve", referenceDate, paymentOffsetCode, paymentBusinessdayCalendar, paymentDateRollConvention, daycountConvention, nssParameters, 365.0/360.0, 0.0); AnalyticModelInterface model = null; // No model context needed Assert.assertEquals("Forward", 0.0037364893, forwardCurve.getForward(model, 1.0), 1E-9); Assert.assertEquals("Forward", 0.0179295573, forwardCurve.getForward(model, 5.0), 1E-9); Assert.assertEquals("Forward", 0.0298339699, forwardCurve.getForward(model, 10.0), 1E-9); Assert.assertEquals("Forward", 0.0248458389, forwardCurve.getForward(model, 20.0), 1E-9); Assert.assertEquals("Forward", 0.0223256887, forwardCurve.getForward(model, 25.0), 1E-9); } }