diff options
Diffstat (limited to 'python/trade_dataclasses.py')
| -rw-r--r-- | python/trade_dataclasses.py | 32 |
1 files changed, 25 insertions, 7 deletions
diff --git a/python/trade_dataclasses.py b/python/trade_dataclasses.py index 45e27ea3..8bfc4a32 100644 --- a/python/trade_dataclasses.py +++ b/python/trade_dataclasses.py @@ -947,7 +947,7 @@ class SpotDeal( sell_currency: str sell_amount: float fund: Fund - cp_code: str + cp_code: str = field(metadata={"citco": "ExecutionBroker"}) cash_account: str commission_currency: str = "USD" commission: float = None @@ -956,10 +956,10 @@ class SpotDeal( default=None, metadata={"insert": False, "citco": "ClientOrderID"} ) trade_date: datetime.date = field( - default_factory=datetime.date.today(), + default_factory=datetime.date.today(), metadata={"citco": "TradeDate"} ) settle_date: datetime.date = field( - default_factory=datetime.date.today(), + default_factory=datetime.date.today(), metadata={"citco": "SettlementDate"} ) bbg_ticket_id: str = None @@ -998,17 +998,25 @@ class SpotDeal( def to_citco(self): obj = self.serialize("citco") + if obj["buy_currency"] == "USD": + key = "sell" + else: + key = "buy" + obj["SecurityCurrency"] = obj[f"{key}_currency"] + obj["OrderQty"] = obj[f"{key}_amount"] obj["FillID"] = obj["ClientOrderID"] obj["SecurityType"] = "FX" obj["Trader"] = "DFLT" obj["StrategyCode"] = f"{obj['portfolio']}/{obj['folder']}" obj["FillPrice"] = obj["AvgPrice"] - - obj["BuySellShortCover"] = "B" if obj["buysell"] == "Buy" else "S" + obj["FXRate"] = obj["AvgPrice"] + obj["BuySellShortCover"] = "S" if obj["buy_currency"] == "USD" else "B" obj["FillQty"] = obj["OrderQty"] obj["SettleCurrency"] = obj["SecurityCurrency"] - obj["IDSource"] = "USERID" - obj["ClearingAgent"] = obj["ExecutionBroker"] + 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["SettlementDate"].strftime("%Y%m%d") return obj @@ -1324,6 +1332,16 @@ class IRSDeal( ) (self.custodian,) = c.fetchone() + # @classmethod + # def from_bbg_line(cls, line: dict): + # cp_code = cls.get_cp_code(line["Brkr"], "IRS") + # cls._bbg_insert_queue.append(list(line.values())) + # return cls( + # fund='LIMBO', + # portfolio='UNALLOCATED', + # folder='*', + + # ) def to_globeop(self): obj = self.serialize("globeop") if obj["payreceive"]: |
