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