avanza.models.market_data

 1from __future__ import annotations
 2
 3from datetime import datetime
 4from typing import List
 5
 6from pydantic import BaseModel, field_validator
 7
 8from avanza.models.quote import Quote
 9
10
11class MarketDataQuote(Quote):
12    spread: float | None = None
13    timeOfLast: datetime  # override ms -> datetime
14    updated: datetime  # override ms -> datetime
15
16    @field_validator("timeOfLast", "updated", mode="before")
17    @classmethod
18    def parse_dt(cls, v):
19        if isinstance(v, str):
20            return datetime.fromisoformat(v)
21        return v
22
23
24class OrderDepthSide(BaseModel):
25    price: float
26    volume: int
27    priceString: str
28
29
30class OrderDepthLevel(BaseModel):
31    buySide: OrderDepthSide
32    sellSide: OrderDepthSide
33
34
35class OrderDepth(BaseModel):
36    receivedTime: int
37    levels: List[OrderDepthLevel]
38    marketMakerExpected: bool
39
40
41class MarketData(BaseModel):
42    quote: MarketDataQuote
43    orderDepth: OrderDepth
44    trades: List[dict]
class MarketDataQuote(avanza.models.quote.Quote):
12class MarketDataQuote(Quote):
13    spread: float | None = None
14    timeOfLast: datetime  # override ms -> datetime
15    updated: datetime  # override ms -> datetime
16
17    @field_validator("timeOfLast", "updated", mode="before")
18    @classmethod
19    def parse_dt(cls, v):
20        if isinstance(v, str):
21            return datetime.fromisoformat(v)
22        return v
spread: float | None = None
timeOfLast: datetime.datetime = PydanticUndefined

Unix timestamp (milliseconds)

updated: datetime.datetime = PydanticUndefined

Unix timestamp (milliseconds)

@field_validator('timeOfLast', 'updated', mode='before')
@classmethod
def parse_dt(cls, v):
17    @field_validator("timeOfLast", "updated", mode="before")
18    @classmethod
19    def parse_dt(cls, v):
20        if isinstance(v, str):
21            return datetime.fromisoformat(v)
22        return v
class OrderDepthSide(pydantic.main.BaseModel):
25class OrderDepthSide(BaseModel):
26    price: float
27    volume: int
28    priceString: str
price: float = PydanticUndefined
volume: int = PydanticUndefined
priceString: str = PydanticUndefined
class OrderDepthLevel(pydantic.main.BaseModel):
31class OrderDepthLevel(BaseModel):
32    buySide: OrderDepthSide
33    sellSide: OrderDepthSide
buySide: OrderDepthSide = PydanticUndefined
sellSide: OrderDepthSide = PydanticUndefined
class OrderDepth(pydantic.main.BaseModel):
36class OrderDepth(BaseModel):
37    receivedTime: int
38    levels: List[OrderDepthLevel]
39    marketMakerExpected: bool
receivedTime: int = PydanticUndefined
levels: List[OrderDepthLevel] = PydanticUndefined
marketMakerExpected: bool = PydanticUndefined
class MarketData(pydantic.main.BaseModel):
42class MarketData(BaseModel):
43    quote: MarketDataQuote
44    orderDepth: OrderDepth
45    trades: List[dict]
quote: MarketDataQuote = PydanticUndefined
orderDepth: OrderDepth = PydanticUndefined
trades: List[dict] = PydanticUndefined