1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
from serenitas.ops.trade_dataclasses import Deal
from dataclasses import dataclass, field
import datetime
@dataclass
class QuoteDetails(Deal, table="markit_quote_details", deal_type=None):
quotetime: datetime
quote_source: str
id: int
sender: str = None
@dataclass
class SNCdsQuote(Deal, table="sn_cds_quotes", deal_type=None):
msg_id: id
quote_id: text
redcode: str
ticker: str
maturity: datetime.date
bid_spread: float
bid_upfront: float
bid_size: float
ask_spread: float
ask_upfront: float
ask_size: float
@classmethod
def from_markit_line(cls, line):
return cls(
msg_id=line["message"]["id"],
redcode=line["redCode"],
ticker=line["ticker"],
maturity=datetime.date(
line["maturityYear"], line["maturityMonth"], line["maturityDay"]
),
bid_spread=line["bidConventionalSpread"],
bid_upfront=line["bidUpfront"],
bid_size=line["bidSize"],
ask_spread=line["askConventionalSpread"],
ask_upfront=line["askUpfront"],
ask_size=line["askSize"],
)
@property
def parent(self):
return QuoteDetails.from_tradeid(self.msg_id)
|