aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/risk/indices.py15
1 files changed, 13 insertions, 2 deletions
diff --git a/python/risk/indices.py b/python/risk/indices.py
index 0328f180..053610d9 100644
--- a/python/risk/indices.py
+++ b/python/risk/indices.py
@@ -13,6 +13,8 @@ def get_index_portfolio(
conn: connection,
fund: str = "SERCGMAST",
strategies: Union[Tuple[str], None] = None,
+ include_strategies: Union[str, None] = None,
+ exclude_strategies: Union[str, None] = None,
exclude_redcode: Iterable[str] = (),
**kwargs
):
@@ -21,12 +23,21 @@ def get_index_portfolio(
"FROM list_cds_positions_by_strat(%s, %s) "
)
params = (d, fund)
+ folder_filter = []
if strategies is not None:
if isinstance(strategies, tuple):
- sql_str += "WHERE folder in %s"
+ folder_filter.append("folder IN %s")
else:
- sql_str += "WHERE folder = %s"
+ folder_filter.append("folder = %s")
params += (strategies,)
+ if include_strategies is not None:
+ folder_filter.append("folder::text LIKE %s")
+ params += (include_strategies,)
+ if exclude_strategies is not None:
+ folder_filter.append("folder::text NOT LIKE %s")
+ params += (exclude_strategies,)
+ if folder_filter:
+ sql_str += "WHERE " + " AND ".join(folder_filter)
sql_str += "GROUP BY security_id, maturity"
with conn.cursor() as c:
c.execute(sql_str, params)