diff options
Diffstat (limited to 'python/report_ops/sma.py')
| -rw-r--r-- | python/report_ops/sma.py | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/python/report_ops/sma.py b/python/report_ops/sma.py index bd3ce547..2f7e7ae5 100644 --- a/python/report_ops/sma.py +++ b/python/report_ops/sma.py @@ -79,9 +79,9 @@ class BowdstSMA(SMA, fund="BOWDST"): _sql_query = { "bond": "SELECT * FROM risk_positions(%s, null, %s) ", "future": ( - "WITH tmp AS (SELECT bbg_ticker, fund, security_desc, currency, maturity, sum(quantity * (2*buysell::int-1)) OVER (PARTITION BY bbg_ticker, fund, security_desc, currency, maturity) notional FROM futures " + "WITH tmp AS (SELECT bbg_ticker, fund, security_desc, currency, maturity, account_code, dealid, buysell, sum(quantity * (2*buysell::int-1)) OVER (PARTITION BY bbg_ticker, fund, security_desc, currency, maturity) notional FROM futures " "WHERE trade_date <= %s AND fund=%s) " - "SELECT bbg_ticker, notional, code AS cp_code, cash_account, security_desc, currency, maturity FROM tmp LEFT JOIN accounts USING (fund) WHERE tmp.notional != 0 AND account_type='Future';" + "SELECT bbg_ticker, notional, code AS cp_code, cash_account, security_desc, currency, maturity, account_code, dealid, buysell FROM tmp LEFT JOIN accounts USING (fund) WHERE tmp.notional != 0 AND account_type='Future';" ), "tranche": "SELECT trb.trade_id, trb.serenitas_clean_nav + trb.serenitas_accrued as mtm, trb.notional * trb.tranche_factor as active_notional, cds.* FROM tranche_risk_isosel trb left join cds on trade_id=id WHERE date=%s", "cdx_swaption": "SELECT abs(spr.notional) AS active_notional, spr.serenitas_nav, swaptions.*, index_version_markit.annexdate FROM list_swaption_positions_and_risks(%s, %s) spr LEFT JOIN swaptions ON deal_id=dealid LEFT JOIN index_version_markit ON swaptions.security_id=redindexcode;", @@ -114,6 +114,9 @@ class PositionReport(Deal, deal_type=None, table_name=None): default=None, metadata={"position": "Maturity Date"} ) description: str = field(default=None, metadata={"position": "Underlying Desc"}) + local_market_value: str = field( + default=None, metadata={"position": "Local Market Value"} + ) mtm_currency: str = field(default=None, metadata={"position": "MTM Currency"}) mtm_valuation: float = field(default=None, metadata={"position": "MTM Valuation"}) fixed_rate: float = field(default=None, metadata={"position": "FixedRate"}) @@ -158,20 +161,32 @@ class BondPosition(PositionReport, asset_class="bond"): rename_keys( d, { - "local_market_value": "Local Market Value", - "usd_market_value": "MTM Valuation", + "usd_market_value": "mtm_valuation", }, ) for key in ("account", "primebroker", "cp_code"): d[key] = _fund_custodian[fund] d["dealid"] = "Aggregated" - d["buysell"] = "B" + d["buysell"] = True d["currency"] = "USD" return cls.from_dict(**d) class FuturePosition(PositionReport, asset_class="future"): - pass + @classmethod + def from_query(cls, d: dict, cob, fund): + d = super().from_query(d, cob, fund) + rename_keys( + d, + { + "bbg_ticker": "identifier", + "cash_account": "account", + "security_desc": "description", + "maturity": "maturity_date", + "account_code": "primebroker", + }, + ) + return cls.from_dict(**d) class TranchePosition(PositionReport, asset_class="tranche"): |
