aboutsummaryrefslogtreecommitdiffstats
path: root/python/collateral/cs.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/collateral/cs.py')
-rw-r--r--python/collateral/cs.py45
1 files changed, 9 insertions, 36 deletions
diff --git a/python/collateral/cs.py b/python/collateral/cs.py
index bede3114..8e673f94 100644
--- a/python/collateral/cs.py
+++ b/python/collateral/cs.py
@@ -7,6 +7,7 @@ from bs4 import BeautifulSoup
from operator import itemgetter
from pandas.tseries.offsets import BDay
from xlrd import open_workbook
+from .common import load_pdf
def download_files(count=20):
@@ -45,46 +46,17 @@ def download_files(count=20):
p.write_bytes(attach.content)
-def load_pdf(file_path: pathlib.Path):
- proc = subprocess.run(
- ["pdftohtml", "-xml", "-l", "1", "-stdout", "-i", file_path.as_posix()],
- capture_output=True,
- )
- soup = BeautifulSoup(proc.stdout, features="lxml")
- l = soup.findAll("text")
- for e in l:
- if e.text.startswith(
- "Market Value of Collateral required pursuant to this notice"
- ):
- sib = e.next_siblings
- next(sib)
- return float(next(sib).text.replace(",", ""))
-
-
def get_collateral(d):
DATA_DIR = DAILY_DIR / "CS_reports"
# get most recent file before current date
- def get_date(p):
- return datetime.date.fromisoformat(p.stem.split(" ", 1)[0])
+ pdf_file = DATA_DIR / f"CollateralCptyStatement161SerenitasCGMFRVM_{d:%m%d%Y}.pdf"
- files = ((f, get_date(f)) for f in DATA_DIR.glob("*.xls"))
- files = sorted(filter(lambda t: t[1] <= d, files), key=itemgetter(1), reverse=True)
- excel_file, date = files[0]
- pdf_file = DATA_DIR / f"{date} Margin_Notice161 Serenitas CGMF RVM.pdf"
- last_margin_call = load_pdf(pdf_file)
- if date == d: # margin call is current do not include
- last_margin_call = 0
- wb = open_workbook(files[0][0])
- s = wb.sheet_by_index(0)
- i = 0
- im = 0.0
- for i, v in enumerate(s.col_values(0)):
- if s.cell_value(i, 4) == "Total IM (USD):":
- im = s.cell_value(i, 5)
- if v.startswith("Total Value of Collateral"):
- return s.cell_value(i, 1) + last_margin_call + im
- if v.startswith("No Positions to Report"):
- return 0.0
+ g = iter(load_pdf(pdf_file))
+ for e in g:
+ if e.text == "Cash USD (US Dollar)":
+ next(g)
+ value = next(g).text
+ return float(value.strip().replace(",", ""))
def collateral(d, dawn_trades, *args):
@@ -119,5 +91,6 @@ def collateral(d, dawn_trades, *args):
},
ignore_index=True,
)
+ breakpoint()
df["date"] = d
return df.set_index("Strategy")