aboutsummaryrefslogtreecommitdiffstats
path: root/python/trade_dataclasses.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/trade_dataclasses.py')
-rw-r--r--python/trade_dataclasses.py36
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(