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