本文整理汇总了C#中Bond.cleanPrice方法的典型用法代码示例。如果您正苦于以下问题:C# Bond.cleanPrice方法的具体用法?C# Bond.cleanPrice怎么用?C# Bond.cleanPrice使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Bond
的用法示例。
在下文中一共展示了Bond.cleanPrice方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: testZSpreadWithGenericBond
public void testZSpreadWithGenericBond()
{
// Testing clean and dirty price with null Z-spread against theoretical prices...
CommonVars vars = new CommonVars();
Calendar bondCalendar = new TARGET();
int settlementDays = 3;
int fixingDays = 2;
bool inArrears = false;
// Fixed Underlying bond (Isin: DE0001135275 DBR 4 01/04/37)
// maturity doesn't occur on a business day
Date fixedBondStartDate1 = new Date(4,Month.January,2005);
Date fixedBondMaturityDate1 = new Date(4,Month.January,2037);
Schedule fixedBondSchedule1= new Schedule(fixedBondStartDate1,
fixedBondMaturityDate1,
new Period(Frequency.Annual), bondCalendar,
BusinessDayConvention.Unadjusted, BusinessDayConvention.Unadjusted,
DateGeneration.Rule.Backward, false);
List<CashFlow> fixedBondLeg1 = new FixedRateLeg(fixedBondSchedule1)
.withCouponRates(0.04, new ActualActual(ActualActual.Convention.ISDA))
.withNotionals(vars.faceAmount);
Date fixedbondRedemption1 = bondCalendar.adjust(fixedBondMaturityDate1,
BusinessDayConvention.Following);
fixedBondLeg1.Add(new SimpleCashFlow(100.0, fixedbondRedemption1));
Bond fixedBond1 = new Bond(settlementDays, bondCalendar, vars.faceAmount, fixedBondMaturityDate1, fixedBondStartDate1,
fixedBondLeg1);
IPricingEngine bondEngine = new DiscountingBondEngine(vars.termStructure);
fixedBond1.setPricingEngine(bondEngine);
double fixedBondImpliedValue1 = fixedBond1.cleanPrice();
Date fixedBondSettlementDate1= fixedBond1.settlementDate();
// standard market conventions:
// bond's frequency + coumpounding and daycounter of the YieldCurve
double fixedBondCleanPrice1 = BondFunctions.cleanPrice(fixedBond1, vars.termStructure, vars.spread,
new Actual365Fixed(), vars.compounding, Frequency.Annual, fixedBondSettlementDate1);
double tolerance = 1.0e-13;
double error1 = Math.Abs(fixedBondImpliedValue1-fixedBondCleanPrice1);
if (error1>tolerance) {
Assert.Fail("wrong clean price for fixed bond:"
+ "\n market asset swap spread: "
+ fixedBondImpliedValue1
+ "\n par asset swap spread: " + fixedBondCleanPrice1
+ "\n error: " + error1
+ "\n tolerance: " + tolerance);
}
// Fixed Underlying bond (Isin: IT0006527060 IBRD 5 02/05/19)
// maturity occurs on a business day
Date fixedBondStartDate2 = new Date(5,Month.February,2005);
Date fixedBondMaturityDate2 = new Date(5,Month.February,2019);
Schedule fixedBondSchedule2= new Schedule(fixedBondStartDate2,
fixedBondMaturityDate2,
new Period(Frequency.Annual), bondCalendar,
BusinessDayConvention.Unadjusted, BusinessDayConvention.Unadjusted,
DateGeneration.Rule.Backward, false);
List<CashFlow> fixedBondLeg2 = new FixedRateLeg(fixedBondSchedule2)
.withCouponRates(0.05, new Thirty360(Thirty360.Thirty360Convention.BondBasis))
.withNotionals(vars.faceAmount);
Date fixedbondRedemption2 = bondCalendar.adjust(fixedBondMaturityDate2, BusinessDayConvention.Following);
fixedBondLeg2.Add(new SimpleCashFlow(100.0, fixedbondRedemption2));
Bond fixedBond2 = new Bond(settlementDays, bondCalendar, vars.faceAmount,
fixedBondMaturityDate2, fixedBondStartDate2, fixedBondLeg2);
fixedBond2.setPricingEngine(bondEngine);
double fixedBondImpliedValue2 = fixedBond2.cleanPrice();
Date fixedBondSettlementDate2= fixedBond2.settlementDate();
// standard market conventions:
// bond's frequency + coumpounding and daycounter of the YieldCurve
double fixedBondCleanPrice2 = BondFunctions.cleanPrice(fixedBond2, vars.termStructure, vars.spread,
new Actual365Fixed(), vars.compounding, Frequency.Annual, fixedBondSettlementDate2);
double error3 = Math.Abs(fixedBondImpliedValue2-fixedBondCleanPrice2);
if (error3>tolerance) {
Assert.Fail("wrong clean price for fixed bond:"
+ "\n market asset swap spread: "
+ fixedBondImpliedValue2
+ "\n par asset swap spread: " + fixedBondCleanPrice2
+ "\n error: " + error3
+ "\n tolerance: " + tolerance);
}
// FRN Underlying bond (Isin: IT0003543847 ISPIM 0 09/29/13)
// maturity doesn't occur on a business day
Date floatingBondStartDate1 = new Date(29,Month.September,2003);
Date floatingBondMaturityDate1 = new Date(29,Month.September,2013);
Schedule floatingBondSchedule1= new Schedule(floatingBondStartDate1,
floatingBondMaturityDate1,
new Period(Frequency.Semiannual), bondCalendar,
BusinessDayConvention.Unadjusted, BusinessDayConvention.Unadjusted,
DateGeneration.Rule.Backward, false);
List<CashFlow> floatingBondLeg1 = new IborLeg(floatingBondSchedule1, vars.iborIndex)
.withPaymentDayCounter(new Actual360())
.withFixingDays(fixingDays)
.withSpreads(0.0056)
.inArrears(inArrears)
//.........这里部分代码省略.........
示例2: testGenericBondImplied
public void testGenericBondImplied()
{
// Testing implied generic-bond value against asset-swap fair price with null spread...
CommonVars vars = new CommonVars();
Calendar bondCalendar = new TARGET();
int settlementDays = 3;
int fixingDays = 2;
bool payFixeddouble = true;
bool parAssetSwap = true;
bool inArrears = false;
// Fixed Underlying bond (Isin: DE0001135275 DBR 4 01/04/37)
// maturity doesn't occur on a business day
Date fixedBondStartDate1 =new Date(4,Month.January,2005);
Date fixedBondMaturityDate1 =new Date(4,Month.January,2037);
Schedule fixedBondSchedule1 = new Schedule(fixedBondStartDate1,
fixedBondMaturityDate1,
new Period(Frequency.Annual), bondCalendar,
BusinessDayConvention.Unadjusted, BusinessDayConvention.Unadjusted,
DateGeneration.Rule.Backward, false);
List<CashFlow> fixedBondLeg1 = new FixedRateLeg(fixedBondSchedule1)
.withCouponRates(0.04, new ActualActual(ActualActual.Convention.ISDA))
.withNotionals(vars.faceAmount);
Date fixedbondRedemption1 = bondCalendar.adjust(fixedBondMaturityDate1,
BusinessDayConvention.Following);
fixedBondLeg1.Add((new SimpleCashFlow(100.0, fixedbondRedemption1)));
Bond fixedBond1 = new Bond(settlementDays, bondCalendar, vars.faceAmount,
fixedBondMaturityDate1, fixedBondStartDate1, fixedBondLeg1);
IPricingEngine bondEngine = new DiscountingBondEngine(vars.termStructure);
IPricingEngine swapEngine= new DiscountingSwapEngine(vars.termStructure);
fixedBond1.setPricingEngine(bondEngine);
double fixedBondPrice1 = fixedBond1.cleanPrice();
AssetSwap fixedBondAssetSwap1 = new AssetSwap(payFixeddouble,
fixedBond1, fixedBondPrice1,
vars.iborIndex, vars.spread,
null,
vars.iborIndex.dayCounter(),
parAssetSwap);
fixedBondAssetSwap1.setPricingEngine(swapEngine);
double fixedBondAssetSwapPrice1 = fixedBondAssetSwap1.fairCleanPrice();
double tolerance = 1.0e-13;
double error1 = Math.Abs(fixedBondAssetSwapPrice1-fixedBondPrice1);
if (error1>tolerance) {
Assert.Fail("wrong zero spread asset swap price for fixed bond:"
+ "\n bond's clean price: " + fixedBondPrice1
+ "\n asset swap fair price: " + fixedBondAssetSwapPrice1
+ "\n error: " + error1
+ "\n tolerance: " + tolerance);
}
// Fixed Underlying bond (Isin: IT0006527060 IBRD 5 02/05/19)
// maturity occurs on a business day
Date fixedBondStartDate2 =new Date(5,Month.February,2005);
Date fixedBondMaturityDate2 =new Date(5,Month.February,2019);
Schedule fixedBondSchedule2= new Schedule(fixedBondStartDate2,
fixedBondMaturityDate2,
new Period(Frequency.Annual), bondCalendar,
BusinessDayConvention.Unadjusted, BusinessDayConvention.Unadjusted,
DateGeneration.Rule.Backward, false);
List<CashFlow> fixedBondLeg2 = new FixedRateLeg(fixedBondSchedule2)
.withCouponRates(0.05, new Thirty360(Thirty360.Thirty360Convention.BondBasis))
.withNotionals(vars.faceAmount);
Date fixedbondRedemption2 = bondCalendar.adjust(fixedBondMaturityDate2,BusinessDayConvention.Following);
fixedBondLeg2.Add(new SimpleCashFlow(100.0, fixedbondRedemption2));
Bond fixedBond2 = new Bond(settlementDays, bondCalendar, vars.faceAmount,
fixedBondMaturityDate2, fixedBondStartDate2, fixedBondLeg2);
fixedBond2.setPricingEngine(bondEngine);
double fixedBondPrice2 = fixedBond2.cleanPrice();
AssetSwap fixedBondAssetSwap2= new AssetSwap(payFixeddouble,
fixedBond2, fixedBondPrice2,
vars.iborIndex, vars.spread,
null,
vars.iborIndex.dayCounter(),
parAssetSwap);
fixedBondAssetSwap2.setPricingEngine(swapEngine);
double fixedBondAssetSwapPrice2 = fixedBondAssetSwap2.fairCleanPrice();
double error2 = Math.Abs(fixedBondAssetSwapPrice2-fixedBondPrice2);
if (error2>tolerance) {
Assert.Fail("wrong zero spread asset swap price for fixed bond:"
+ "\n bond's clean price: " + fixedBondPrice2
+ "\n asset swap fair price: " + fixedBondAssetSwapPrice2
+ "\n error: " + error2
+ "\n tolerance: " + tolerance);
}
// FRN Underlying bond (Isin: IT0003543847 ISPIM 0 09/29/13)
// maturity doesn't occur on a business day
Date floatingBondStartDate1 =new Date(29,Month.September,2003);
Date floatingBondMaturityDate1 =new Date(29,Month.September,2013);
Schedule floatingBondSchedule1 = new Schedule(floatingBondStartDate1,
floatingBondMaturityDate1,
new Period(Frequency.Semiannual), bondCalendar,
BusinessDayConvention.Unadjusted, BusinessDayConvention.Unadjusted,
DateGeneration.Rule.Backward, false);
//.........这里部分代码省略.........
示例3: testSpecializedBondVsGenericBondUsingAsw
public void testSpecializedBondVsGenericBondUsingAsw()
{
// Testing asset-swap prices and spreads for specialized bond against equivalent generic bond...
CommonVars vars = new CommonVars();
Calendar bondCalendar = new TARGET();
int settlementDays = 3;
int fixingDays = 2;
bool payFixedRate = true;
bool parAssetSwap = true;
bool inArrears = false;
// Fixed bond (Isin: DE0001135275 DBR 4 01/04/37)
// maturity doesn't occur on a business day
Date fixedBondStartDate1 = new Date(4,Month.January,2005);
Date fixedBondMaturityDate1 = new Date(4,Month.January,2037);
Schedule fixedBondSchedule1 = new Schedule(fixedBondStartDate1,
fixedBondMaturityDate1,
new Period(Frequency.Annual), bondCalendar,
BusinessDayConvention.Unadjusted, BusinessDayConvention.Unadjusted,
DateGeneration.Rule.Backward, false);
List<CashFlow> fixedBondLeg1 = new FixedRateLeg(fixedBondSchedule1)
.withCouponRates(0.04, new ActualActual(ActualActual.Convention.ISDA))
.withNotionals(vars.faceAmount);
Date fixedbondRedemption1 = bondCalendar.adjust(fixedBondMaturityDate1, BusinessDayConvention.Following);
fixedBondLeg1.Add(new SimpleCashFlow(100.0, fixedbondRedemption1));
// generic bond
Bond fixedBond1 = new Bond(settlementDays, bondCalendar, vars.faceAmount,
fixedBondMaturityDate1, fixedBondStartDate1, fixedBondLeg1);
IPricingEngine bondEngine = new DiscountingBondEngine(vars.termStructure);
IPricingEngine swapEngine = new DiscountingSwapEngine(vars.termStructure);
fixedBond1.setPricingEngine(bondEngine);
// equivalent specialized fixed rate bond
Bond fixedSpecializedBond1 = new FixedRateBond(settlementDays, vars.faceAmount, fixedBondSchedule1,
new List<double>{0.04},
new ActualActual(ActualActual.Convention.ISDA), BusinessDayConvention.Following,
100.0, new Date(4,Month.January,2005));
fixedSpecializedBond1.setPricingEngine(bondEngine);
double fixedBondPrice1 = fixedBond1.cleanPrice();
double fixedSpecializedBondPrice1 = fixedSpecializedBond1.cleanPrice();
AssetSwap fixedBondAssetSwap1 = new AssetSwap(payFixedRate,
fixedBond1, fixedBondPrice1,
vars.iborIndex, vars.nonnullspread,
null,
vars.iborIndex.dayCounter(),
parAssetSwap);
fixedBondAssetSwap1.setPricingEngine(swapEngine);
AssetSwap fixedSpecializedBondAssetSwap1 = new AssetSwap(payFixedRate,
fixedSpecializedBond1,
fixedSpecializedBondPrice1,
vars.iborIndex,
vars.nonnullspread,
null,
vars.iborIndex.dayCounter(),
parAssetSwap);
fixedSpecializedBondAssetSwap1.setPricingEngine(swapEngine);
double fixedBondAssetSwapPrice1 = fixedBondAssetSwap1.fairCleanPrice();
double fixedSpecializedBondAssetSwapPrice1 =
fixedSpecializedBondAssetSwap1.fairCleanPrice();
double tolerance = 1.0e-13;
double error1 =
Math.Abs(fixedBondAssetSwapPrice1-fixedSpecializedBondAssetSwapPrice1);
if (error1>tolerance) {
Assert.Fail("wrong clean price for fixed bond:"
+ "\n generic fixed rate bond's clean price: "
+ fixedBondAssetSwapPrice1
+ "\n equivalent specialized bond's clean price: "
+ fixedSpecializedBondAssetSwapPrice1
+ "\n error: " + error1
+ "\n tolerance: " + tolerance);
}
// market executable price as of 4th sept 2007
double fixedBondMktPrice1= 91.832;
AssetSwap fixedBondASW1 = new AssetSwap(payFixedRate,
fixedBond1, fixedBondMktPrice1,
vars.iborIndex, vars.spread,
null,
vars.iborIndex.dayCounter(),
parAssetSwap);
fixedBondASW1.setPricingEngine(swapEngine);
AssetSwap fixedSpecializedBondASW1 = new AssetSwap(payFixedRate,
fixedSpecializedBond1,
fixedBondMktPrice1,
vars.iborIndex, vars.spread,
null,
vars.iborIndex.dayCounter(),
parAssetSwap);
fixedSpecializedBondASW1.setPricingEngine(swapEngine);
double fixedBondASWSpread1 = fixedBondASW1.fairSpread();
double fixedSpecializedBondASWSpread1 = fixedSpecializedBondASW1.fairSpread();
double error2 = Math.Abs(fixedBondASWSpread1-fixedSpecializedBondASWSpread1);
if (error2>tolerance) {
Assert.Fail("wrong asw spread for fixed bond:"
+ "\n generic fixed rate bond's asw spread: "
+ fixedBondASWSpread1
+ "\n equivalent specialized bond's asw spread: "
+ fixedSpecializedBondASWSpread1
+ "\n error: " + error2
//.........这里部分代码省略.........