public void testFSpreaded() { // Testing consistency of forward-spreaded term structure CommonVars vars = new CommonVars(); double tolerance = 1.0e-10; Quote me = new SimpleQuote(0.01); Handle <Quote> mh = new Handle <Quote>(me); YieldTermStructure spreaded = new ForwardSpreadedTermStructure(new Handle <YieldTermStructure>(vars.termStructure), mh); Date testDate = vars.termStructure.referenceDate() + new Period(5, TimeUnit.Years); DayCounter tsdc = vars.termStructure.dayCounter(); DayCounter sprdc = spreaded.dayCounter(); double forward = vars.termStructure.forwardRate(testDate, testDate, tsdc, Compounding.Continuous, Frequency.NoFrequency).rate(); double spreadedForward = spreaded.forwardRate(testDate, testDate, sprdc, Compounding.Continuous, Frequency.NoFrequency).rate(); if (Math.Abs(forward - (spreadedForward - me.value())) > tolerance) { QAssert.Fail("unable to reproduce forward from spreaded curve\n" + " calculated: " + (spreadedForward - me.value()) + "\n" + " expected: " + forward); } }
public void testFSpreadedObs() { // ("Testing observability of forward-spreaded term structure..."); CommonVars vars = new CommonVars(); SimpleQuote me = new SimpleQuote(0.01); Handle <Quote> mh = new Handle <Quote>(me); RelinkableHandle <YieldTermStructure> h = new RelinkableHandle <YieldTermStructure>(); //(vars.dummyTermStructure); YieldTermStructure spreaded = new ForwardSpreadedTermStructure(h, mh); Flag flag = new Flag(); spreaded.registerWith(flag.update); h.linkTo(vars.termStructure); if (!flag.isUp()) { Console.WriteLine("Observer was not notified of term structure change"); } flag.lower(); me.setValue(0.005); if (!flag.isUp()) { Console.WriteLine("Observer was not notified of spread change"); } }
internal static global::System.Runtime.InteropServices.HandleRef getCPtr(ForwardSpreadedTermStructure obj) { return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr; }