aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/quote_parsing/__init__.py4
-rw-r--r--python/quote_parsing/__main__.py6
-rw-r--r--python/quote_parsing/download_emails.py10
-rw-r--r--python/quote_parsing/parse_emails.py8
-rw-r--r--python/utils/__init__.py10
5 files changed, 30 insertions, 8 deletions
diff --git a/python/quote_parsing/__init__.py b/python/quote_parsing/__init__.py
index 6724b2af..9b60344f 100644
--- a/python/quote_parsing/__init__.py
+++ b/python/quote_parsing/__init__.py
@@ -1,5 +1,7 @@
import logging
import sys
+
sys.path.append("..")
-from utils import SerenitasFileHandler
+from utils import SerenitasRotatingFileHandler
+
logger = logging.getLogger(__name__)
diff --git a/python/quote_parsing/__main__.py b/python/quote_parsing/__main__.py
index 5fef3463..50daf2b2 100644
--- a/python/quote_parsing/__main__.py
+++ b/python/quote_parsing/__main__.py
@@ -7,12 +7,12 @@ import sys
from env import DATA_DIR
from googleapiclient import errors
-from . import SerenitasFileHandler
+from . import SerenitasRotatingFileHandler
from . import logger
from .download_emails import save_emails
from .parse_emails import parse_email, write_todb
-fh = SerenitasFileHandler("emails_parsing.log")
+fh = SerenitasRotatingFileHandler("emails_parsing.log", 1_000_000)
logger.addHandler(fh)
logger.setLevel(logging.WARNING)
@@ -22,7 +22,7 @@ except (errors.HttpError, FileNotFoundError) as e:
logger.error(e)
save_emails(update=False)
-emails = [f for f in (DATA_DIR / "swaptions").iterdir() if f.is_file()]
+emails = [f for f in (DATA_DIR / "swaptions").glob("????-??/*") if f.is_file()]
swaption_stack = {}
index_data = pd.DataFrame()
diff --git a/python/quote_parsing/download_emails.py b/python/quote_parsing/download_emails.py
index 24d87601..e61f6637 100644
--- a/python/quote_parsing/download_emails.py
+++ b/python/quote_parsing/download_emails.py
@@ -38,8 +38,8 @@ def save_emails(update=True):
last_history_id = int((DATA_DIR / ".lastHistoryId").read_text())
existing_msgs = []
else:
- p = DATA_DIR / "swaptions"
- existing_msgs = set(str(x).split("_")[1] for x in p.iterdir() if x.is_file())
+ p = (DATA_DIR / "swaptions").glob("????-??/*")
+ existing_msgs = set(str(x).split("_")[1] for x in p if x.is_file())
last_history_id = None
gm = GmailMessage()
@@ -63,8 +63,10 @@ def save_emails(update=True):
logger.error("error decoding " + msg['id'])
continue
else:
- email = (DATA_DIR / "swaptions" /
- f"{date:%Y-%m-%d %H-%M-%S}_{msg['id']}")
+ save_dir = DATA_DIR / "swaptions" / f"{date:%Y-%m}"
+ if not save_dir.exists():
+ save_dir.mkdir()
+ email = save_dir / f"{date:%Y-%m-%d %H-%M-%S}_{msg['id']}"
with email.open("w") as fh:
fh.write(subject + "\r\n")
fh.write(content)
diff --git a/python/quote_parsing/parse_emails.py b/python/quote_parsing/parse_emails.py
index 21c1b9f1..fe5b7698 100644
--- a/python/quote_parsing/parse_emails.py
+++ b/python/quote_parsing/parse_emails.py
@@ -462,6 +462,13 @@ def parse_citi(fh, indextype, series, quotedate):
return option_stack, fwd_index
+def parse_cs(fh, indextype, series, quotedate):
+ option_stack = {}
+ fwd_index = []
+ d = {"quotedate": quotedate, "index": indextype, "series": series}
+ return
+
+
subject_baml = re.compile(r"(?:Fwd:){0,2}(?:BAML )?(\w{2})([0-9]{1,2})\s")
subject_ms = re.compile(
r"[^$]*\$\$ MS CDX OPTIONS: (IG|HY)(\d{2})[^-]*- REF[^\d]*([\d.]+)"
@@ -470,6 +477,7 @@ subject_nom = re.compile(r"(?:Fwd:)?CDX (IG|HY)(\d{2}).*- REF:[^\d]*([\d.]+)")
subject_gs = re.compile(r"(?:FW: |Fwd: )?GS (IG|HY)(\d{2}) 5y.*- Ref [^\d]*([\d.]+)")
subject_sg = re.compile(r"SG OPTIONS - CDX (IG|HY) S(\d{2}).* REF[^\d]*([\d.]+)")
subject_citi = re.compile(r"(?:Fwd:)?Citi Options: (IG|HY)(\d{2}) 5Y")
+subject_cs = re.compile(r"CS CDX (IG|HY)(\d{2}) Options - Ref = ([\d.]+)[^\d]*")
def parse_email(email, date_received):
diff --git a/python/utils/__init__.py b/python/utils/__init__.py
index 625e0f10..856e42f1 100644
--- a/python/utils/__init__.py
+++ b/python/utils/__init__.py
@@ -12,3 +12,13 @@ class SerenitasFileHandler(logging.FileHandler):
def __init__(self, log_file):
super().__init__(filename=os.path.join(os.getenv("LOG_DIR"), log_file))
self.setFormatter(SerenitasFileHandler._formatter)
+
+
+class SerenitasRotatingFileHandler(logging.RotatingFileHandler):
+ """simple class that encapsulates where we store our logs"""
+
+ def __init__(self, log_file, maxBytes=0):
+ super().__init__(
+ filename=os.path.join(os.getenv("LOG_DIR"), log_file), maxBytes=maxByes
+ )
+ self.setFormatter(SerenitasFileHandler._formatter)