blob: 650d507fd59af93cde693c17c49ea6400b0e1e10 (
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
27
28
29
30
31
32
33
34
|
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
obj["TransactionIndicator"] = ("DEPOSIT" if obj["StartMoney"] > 0 else "LOAN",)
obj["StartMoney"] = abs(obj["StartMoney"])
obj["Folder"] = (
"M_CSH_CASH" if obj["strategy"] == "CSH_CASH" else obj["strategy"]
)
obj["DealFunction"] = "OTC"
obj["MarginType"] = "Variation"
obj["Basis"] = "ACT/360"
return obj
|