PAM
Principal At Maturity (PAM) is a standard ACTUS contract type implemented in the Awesome Actus Library.
This class represents fixed-rate or variable-rate instruments such as:
- Bullet loans
- Term deposits
- Zero-coupon or interest-bearing bonds
📚 For full term semantics and rule logic, refer to the ACTUS Standard - PAM.
✅ Usage Examples
from awesome_actus_lib import PAM
contract = PAM(
contractID="PAM-001",
contractRole="RPA",
contractDealDate="2025-01-01",
initialExchangeDate="2025-01-02",
maturityDate="2030-01-01",
nominalInterestRate=0.03,
notionalPrincipal=10000.0,
dayCountConvention="30E360",
statusDate="2025-01-01",
currency="USD",
counterpartyID="CP01",
creatorID="user01"
)
🧠 Behavior
The PAM
class:
- Inherits from
ContractModel
- Automatically sets
contractType
to"PAM"
- Enforces all ACTUS-specific business rules using conditional groups
- Supports optional extension via keyword arguments (
**other_terms
)
🛠️ Conditional Group Handling
Certain fields become required when a "driver" term is provided. For example:
feeRate
→ requiresfeeBasis
purchaseDate
→ requirespriceAtPurchaseDate
cycleAnchorDateOfRateReset
→ requiresrateSpread
andmarketObjectCodeOfRateReset
These are enforced automatically at instantiation via validate_terms()
.
If a rule is violated, a useful message is printed out.
🔍 Notes
- Accepts both
datetime
and ISO 8601str
inputs for all ACTUS Terms that refer to dates - Supports both ACTUS-defined and user-defined terms
- Implements ACTUS time consistency checks