diff options
Diffstat (limited to 'python/quote_parsing')
| -rw-r--r-- | python/quote_parsing/parse_emails.py | 18 |
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): |
