Guest User

Untitled

a guest
Mar 18th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.01 KB | None | 0 0
  1. QuantLib::JointCalendar calendar = QuantLib::JointCalendar(QuantLib::UnitedStates(),QuantLib::UnitedKingdom(),
  2. JoinBusinessDays);
  3. QuantLib::DayCounter dayCounter = QuantLib::Actual360();
  4.  
  5. QuantLib::Integer fixingDays = 1;
  6. QuantLib::Natural settlementDays = 3;
  7.  
  8. QuantLib::Date tradeDate(20, QuantLib::September, 2013);
  9. QuantLib::Date settlementDate = calendar.advance(tradeDate, settlementDays, QuantLib::Days);
  10. settlementDate = calendar.adjust(settlementDate);
  11. QuantLib::Settings::instance().evaluationDate() = tradeDate;
  12.  
  13. QuantLib::Date issueDate(25,QuantLib::July,2013);
  14.  
  15. QuantLib::Period p1m = QuantLib::Period(1,QuantLib::Months);
  16.  
  17. // Number of payments
  18. int num_cashflows = 120;
  19. QuantLib::Date maturityDate = issueDate + num_cashflows * p1m;
  20.  
  21. QuantLib::Schedule mySchedule(issueDate,
  22. maturityDate,
  23. QuantLib::Period(QuantLib::Monthly),
  24. calendar,
  25. QuantLib::BusinessDayConvention::Unadjusted,
  26. QuantLib::BusinessDayConvention::ModifiedFollowing,
  27. QuantLib::DateGeneration::Forward,
  28. false);
  29.  
  30. QuantLib::AmortizingFloatingRateBond MyFloater(settlementDays,
  31. Notional,
  32. mySchedule,
  33. libor,
  34. QuantLib::Actual360(),
  35. QuantLib::BusinessDayConvention::ModifiedFollowing,
  36. fixingDays,
  37. std::vector<QuantLib::Real>(1,1.0),
  38. std::vector<QuantLib::Spread>(1,Spread),
  39. std::vector<QuantLib::Rate>(),
  40. std::vector<QuantLib::Rate>(),
  41. true,
  42. issueDate);
  43.  
  44. MyFloater.setPricingEngine(bondEngine);
  45.  
  46. std::vector<QuantLib::Date> paySchedule = mySchedule.dates();
  47. std::vector<QuantLib::Date>::iterator pIter;
  48. QuantLib::Date priorDate;
  49.  
  50. for (pIter = paySchedule.begin(); pIter != paySchedule.end() && *pIter < settlementDate; ++pIter){
  51. priorDate = *pIter;
  52. libor->addFixing(calendar.advance(priorDate, QuantLib::Period(-fixingDays,QuantLib::Days)), 0.1805/100);
  53. }
  54.  
  55. boost::shared_ptr<SimpleQuote> spread(new SimpleQuote(0.0));
  56. boost::shared_ptr<YieldTermStructure> spreadedCurve(
  57. new ForwardSpreadedTermStructure(liborCurve,
  58. Handle<Quote>(spread)));
  59. libor = boost::shared_ptr<IborIndex>(
  60. new USDLibor(1*Months,
  61. Handle<YieldTermStructure>(spreadedCurve)));
  62.  
  63. spread->setValue(0.002);
  64.  
  65. shared_ptr<SimpleQuote> spread = make_shared<SimpleQuote>(0.0);
  66. shared_ptr<YieldTermStructure> spreadedCurve =
  67. make_shared<ForwardSpreadedTermStructure>(liborCurve,
  68. Handle<Quote>(spread));
  69. libor = make_shared<USDLibor>(1*Months,
  70. Handle<YieldTermStructure>(liborCurve));
  71. bondEngine = make_shared<DiscountingBondEngine>(
  72. Handle<YieldTermStructure>(spreadedCurve));
Add Comment
Please, Sign In to add comment