diff options
Diffstat (limited to 'python/trade_dataclasses.py')
| -rw-r--r-- | python/trade_dataclasses.py | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/python/trade_dataclasses.py b/python/trade_dataclasses.py index 843f3b2e..cf0c983f 100644 --- a/python/trade_dataclasses.py +++ b/python/trade_dataclasses.py @@ -1037,6 +1037,7 @@ class FxDeal(BbgDeal, Deal, table_name=None, deal_type=DealType.Fx): @dataclass class FxSwapDeal( + CitcoTrade, BbgDeal, Deal, deal_type=DealType.FxSwap, @@ -1045,7 +1046,7 @@ class FxSwapDeal( ): folder: str portfolio: str - trade_date: datetime.date + trade_date: datetime.date = field(metadata={"citco": "TradeDate"}) near_settle_date: datetime.date near_buy_currency: str near_buy_amount: float @@ -1062,7 +1063,9 @@ class FxSwapDeal( cp_code: str cash_account: str id: int = field(default=None, metadata={"insert": False}) - dealid: str = field(default=None, metadata={"insert": False}) + dealid: str = field( + default=None, metadata={"insert": False, "citco": "ClientOrderID"} + ) bbg_ticket_id: str = None @classmethod @@ -1106,6 +1109,35 @@ class FxSwapDeal( **d, ) + def to_citco(self): + obj = self.serialize("citco") + if obj["near_buy_currency"] == "USD": # This is for strict FX Swaps + key1, key2 = "buy", "sell" + else: + key1, key2 = "sell", "buy" + obj["SecurityCurrency"] = obj[f"far_{key1}_currency"] + obj["OrderQty"] = obj[f"far_{key1}_amount"] + obj["SecurityType"] = "FWDFX" + obj["Trader"] = "DFLT" + obj["StrategyCode"] = f"{obj['portfolio']}/{obj['folder']}" + obj["AvgPrice"] = obj["far_rate"] + obj["FillPrice"] = obj["AvgPrice"] + obj["FXRate"] = obj["AvgPrice"] + obj["BuySellShortCover"] = "B" if obj["near_buy_currency"] == "USD" else "S" + obj["FillQty"] = obj["OrderQty"] + obj["SettleCurrency"] = obj["SecurityCurrency"] + obj["IDSource"] = "BLOOMBERG" + _citco_currency_mapping = {"EUR": "EURUSD CURNCY"} + obj["SecurityID"] = _citco_currency_mapping[obj["SecurityCurrency"]] + obj["ClearingAgent"] = "NT" + obj["TradeDate"] = obj["TradeDate"].strftime("%Y%m%d") + obj["SettlementDate"] = obj["far_settle_date"] + obj["SettlementDate"] = obj["SettlementDate"].strftime("%Y%m%d") + obj["ClientOrderID"] = obj["ClientOrderID"] + "_F" + obj["FillID"] = obj["ClientOrderID"] + obj["FillFXSettleAmount"] = obj[f"far_{key2}_amount"] + return obj + @dataclass class TRSDeal( |
