aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--python/api_quotes/api.py6
-rw-r--r--python/api_quotes/quotes.py42
-rw-r--r--sql/serenitasdb.sql19
3 files changed, 29 insertions, 38 deletions
diff --git a/python/api_quotes/api.py b/python/api_quotes/api.py
index a328d619..4d6f5783 100644
--- a/python/api_quotes/api.py
+++ b/python/api_quotes/api.py
@@ -35,10 +35,10 @@ class MarkitAPI:
path = posixpath.join("parsing", "Quote", service)
url = urljoin(cls.base_url, path)
r = requests.get(url, params)
- return json.loads(r.text)
+ return cls.read_api(r)
@staticmethod
def read_api(r):
df = pd.DataFrame.from_dict(json.loads(r.text))
- df.column = df.columns.lower()
- return df
+ df.columns = df.columns.str.lower()
+ return df.to_dict(orient="records")
diff --git a/python/api_quotes/quotes.py b/python/api_quotes/quotes.py
index 43585814..aff245b9 100644
--- a/python/api_quotes/quotes.py
+++ b/python/api_quotes/quotes.py
@@ -8,7 +8,7 @@ asset_class = Literal["CD"]
@dataclass
-class QuoteDetails(Deal, table="markit_quote_details", deal_type=None):
+class QuoteDetails(Deal, table_name="markit_quote_details", deal_type=None):
quotetime: datetime
quote_source: str
id: int
@@ -16,7 +16,7 @@ class QuoteDetails(Deal, table="markit_quote_details", deal_type=None):
@dataclass
-class Quote(Deal, table="markit_quotes", deal_type=None):
+class Quote(Deal, table_name="markit_quotes", deal_type=None):
quoteid: int
assetclass: asset_class
redcode: str
@@ -24,40 +24,30 @@ class Quote(Deal, table="markit_quotes", deal_type=None):
maturity: datetime.date
tenor: int
runningcoupon: int
- bidspread: float
+ bidconventionalspread: float
bidupfront: float
bidsize: float
- askspread: float
+ askconventionalspread: float
askupfront: float
asksize: float
- quotefirness: firmness
- msgid: str
+ firmness: firmness
+ msg_id: str
quotedate: datetime
quotesource: str
@classmethod
def from_markit_line(cls, d):
- return cls(
- quote_id=line["quoteid"],
- asset_class=line["assetclass"],
- redcode=line["redcode"],
- ticker=line["ticker"],
- maturity=datetime.date(
- line["maturityYear"], line["maturityMonth"], line["maturityDay"]
+ additional_attributes = {
+ "maturity": datetime.date(
+ int(d["maturityyear"]), int(d["maturitymonth"]), int(d["maturityday"])
),
- tenor=line["tenor"],
- running_coupon=line["runningCoupon"],
- bid_spread=line["bidConventionalSpread"],
- bid_upfront=line["bidUpfront"],
- bid_size=line["bidSize"],
- ask_spread=line["askConventionalSpread"],
- ask_upfront=line["askUpfront"],
- ask_size=line["askSize"],
- quote_firmness=line["firmness"],
- msg_id=line["message"]["id"],
- quotedate=line["receivedDateTime"],
- quote_source=line["sourceShortName"],
- )
+ "msg_id": d["message"]["id"],
+ "quotedate": d["receiveddatetime"],
+ "quotesource": d["sourceshortname"],
+ }
+ d.update(additional_attributes)
+ breakpoint()
+ return cls.from_dict(**d)
@property
def message(self):
diff --git a/sql/serenitasdb.sql b/sql/serenitasdb.sql
index d643dc7a..15625f69 100644
--- a/sql/serenitasdb.sql
+++ b/sql/serenitasdb.sql
@@ -1239,20 +1239,21 @@ CREATE TYPE quote_firmness AS ENUM('FIRM', 'INDICATIVE');
CREATE TABLE markit_quotes (
quoteid int8 primary key,
- asset_class markit_asset_class,
+ assetclass markit_asset_class,
redcode text,
ticker text,
maturity date,
tenor tenor,
- running_coupon int,
- bid_spread float,
- bid_upfront float,
- bid_size float,
- ask_spread float,
- ask_upfront float,
- ask_size float,
+ runningcoupon int,
+ bidconventionalspread float,
+ bidupfront float,
+ bidsize float,
+ askconventionalspread float,
+ askupfront float,
+ asksize float,
+ firmness quote_firmness,
msg_id text,
source text,
quotedate timestamptz NULL,
- quote_source varchar(4) NULL
+ quotesource varchar(4) NULL
); \ No newline at end of file