Skip to content

Commit 032a14d

Browse files
JEAN-PROST Frédéricritonglue
JEAN-PROST Frédéric
authored andcommitted
Pricer-2592 add test act_act_isda, act_act_isma
1 parent 67434c6 commit 032a14d

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed

modules/pricer/src/test/java/com/opengamma/strata/pricer/bond/DiscountingFixedCouponBondProductPricerTest.java

+57
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,63 @@ public class DiscountingFixedCouponBondProductPricerTest {
173173
private static final RatesFiniteDifferenceSensitivityCalculator FD_CAL =
174174
new RatesFiniteDifferenceSensitivityCalculator(EPS);
175175

176+
@Test
177+
public void test_yield_act_act_isda() {
178+
PeriodicSchedule period = PeriodicSchedule.builder()
179+
.startDate(LocalDate.of(2021, Month.JUNE, 30))
180+
.endDate(LocalDate.of(2026, Month.JUNE, 30))
181+
.frequency(Frequency.P6M)
182+
.businessDayAdjustment(BUSINESS_ADJUST)
183+
.build();
184+
ResolvedFixedCouponBond bond = FixedCouponBond.builder()
185+
.securityId(SECURITY_ID)
186+
.dayCount(DayCounts.ACT_ACT_ISDA)
187+
.fixedRate(0.085)
188+
.legalEntityId(ISSUER_ID)
189+
.currency(EUR)
190+
.notional(100)
191+
.accrualSchedule(period)
192+
.settlementDateOffset(DaysAdjustment.ofBusinessDays(2, EUR_CALENDAR))
193+
.yieldConvention(FixedCouponBondYieldConvention.DE_BONDS)
194+
.exCouponPeriod(EX_COUPON)
195+
.build()
196+
.resolve(REF_DATA);
197+
double cleanPrice = 1.05;
198+
LocalDate settlementDate = period.getStartDate();
199+
double dirtyPrice = PRICER.dirtyPriceFromCleanPrice(bond, settlementDate, cleanPrice);
200+
assertThat(dirtyPrice).isCloseTo(cleanPrice, offset(TOL)); // 2.x.
201+
double yield = PRICER.yieldFromDirtyPrice(bond, settlementDate, dirtyPrice);
202+
assertThat(yield).isCloseTo(0.07286881667273096, offset(TOL)); // 2.x.œœ
203+
}
204+
205+
@Test
206+
public void test_yield_act_act_icma() {
207+
PeriodicSchedule period = PeriodicSchedule.builder()
208+
.startDate(LocalDate.of(2021, Month.JUNE, 30))
209+
.endDate(LocalDate.of(2026, Month.JUNE, 30))
210+
.frequency(Frequency.P6M)
211+
.businessDayAdjustment(BUSINESS_ADJUST)
212+
.build();
213+
ResolvedFixedCouponBond bond = FixedCouponBond.builder()
214+
.securityId(SECURITY_ID)
215+
.dayCount(DayCounts.ACT_ACT_ICMA)
216+
.fixedRate(0.085)
217+
.legalEntityId(ISSUER_ID)
218+
.currency(EUR)
219+
.notional(100)
220+
.accrualSchedule(period)
221+
.settlementDateOffset(DaysAdjustment.ofBusinessDays(2, EUR_CALENDAR))
222+
.yieldConvention(FixedCouponBondYieldConvention.DE_BONDS)
223+
.exCouponPeriod(EX_COUPON)
224+
.build()
225+
.resolve(REF_DATA);
226+
double cleanPrice = 1.05;
227+
LocalDate settlementDate = period.getStartDate();
228+
double dirtyPrice = PRICER.dirtyPriceFromCleanPrice(bond, settlementDate, cleanPrice);
229+
assertThat(dirtyPrice).isCloseTo(cleanPrice, offset(TOL)); // 2.x.
230+
double yield = PRICER.yieldFromDirtyPrice(bond, settlementDate, dirtyPrice);
231+
assertThat(yield).isCloseTo(0.07288818170674201, offset(TOL)); // 2.x.œœ
232+
}
176233
//-------------------------------------------------------------------------
177234
@Test
178235
public void test_presentValue() {

0 commit comments

Comments
 (0)