aboutsummaryrefslogtreecommitdiffstats
path: root/python/quote_parsing/parse_emails.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/quote_parsing/parse_emails.py')
-rw-r--r--python/quote_parsing/parse_emails.py37
1 files changed, 24 insertions, 13 deletions
diff --git a/python/quote_parsing/parse_emails.py b/python/quote_parsing/parse_emails.py
index ec36973a..eac25f53 100644
--- a/python/quote_parsing/parse_emails.py
+++ b/python/quote_parsing/parse_emails.py
@@ -132,7 +132,7 @@ def parse_refline(line):
return d
-def parse_baml(fh, index_desc, *args):
+def parse_baml_us(fh, index_desc, *args):
option_stack = {}
fwd_index = []
line = ""
@@ -146,7 +146,7 @@ def parse_baml(fh, index_desc, *args):
d = parse_refline(line)
d.update(index_desc)
df, line = parse_baml_block(fh, index_desc["index"])
- option_stack[d["expiry"]] = df
+ option_stack[(d["expiry"], index_desc["version"])] = df
fwd_index.append(d)
else:
line = ""
@@ -360,7 +360,6 @@ def parse_gs_block(fh, indextype):
rec_bid, rec_offer = vals[2].split("/", 1)
if rec_offer.count(".") == 2:
rec_offer, vol = rec_offer[:6], rec_offer[6:]
- print(rec_offer, vol)
tail = vals[5]
else:
vol = vals[3]
@@ -488,7 +487,7 @@ def parse_ms_us(fh, index_desc, *args):
if block is None or block.empty:
logger.warning("MS: block is empty for {expiry} expiry")
else:
- option_stack[expiry] = block
+ option_stack[(expiry, index_desc["version"])] = block
return option_stack, fwd_index
@@ -500,7 +499,7 @@ def parse_nom_us(fh, index_desc, *args):
expiry = line.split(" ")[0]
expiry = pd.to_datetime(expiry, format="%d-%b-%y")
next_line, df = parse_nomura_block(fh, index_desc["index"])
- option_stack[expiry] = df
+ option_stack[(expiry, index_desc["version"])] = df
fwd_index.append({"expiry": expiry, **index_desc})
if next_line:
if "EXPIRY" in next_line:
@@ -524,7 +523,7 @@ def parse_sg_us(fh, index_desc):
line = line.rstrip()
if line.startswith("Type"):
expiry, df = parse_sg_block(fh, index_desc["index"], expiration_dates)
- option_stack[expiry] = df
+ option_stack[(expiry, index_desc["version"])] = df
fwd_index.append({"expiry": expiry, **index_desc})
return option_stack, fwd_index
@@ -551,7 +550,10 @@ def parse_gs_us(fh, index_desc):
}
)
try:
- option_stack[expiry], line = parse_gs_block(fh, index_desc["index"])
+ (
+ option_stack[(expiry, index_desc["version"])],
+ line,
+ ) = parse_gs_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}")
@@ -594,7 +596,9 @@ def parse_citi_us(fh, index_desc):
expiry, ref = m.groups()
expiry = pd.to_datetime(expiry, format="%d-%b-%y")
fwd_index.append({"ref": ref, "expiry": expiry, **index_desc})
- option_stack[expiry] = parse_citi_block(fh, index_desc["index"])
+ option_stack[(expiry, index_desc["version"])] = parse_citi_block(
+ fh, index_desc["index"]
+ )
else:
logger.error("Can't parse expiry line:", line)
return option_stack, fwd_index
@@ -616,7 +620,9 @@ def parse_cs_us(fh, index_desc):
d = m.groupdict()
d["expiry"] = pd.to_datetime(d["expiry"], format="%d-%b-%y")
fwd_index.append({**index_desc, **d})
- option_stack[d["expiry"]] = parse_cs_block(fh, index_desc["index"])
+ option_stack[(d["expiry"], index_desc["version"])] = parse_cs_block(
+ fh, index_desc["index"]
+ )
else:
logger.error("Can't parse expiry line:", line, "filename:", fh.name)
return option_stack, fwd_index
@@ -643,7 +649,7 @@ def parse_bnp_us(fh, index_desc):
d for d in expiration_dates if d.month == expiry_month
)
fwd_index.append({**index_desc, **d})
- option_stack[d["expiry"]] = parse_bnp_block(
+ option_stack[(d["expiry"], index_desc["version"])] = parse_bnp_block(
fh, index_desc["index"], c == -1
)
else:
@@ -654,7 +660,6 @@ def parse_bnp_us(fh, index_desc):
def parse_jpm_useu(fh, index_desc):
option_stack = {}
fwd_index = []
- versions = set()
regex = r"JPM (CDX|iTrx) Options: (HY|IG|MAIN|XOVER) \(\w\d+V(?P<version>\d+)\) (?P<expiry>[\d]+-[\w]+-[\d]+) \*\* Fwd @(?P<fwdref>[\d.]+)"
pat = re.compile(regex)
line = next(fh).strip()
@@ -667,7 +672,6 @@ def parse_jpm_useu(fh, index_desc):
)
d["expiry"] = pd.to_datetime(d["expiry"], format="%d-%b-%y")
index_desc["version"] = d["version"]
- versions.add(d["version"])
fwd_index.append({**index_desc, **d})
try:
@@ -813,7 +817,14 @@ def write_todb(swaption_stack, index_data, conn):
else:
try:
df = swaption_stack.loc[
- (t.quotedate, t.index, t.series, t.expiry, t.quote_source),
+ (
+ t.quotedate,
+ t.index,
+ t.series,
+ t.expiry,
+ t.quote_source,
+ t.version,
+ ),
]
except KeyError as e:
logger.warning(