diff options
Diffstat (limited to 'python/external_deriv_marks.py')
| -rw-r--r-- | python/external_deriv_marks.py | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/python/external_deriv_marks.py b/python/external_deriv_marks.py index 4d9aa333..086fe5e9 100644 --- a/python/external_deriv_marks.py +++ b/python/external_deriv_marks.py @@ -131,8 +131,33 @@ def bnp_navs(date: datetime.date = None): df.nav *= -1.0 return df + def cs_navs(date: datetime.date = None): - pass + d = {} + glob_str = f"{date:%b%d%Y}" if date else "*" + for fname in (DAILY_DIR / "CS_reports").glob(f"DERV048829_{glob_str}.xlsx"): + try: + df = pd.read_excel(fname, skiprows=9, skipfooter=50, thousands=",") + except ValueError: + continue + df["Mid Price"] = df["Mid Price"].apply( + lambda s: -float(s[1:-1].replace(",", "")) + if s.startswith("(") and s.endswith(")") + else float(s) + ) + df["Order No"] = df["Order No"].astype("str") + df["Trade Date"] = pd.to_datetime(df["Trade Date"]) + df = df.set_index("Order No") + df = df[["Trade Date", "Buy/Sell", "Notional", "Mid Price"]] + # TODO: fix this + df["ia"] = 0.0 + df.loc["61581078", "ia"] = 900_000 + df.columns = ["trade_date", "buy/sell", "notional", "nav", "ia"] + d[datetime.datetime.strptime(fname.stem.split("_")[1], "%b%d%Y").date()] = df + df = pd.concat(d) + # nav is from CS's point of view + df.nav *= -1.0 + return df # def bnp_navs_old(date: datetime.date = None): @@ -176,7 +201,7 @@ if __name__ == "__main__": logging.basicConfig() logger = logging.getLogger("external_marks") logger.setLevel(logging.DEBUG if args.debug else logging.INFO) - for cp in ["MS", "CITI", "GS", "BAML", "BNP"]: + for cp in ["MS", "CITI", "GS", "BAML", "BNP", "CS"]: logger.info(cp) if date and cp != "CITI": date_arg = (date - BDay()).date() |
