first commit
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
"""Market data models."""
|
||||
from datetime import datetime
|
||||
from typing import Optional, List
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
class Market(BaseModel):
|
||||
"""Polymarket market data model."""
|
||||
|
||||
id: str
|
||||
question: str
|
||||
condition_id: Optional[str] = None
|
||||
slug: Optional[str] = None
|
||||
description: Optional[str] = None
|
||||
end_date: Optional[str] = None
|
||||
outcomes: List[str] = Field(default_factory=list)
|
||||
outcome_prices: List[float] = Field(default_factory=list)
|
||||
clob_token_ids: List[str] = Field(default_factory=list)
|
||||
volume: float = 0.0
|
||||
volume_24hr: float = 0.0
|
||||
liquidity: float = 0.0
|
||||
active: bool = True
|
||||
closed: bool = False
|
||||
neg_risk: bool = False
|
||||
|
||||
|
||||
class TrendingMarket(BaseModel):
|
||||
"""Trending market with additional metrics."""
|
||||
|
||||
market: Market
|
||||
volume_24hr: float = 0.0
|
||||
liquidity: float = 0.0
|
||||
rank: int = 0
|
||||
fetched_at: datetime = Field(default_factory=datetime.utcnow)
|
||||
|
||||
@property
|
||||
def is_valid_for_monitoring(self) -> bool:
|
||||
"""Check if market is valid for whale monitoring."""
|
||||
return (
|
||||
self.market.active
|
||||
and not self.market.closed
|
||||
and len(self.market.clob_token_ids) > 0
|
||||
)
|
||||
Reference in New Issue
Block a user