Source code for rivapy.instruments.cds_specification

from datetime import datetime
from typing import List


[docs] class CDSSpecification: def __init__(self, premium: float, premium_pay_dates: List[datetime], protection_start: datetime, notional: float = 1.0, expiry: datetime=None, recovery: float = None, issuer: str = '', cash_settled: bool = True): """Constructor for credit default swap Args: premium (float): The premium as fraction of notional paid at each premium date. premium_pay_dates (List[datetime]): List of dates for premium payments. protection_start (datetime): Date when protection starts notional (foat): Notional expiry (datetime, optional): [description]. Defaults to None. recovery (float, optional): The protection is only paid for the real loss (notional minus recovery). If recovery is not specified, it is assumed that recovery as specified in contract. If no fixed recovery is specified[description]. Defaults to None. issuer (str, optional): [description]. Defaults to ''. cash_settled (bool, optional): Flag indicating o instrument is physical settled (the protection buyer ) """ self.expiry = expiry self.premium = premium self.premium_pay_dates = premium_pay_dates self.protection_start = protection_start self.notional = notional if expiry is None: self.expiry = premium_pay_dates[-1] self.recovery = recovery self.issuer = issuer self.validate()
[docs] def validate(self): """Some simple validation """ if len(self.premium_pay_dates) == 0: raise Exception('Premium payment dates must not be empty.')