aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/analytics/utils.py17
1 files changed, 13 insertions, 4 deletions
diff --git a/python/analytics/utils.py b/python/analytics/utils.py
index 750f4488..acfab1de 100644
--- a/python/analytics/utils.py
+++ b/python/analytics/utils.py
@@ -173,16 +173,25 @@ def to_TDate(arr: np.ndarray):
def get_external_nav(engine, trade_id, value_date=None, trade_type="swaption"):
+ if trade_type == "swaption":
+ upfront_query = (
+ "CASE when date < settle_date "
+ "THEN price * notional/100 * (2 * buysell::integer - 1) "
+ "ELSE 0."
+ "END"
+ )
+ elif trade_type == "cds":
+ upfront_query = (
+ "CASE WHEN date < upfront_settle_date " "THEN upfront ELSE 0. " "END"
+ )
query = (
"SELECT date, "
"nav, "
- "(case when date < settle_date "
- "then price * notional/100 * (2 * buysell::integer - 1) "
- "else 0."
- "end) as upfront FROM external_marks_deriv "
+ f"({upfront_query}) AS upfront FROM external_marks_deriv "
f"LEFT JOIN {trade_type} "
"ON cpty_id = identifier WHERE id=%s "
)
+
if value_date:
query += "AND date=%s"
r = engine.execute(query, (trade_id, value_date))