aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--python/quote_parsing/parse_emails.py18
1 files changed, 8 insertions, 10 deletions
diff --git a/python/quote_parsing/parse_emails.py b/python/quote_parsing/parse_emails.py
index 87050119..e07d295b 100644
--- a/python/quote_parsing/parse_emails.py
+++ b/python/quote_parsing/parse_emails.py
@@ -426,6 +426,8 @@ def parse_citi_block(fh, indextype):
return makedf(r, indextype, "CITI")
def parse_jpm_block(fh, indextype):
+ receivers = {}
+ payers = {}
for line in fh:
line = line.strip()
if "**" in line or line == "":
@@ -435,10 +437,10 @@ def parse_jpm_block(fh, indextype):
continue
rec_strike, rec_data, pay_strike, pay_data = [item.strip() for item in line.split('|')]
rec_data = rec_data.replace("/", " ")
- if rec_strike is not '-':
+ if rec_strike != '-':
receivers[rec_strike] = rec_data.split()[:-2]
pay_data = pay_data.replace("/", " ")
- if pay_strike is not '-':
+ if pay_strike != '-':
payers[pay_strike] = pay_data.split()[:-2]
cols = ['bid', 'offer', 'delta', 'vol']
@@ -448,7 +450,6 @@ def parse_jpm_block(fh, indextype):
df['vol'] = df['rec_vol'].fillna(df['pay_vol'])
df = df.reset_index().drop(['rec_vol', "pay_vol"], axis=1).rename(columns={'index':'strike', 'pay_vol':'vol', "rec_delta": "delta_rec", "pay_delta": "delta_pay"})
-
return makedf(df, indextype, "JPM"), line
@@ -617,20 +618,17 @@ def parse_jpm(fh, index_desc):
option_stack = {}
fwd_index = []
pat = re.compile(r"JPM CDX Options: IG [(](?P<ticker>[\w\d]*)[)] (?P<expiry>[\d]+-[\w]+-[\d]+) [*]{2} Fwd @(?P<fwd>[\d.]+), Delta @(?P<delta>[\d]+)")
- expiration_dates = index_desc.pop("expiration_dates")
line = next(fh).strip()
while True:
if "**" in line:
if m := pat.match(line):
d = m.groupdict()
expiry_month = datetime.datetime.strptime(d["expiry"], "%d-%b-%y").month
- d['expiry'] = next(
- d for d in expiration_dates in d.month == expiry_month
- )
+ d["expiry"] = pd.to_datetime(d["expiry"], format="%d-%b-%y")
fwd_index.append({**index_desc, **d})
try:
- option_stack[expiry], line = parse_jpm_block(fh, index_desc["index"])
+ option_stack[d['expiry']], line = parse_jpm_block(fh, index_desc["index"])
except IndexError as e:
logger.debug(traceback.format_exc())
logger.error(f"Something is wrong with file {Path(fh.name).stem}")
@@ -644,7 +642,7 @@ def parse_jpm(fh, index_desc):
line = next(fh).strip()
except StopIteration:
break
-
+ breakpoint()
return option_stack, fwd_index
# subject_baml = re.compile(r"(?:Fwd:){0,2}(?:BAML )?(\D{2})(\d{1,2})\s")
@@ -660,7 +658,7 @@ subject_cs = re.compile(
r"CS CDX (?P<index>IG|HY)(?P<series>\d{2})_?v?(?P<version>\d)? Options -\s+(?:\d{2}/\d{2}/\d{2}\s+)?Ref = (?P<ref>[\d.]+)[^\d]*"
)
subject_bnp = re.compile(r"CDX OPTIONS RUN: (IG|HY)(\d{2}).*")
-subject_jpm = re.compile(r"JPM CDX Options: CDX.([\w]+) (\w\d+) \d\w \S+-\S+ \[ref ([\d.]*).*")
+subject_jpm = re.compile(r"JPM CDX Options: CDX.([\w]+) S(\d+) \d\w \S+-\S+ \[ref ([\d.]*).*")
def get_current_version(index, series, d, conn):