"""Run with FinancePy 1.1.2 installed, or its checkout on PYTHONPATH."""
from financepy.products.rates.ibor_swap import IborSwap
from financepy.utils.date import Date
from financepy.utils.frequency import FrequencyTypes
from financepy.utils.day_count import DayCountTypes
from financepy.utils.global_types import SwapTypes
from financepy.utils.calendar import BusDayAdjustTypes

swap = IborSwap(Date(15, 1, 2027), Date(15, 1, 2028), SwapTypes.PAY, 0.04,
                FrequencyTypes.ANNUAL, DayCountTypes.THIRTY_E_360,
                bd_type=BusDayAdjustTypes.NONE)
print('Actual payment dates:', swap.fixed_leg.payment_dts)
actual = swap.cash_settled_pv01(Date(15, 1, 2026), 0.04, FrequencyTypes.ANNUAL)
print('Actual annuity:', actual)
print('Expected annuity:', 1 / 1.04)
