Skip to main content

Basic NAM Example

Contract Definition

import pandas as pd
from awesome_actus_lib import NAM, PublicActusService, ReferenceIndex

contract = NAM(
contractID="nam01",
contractRole="RPA",
contractDealDate="2012-12-28T00:00:00",
initialExchangeDate="2013-01-01T00:00:00",
statusDate="2012-12-30T00:00:00",
notionalPrincipal=5000,
cycleAnchorDateOfPrincipalRedemption="2013-02-01T00:00:00",
cycleOfPrincipalRedemption="P1ML0",
nextPrincipalRedemptionPayment=500,
dayCountConvention="A365",
nominalInterestRate=0.08,
currency="USD",
maturityDate="2013-12-01T00:00:00",
cycleAnchorDateOfRateReset="2013-04-01T00:00:00",
cycleOfRateReset="P3ML1",
marketObjectCodeOfRateReset="LIBOR_USD",
rateSpread=0.1,
fixingDays="P0D",
cycleAnchorDateOfInterestPayment="2013-02-01T00:00:00",
cycleOfInterestPayment="P1ML0",
interestCalculationBase="NT",
interestCalculationBaseAmount=0,
creatorID="Creator-01",
counterpartyID="Counterparty-01"
)
rf_data_LIBOR_USD = pd.DataFrame({
"date": ["2013-04-01", "2013-07-01", "2013-10-01", "2014-01-01", "2014-04-01", "2014-07-01", "2014-10-01", "2015-01-01", "2015-04-01", "2015-07-01", "2015-10-01"],
"value": [0.010567901234567900, 0.011679012345679000, 0.012790123456790100, 0.013901234567901200, 0.015012345679012300, 0.016123456790123400, 0.017234567901234500, 0.018345679012345600, 0.019456790123456800, 0.020567901234567800, 0.021679012345679000]
})
rf_LIBOR_USD = ReferenceIndex(marketObjectCode="LIBOR_USD", source=rf_data_LIBOR_USD)
service = PublicActusService()
event_stream = service.generateEvents(portfolio=contract, riskFactors=[rf_LIBOR_USD])
print(event_stream.events_df)

Generated Events

typetimepayoffcurrencynominalValuenominalRatenominalAccruedcontractId
IED2013-01-01T00:00-5000USD50000.080nam01
PR2013-02-01T00:00466.027USD4533.970.0833.9726nam01
IP2013-02-01T00:0033.9726USD4533.970.080nam01
PR2013-03-01T00:00472.175USD4061.80.0827.8249nam01
IP2013-03-01T00:0027.8249USD4061.80.080nam01
PR2013-04-01T00:00472.402USD3589.40.0827.598nam01
IP2013-04-01T00:0027.598USD3589.40.080nam01
RR2013-04-01T00:000USD3589.40.1105680nam01
PR2013-05-01T00:00467.38USD3122.020.11056832.6196nam01
IP2013-05-01T00:0032.6196USD3122.020.1105680nam01
PR2013-06-01T00:00470.682USD2651.330.11056829.3179nam01
IP2013-06-01T00:0029.3179USD2651.330.1105680nam01
PR2013-07-01T00:00475.905USD2175.430.11056824.0947nam01
IP2013-07-01T00:0024.0947USD2175.430.1105680nam01
RR2013-07-01T00:000USD2175.430.1116790nam01
PR2013-08-01T00:00479.366USD1696.060.11167920.6341nam01
IP2013-08-01T00:0020.6341USD1696.060.1116790nam01
PR2013-09-01T00:00483.913USD1212.150.11167916.0873nam01
IP2013-09-01T00:0016.0873USD1212.150.1116790nam01
PR2013-10-01T00:00488.874USD723.2750.11167911.1264nam01
IP2013-10-01T00:0011.1264USD723.2750.1116790nam01
RR2013-10-01T00:000USD723.2750.112790nam01
PR2013-11-01T00:00493.071USD230.2040.112796.92857nam01
IP2013-11-01T00:006.92857USD230.2040.112790nam01
IP2013-12-01T00:002.13409USD230.2040.112790nam01
MD2013-12-01T00:00230.204USD00.112790nam01