diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/risk/indices.py | 15 |
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) |
