aboutsummaryrefslogtreecommitdiffstats
path: root/python/citco_ops/cash.py
blob: 21b693c295944888095c415989aa925c63621a8b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
from dataclasses import field, dataclass
from serenitas.ops.trade_dataclasses import Deal, Fund
import datetime


@dataclass
class IAMDeal(Deal, deal_type=None, table_name="iam_tickets"):
    trade_date: datetime.date = field(metadata={"globeop": "SettlementDate"})
    action: str = field(metadata={"globeop": "Action"})
    strategy: str = field(metadata={"globeop": "Folder"})
    counterparty: str = field(metadata={"globeop": "Counterparty"})
    maturity: datetime.date
    start_money: float = field(metadata={"globeop": "StartMoney"})
    currency: str = field(metadata={"globeop": "Currency"})
    booked_offset: bool
    uploaded: bool
    fund: Fund
    dealid: str = field(metadata={"insert": False})
    id: int = field(metadata={"insert": False})

    def to_globeop(self, action):
        obj = super().to_globeop(action)
        obj["Deal Type"] = "IamDeal"
        obj["ExpirationDate"] = self.trade_date if self.action == "UPDATE" else None
        obj["CallNoticeIndicator"] = "24H" if self.action == "NEW" else None
        return obj