- Add trade monitoring and whale detection system - Add LLM-powered trade analysis - Add market data fetching from Polymarket API - Include example environment configuration - Add automated report generation 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
60 lines
1.7 KiB
Python
60 lines
1.7 KiB
Python
"""LLM decision models."""
|
|
from datetime import datetime
|
|
from typing import Optional
|
|
from enum import Enum
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class TradeAction(str, Enum):
|
|
"""Recommended trade action."""
|
|
|
|
BUY = "BUY"
|
|
SELL = "SELL"
|
|
HOLD = "HOLD" # Do not trade
|
|
|
|
|
|
class TraderCredibility(str, Enum):
|
|
"""Trader credibility level based on leaderboard ranking."""
|
|
|
|
HIGH = "HIGH" # Top 100
|
|
MEDIUM = "MEDIUM" # 100-500
|
|
LOW = "LOW" # 500+
|
|
UNKNOWN = "UNKNOWN" # Not on leaderboard
|
|
|
|
|
|
class TradeRecommendation(BaseModel):
|
|
"""Trade recommendation from LLM."""
|
|
|
|
action: TradeAction
|
|
outcome: str # Which outcome to trade
|
|
confidence: float = Field(ge=0.0, le=1.0) # 0-1 confidence score
|
|
suggested_price: Optional[float] = None
|
|
suggested_size_percent: float = Field(default=0.1, ge=0.0, le=1.0) # % of balance
|
|
reasoning: str = ""
|
|
|
|
# Insider trading assessment fields
|
|
insider_trading_likelihood: float = Field(default=0.0, ge=0.0, le=1.0) # 0-1 likelihood
|
|
trader_credibility: TraderCredibility = TraderCredibility.UNKNOWN
|
|
insider_evidence: str = "" # Evidence supporting insider trading assessment
|
|
|
|
|
|
class LLMDecision(BaseModel):
|
|
"""Complete LLM decision for a whale trade."""
|
|
|
|
whale_trade_id: str
|
|
market_id: str
|
|
analysis: str # Full LLM analysis text
|
|
recommendation: TradeRecommendation
|
|
created_at: datetime = Field(default_factory=datetime.utcnow)
|
|
executed: bool = False
|
|
execution_result: Optional[str] = None
|
|
|
|
@property
|
|
def should_trade(self) -> bool:
|
|
"""Check if we should execute this trade."""
|
|
return (
|
|
self.recommendation.action != TradeAction.HOLD
|
|
and self.recommendation.confidence >= 0.6
|
|
)
|