diff options
Diffstat (limited to 'python/position_file_bowdst.py')
| -rw-r--r-- | python/position_file_bowdst.py | 119 |
1 files changed, 53 insertions, 66 deletions
diff --git a/python/position_file_bowdst.py b/python/position_file_bowdst.py index 9333fb3c..9e0ae597 100644 --- a/python/position_file_bowdst.py +++ b/python/position_file_bowdst.py @@ -156,74 +156,61 @@ def positions_future(conn, date): yield obj -def positions_otc(conn, date): - with conn.cursor() as c: - c.execute( - "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_bowdst trb left join cds on trade_id=id WHERE date=%s", - (date,), +def _otc_serialize(obj, product_type, date): + rename_keys( + obj, + { + "dealid": "Unique Deal ID", + "cp_code": "Counterparty", + "currency": "DealCurrencyA", + "active_notional": "NotionalA", + "fixed_rate": "FixedRate", + "trade_date": "Start Date", + "effective_date": "EffectiveDate", + "maturity": "Maturity Date", + "security_id": "Underlying (ISIN / CUSP / RED CODES)", + "security_desc": "Underlying Desc", + "mtm": "MTM Valuation", + "strike": "Strike", + "annexdate": "EffectiveDate", + "expiration_date": "Underlying Maturity", + "serenitas_nav": "MTM Valuation", + }, + ) + data = { + "Client Name": "HEDGEMARK", + "Fund Name": "BOS_PAT_BOWDOIN", + "Product Type": "Credit Index Tranche", + "MTM Currency": "USD", + "COB Date": date, + } + obj.update(data) + if product_type == "Tranche": + obj["Product Type"] = "Credit Index Tranche" + obj["TransactionIndicator (Buy/Sell)"] = ( + "B" if obj["protection"] == "Buyer" else "S" ) - for row in c: - obj = row._asdict() - obj["Client Name"] = "HEDGEMARK" - obj["Fund Name"] = "BOS_PAT_BOWDOIN" - obj["Product Type"] = "Credit Index Tranche" - obj["TransactionIndicator (Buy/Sell)"] = ( - "B" if obj["protection"] == "Buyer" else "S" - ) - obj["MTM Currency"] = "USD" - obj["COB Date"] = date - rename_keys( - obj, - { - "dealid": "Unique Deal ID", - "cp_code": "Counterparty", - "currency": "DealCurrencyA", - "active_notional": "NotionalA", - "fixed_rate": "FixedRate", - "trade_date": "Start Date", - "effective_date": "EffectiveDate", - "maturity": "Maturity Date", - "security_id": "Underlying (ISIN / CUSP / RED CODES)", - "security_desc": "Underlying Desc", - "mtm": "MTM Valuation", - }, - ) - yield obj - c.execute( - "SELECT abs(spr.notional) AS active_notional, spr.serenitas_nav, swaptions.*, index_version_markit.annexdate FROM list_swaption_positions_and_risks(%s, 'BOWDST') spr LEFT JOIN swaptions ON deal_id=dealid LEFT JOIN index_version_markit ON swaptions.security_id=redindexcode;", - (date,), + elif product_type == "Swaption": + obj["Product Type"] = "CD Swaption" + obj["TransactionIndicator (Buy/Sell)"] = "B" if obj["buysell"] else "S" + obj["PutCall Indicator (Call/Put)"] = ( + "P" if obj["option_type"] == "PAYER" else "C" ) - for row in c: - obj = row._asdict() - obj["Client Name"] = "HEDGEMARK" - obj["Fund Name"] = "BOS_PAT_BOWDOIN" - obj["Product Type"] = "CD Swaption" - obj["TransactionIndicator (Buy/Sell)"] = "B" if obj["buysell"] else "S" - obj["PutCall Indicator (Call/Put)"] = ( - "P" if obj["option_type"] == "PAYER" else "C" - ) - obj["Exercise Type"] = "European" - obj["MTM Currency"] = "USD" - obj["COB Date"] = date - rename_keys( - obj, - { - "dealid": "Unique Deal ID", - "cp_code": "Counterparty", - "currency": "DealCurrencyA", - "active_notional": "NotionalA", - "fixed_rate": "FixedRate", - "strike": "Strike", - "annexdate": "EffectiveDate", - "trade_date": "Start Date", - "maturity": "Maturity Date", - "expiration_date": "Underlying Maturity", - "security_id": "Underlying (ISIN / CUSP / RED CODES)", - "security_desc": "Underlying Desc", - "serenitas_nav": "MTM Valuation", - }, - ) - yield obj + obj["Exercise Type"] = "European" + return obj + + +_otc_queries = { + "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_bowdst trb left join cds on trade_id=id WHERE date=%s", + "Swaption": "SELECT abs(spr.notional) AS active_notional, spr.serenitas_nav, swaptions.*, index_version_markit.annexdate FROM list_swaption_positions_and_risks(%s, 'BOWDST') spr LEFT JOIN swaptions ON deal_id=dealid LEFT JOIN index_version_markit ON swaptions.security_id=redindexcode;", +} + + +def positions_otc(conn, date): + with conn.cursor() as c: + for product_type, sql_query in _otc_queries.items(): + c.execute(sql_query, (date,)) + yield from [_otc_serialize(row._asdict(), product_type, date) for row in c] c.execute( "SELECT abs(spr.notional) AS active_notional, spr.nav, swaptions.*, index_version_markit.effectivedate FROM list_ir_swaption_positions(%s, 'BOWDST') spr LEFT JOIN swaptions ON deal_id=dealid LEFT JOIN index_version_markit ON swaptions.security_id=redindexcode;", |
