diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/parse_gs_exchange.py | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/python/parse_gs_exchange.py b/python/parse_gs_exchange.py index 2fec4a4a..9150f273 100644 --- a/python/parse_gs_exchange.py +++ b/python/parse_gs_exchange.py @@ -12,20 +12,17 @@ class ParseError(Exception): def parse_email(email, fwd_index): - m = re.search("(IG|HY)(\d{2}) 5y (?:.*)SWAPTION (?:UPDATE|CLOSES|CLOSE) - Ref\D+([\d.]+)\D*$", + m = re.search("(IG|HY)(\d{2}) 5y (?:.*)SWAPTION (?:UPDATE|CLOSES|CLOSE) - Ref\D+([\d.]+)(?:[^(]+\(([\d.]+)\))?", email.subject) if m: - indextype, series, ref = m.groups() + indextype, series, ref, refspread = m.groups() series = int(series) - if indextype == 'HY': - refprice, refspread = map(float, - re.match(r"([\S]+)\s+\(([^)]+)\)", ref). - groups()) - else: - try: - refspread = float(ref) - except ValueError as e: - raise ParseError(str(e)) + if indextype == 'IG': + refspread = ref + try: + refspread = float(ref) + except ValueError as e: + raise ParseError(str(e)) else: raise ParseError(f"can't parse subject line: {email.subject}") @@ -74,7 +71,7 @@ def parse_email(email, fwd_index): 'expiry': date, 'index': indextype, 'series': series, - 'ref': refspread if indextype == "IG" else refprice} + 'ref': refspread if indextype == "IG" else ref} if indextype == "IG": d['fwdspread'] = float(fwspread) else: |
