diff options
| -rw-r--r-- | python/trade_dataclasses.py | 72 |
1 files changed, 26 insertions, 46 deletions
diff --git a/python/trade_dataclasses.py b/python/trade_dataclasses.py index 93df61d7..6e4ed9f6 100644 --- a/python/trade_dataclasses.py +++ b/python/trade_dataclasses.py @@ -489,11 +489,28 @@ class CitcoProduct(Citco): if results := c.fetchone(): (self.id, self.dealid, self.committed) = results + @classmethod + def _base_attrs(cls, obj): + obj["Birth_date"] = obj["Birth_date"].strftime("%Y%m%d") + obj["Death_date"] = obj["Death_date"].strftime("%Y%m%d") + return obj + class CitcoTrade(Citco): _citco_queue: ClassVar[list] = [] _citco_headers = GTL + @classmethod + def _base_attrs(cls, obj): + obj["FillID"] = obj["ClientOrderID"] + obj["Trader"] = "DFLT" + obj["StrategyCode"] = f"{obj['portfolio']}/{obj['folder']}" + obj["TradeDate"] = obj["TradeDate"].strftime("%Y%m%d") + obj["SettlementDate"] = obj["SettlementDate"].strftime("%Y%m%d") + obj["FillQty"] = obj["OrderQty"] + obj["FillPrice"] = obj["AvgPrice"] + return obj + @dataclass class CDSDeal( @@ -576,16 +593,10 @@ class CDSDeal( def to_citco(self): obj = self.serialize("citco") - obj["FillID"] = obj["ClientOrderID"] obj["SecurityType"] = "CDS" obj["BuySellShortCover"] = "B" if obj["protection"] == "Buy" else "S" obj["Trader"] = "DFLT" - obj["FillQty"] = obj["OrderQty"] - obj["FillPrice"] = obj["AvgPrice"] - obj["StrategyCode"] = f"{obj['portfolio']}/{obj['folder']}" obj["SettleCurrency"] = obj["SecurityCurrency"] - obj["TradeDate"] = obj["TradeDate"].strftime("%Y%m%d") - obj["SettlementDate"] = obj["SettlementDate"].strftime("%Y%m%d") if obj["orig_attach"]: # tranche process obj["IDSource"] = "USERID" @@ -615,7 +626,7 @@ class CDSDeal( obj[ "ClearingAgent" ] = "BOA_FC" # We need to query DB via accounts table here - + obj = self._base_attrs(obj) return obj @classmethod @@ -786,13 +797,8 @@ class SwaptionDeal( obj = self.serialize("citco") obj["ExecutionBroker"] = _citco_cp_isda[obj["ExecutionBroker"]] obj["ClearingAgent"] = obj["ExecutionBroker"] - obj["FillID"] = obj["ClientOrderID"] obj["SecurityType"] = "BNDOPT" obj["BuySellShortCover"] = "B" if obj["buysell"] == "Buy" else "S" - obj["Trader"] = "DFLT" - obj["FillQty"] = obj["OrderQty"] - obj["FillPrice"] = obj["AvgPrice"] - obj["StrategyCode"] = f"{obj['portfolio']}/{obj['folder']}" obj["SettleCurrency"] = obj["SecurityCurrency"] obj["IDSource"] = "USERID" obj["ClearingAgent"] = obj["ExecutionBroker"] @@ -810,8 +816,7 @@ class SwaptionDeal( ) instrument.citco_stage() obj["SecurityID"] = instrument.dealid - obj["TradeDate"] = obj["TradeDate"].strftime("%Y%m%d") - obj["SettlementDate"] = obj["SettlementDate"].strftime("%Y%m%d") + obj = self._base_attrs(obj) return obj @@ -1004,22 +1009,16 @@ class SpotDeal( key1, key2 = "buy", "sell" obj["SecurityCurrency"] = obj[f"{key1}_currency"] obj["OrderQty"] = obj[f"{key1}_amount"] - obj["FillID"] = obj["ClientOrderID"] obj["SecurityType"] = "FX" - obj["Trader"] = "DFLT" - obj["StrategyCode"] = f"{obj['portfolio']}/{obj['folder']}" - obj["FillPrice"] = obj["AvgPrice"] obj["BuySellShortCover"] = "S" if obj["buy_currency"] == "USD" else "B" - obj["FillQty"] = obj["OrderQty"] 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") obj["FillFXSettleAmount"] = obj[f"{key2}_amount"] obj["SettleCurrency"] = "USD" obj["FXRate"] = 1 + obj = self._base_attrs(obj) return obj @@ -1119,12 +1118,8 @@ class FxSwapDeal( 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["BuySellShortCover"] = "B" if obj["near_buy_currency"] == "USD" else "S" - obj["FillQty"] = obj["OrderQty"] obj["IDSource"] = "BLOOMBERG" _citco_currency_mapping = {"EUR": "EURUSD CURNCY"} obj["SecurityID"] = _citco_currency_mapping[obj["SecurityCurrency"]] @@ -1148,11 +1143,9 @@ class FxSwapDeal( ) near_trade.citco_stage() obj["ClientOrderID"] = obj["ClientOrderID"] + "_F" - obj["FillID"] = obj["ClientOrderID"] - obj["SettlementDate"] = obj["SettlementDate"].strftime("%Y%m%d") - obj["TradeDate"] = obj["TradeDate"].strftime("%Y%m%d") obj["SettleCurrency"] = "USD" obj["FXRate"] = 1 + obj = self._base_attrs(obj) return obj @@ -1298,13 +1291,8 @@ class TRSDeal( obj = self.serialize("citco") obj["ExecutionBroker"] = _citco_cp_isda[obj["ExecutionBroker"]] obj["ClearingAgent"] = obj["ExecutionBroker"] - obj["FillID"] = obj["ClientOrderID"] obj["SecurityType"] = "TRS" - obj["Trader"] = "DFLT" - obj["StrategyCode"] = f"{obj['portfolio']}/{obj['folder']}" - obj["FillPrice"] = obj["AvgPrice"] obj["BuySellShortCover"] = "B" if obj["buysell"] else "S" - obj["FillQty"] = obj["OrderQty"] obj["SettleCurrency"] = obj["SecurityCurrency"] obj["IDSource"] = "USERID" product = TRSProduct( @@ -1315,8 +1303,7 @@ class TRSDeal( ) product.citco_stage() obj["SecurityID"] = product.dealid - obj["TradeDate"] = obj["TradeDate"].strftime("%Y%m%d") - obj["SettlementDate"] = obj["SettlementDate"].strftime("%Y%m%d") + obj = obj._base_attrs(obj) return obj @@ -1430,13 +1417,10 @@ class IRSDeal( def to_citco(self): obj = self.serialize("citco") obj["ExecutionBroker"] = _citco_cp_cdea[obj["ExecutionBroker"]] - obj["FillID"] = obj["ClientOrderID"] obj["SecurityType"] = "IRS" - obj["Trader"] = "DFLT" obj["StrategyCode"] = f"{obj['portfolio']}/{obj['folder']}" obj["FillPrice"] = obj["AvgPrice"] obj["BuySellShortCover"] = "B" if obj["payreceive"] else "S" - obj["FillQty"] = obj["OrderQty"] obj["SettleCurrency"] = obj["SecurityCurrency"] obj["IDSource"] = "USERID" product = IRSProduct( @@ -1448,8 +1432,7 @@ class IRSDeal( product.citco_stage() obj["SecurityID"] = product.dealid obj["ClearingAgent"] = "BOA_FC" - obj["TradeDate"] = obj["TradeDate"].strftime("%Y%m%d") - obj["SettlementDate"] = obj["SettlementDate"].strftime("%Y%m%d") + obj = self._base_attrs(obj) return obj @@ -1528,11 +1511,10 @@ class TrancheProduct( obj = self.serialize("citco") obj["Command"] = "N" obj["Active"] = "Y" - obj["Birth_date"] = obj["Birth_date"].strftime("%Y%m%d") - obj["Death_date"] = obj["Death_date"].strftime("%Y%m%d") obj["CouponRate"] = obj["CouponRate"] / 100 obj["SettleDays"] = 3 obj["AccruStartDate"] = obj["Birth_date"] + obj = self._base_attrs(obj) return obj @@ -1615,11 +1597,10 @@ class SwaptionProduct( obj["UnderlyingSecurityId"] = irs.dealid obj["Command"] = "N" obj["Active"] = "Y" - obj["Birth_date"] = obj["Birth_date"].strftime("%Y%m%d") - obj["Death_date"] = obj["Death_date"].strftime("%Y%m%d") obj["ExpirationDate"] = obj["ExpirationDate"].strftime("%Y%m%d") obj["Put/CallFlag"] = "C" if obj["callput"] else "P" obj["OptionType"] = "Vanilla European" + obj = self._base_attrs(obj) return obj @@ -1788,7 +1769,6 @@ class TRSProduct( obj["Active"] = "Y" if obj["Active"] else "N" obj["GeneralDirection"] = "F" obj["PrincipalExchTypeID"] = 3 - obj["Birth_date"] = obj["Birth_date"].strftime("%Y%m%d") - obj["Death_date"] = obj["Death_date"].strftime("%Y%m%d") obj["UnderlyingIDSource"] = "RED" + obj = self._base_attrs(obj) return obj |
