diff options
Diffstat (limited to 'python/trade_dataclasses.py')
| -rw-r--r-- | python/trade_dataclasses.py | 46 |
1 files changed, 45 insertions, 1 deletions
diff --git a/python/trade_dataclasses.py b/python/trade_dataclasses.py index e64ab63a..7dc2f331 100644 --- a/python/trade_dataclasses.py +++ b/python/trade_dataclasses.py @@ -78,6 +78,30 @@ CdsStrat = Literal[ "BSPK", "*", ] +BondStrat = Literal[ + "M_STR_MAV", + "M_STR_MEZZ", + "CSO_TRANCH", + "M_CLO_BB20", + "M_CLO_AAA", + "M_CLO_BBB", + "M_MTG_IO", + "M_MTG_THRU", + "M_MTG_GOOD", + "M_MTG_B4PR", + "M_MTG_RW", + "M_MTG_FP", + "M_MTG_LMG", + "M_MTG_SD", + "M_MTG_PR", + "M_MTG_CRT_SD", + "CRT_LD", + "CRT_LD_JNR", + "CRT_SD", + "IGNORE", + "MTG_REPO", +] +AssetClass = Literal["CSO", "Subprime", "CLO", "CRT"] @dataclass @@ -101,8 +125,9 @@ class Deal: @classmethod def commit(cls): with cls._conn.cursor() as c: - c.executemany(cls._insert_str, cls._insert_queue) + c.executemany(cls._sql_insert, cls._insert_queue) cls._conn.commit() + cls._insert_queue.clear() @classmethod def from_tradeid(cls, trade_id: int): @@ -153,6 +178,25 @@ class CDSDeal(Deal): index.direction = self.protection +@dataclass +class BondDeal(Deal): + faceamount: float + price: float() + cp_code: str + cusip: str + isin: str + identifier: str + trade_date: datetime.date = field(default_factory=datetime.date.today()) + settle_date: datetime.date = field( + default_factory=lambda: next_business_day(datetime.date.today()) + ) + buysell: bool + description: str + folder: BondStrat = field(default=None) + portfolio: Portfolio = field(default=None) + asset_class: AssetClass = field(default=None) + + CDSDeal._sql_fields = [f.name for f in fields(CDSDeal)] place_holders = ",".join(["%s"] * len(fields(CDSDeal))) columns = ",".join(c for c in CDSDeal._sql_fields) |
