prabalGaur commited on
Commit
13fa98f
·
verified ·
1 Parent(s): 87e39a4

Upload community_contributions/chrys/models.py with huggingface_hub

Browse files
community_contributions/chrys/models.py ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Pydantic models for ARIA pipeline: asset data, tech result, sentiment, decision, alert payload.
3
+ """
4
+ from typing import Optional
5
+ from pydantic import BaseModel, Field
6
+
7
+
8
+ class AssetData(BaseModel):
9
+ asset: str
10
+ price: float
11
+ change_1h: str = ""
12
+ change_24h: str = ""
13
+ volume_ratio: float = 1.0
14
+ ohlcv_14: list[dict] = Field(default_factory=list) # e.g. [{"o", "h", "l", "c", "v", "t"}, ...]
15
+ ohlcv_50: list[dict] = Field(default_factory=list)
16
+ high_52w: float = 0.0
17
+ low_52w: float = 0.0
18
+
19
+
20
+ class TechResult(BaseModel):
21
+ asset: str
22
+ rsi: float = 0.0
23
+ macd_signal: str = "NEUTRAL" # BULLISH_CROSS, BEARISH_CROSS, NEUTRAL
24
+ bb_signal: str = "NEUTRAL" # LOWER_BAND_BOUNCE, UPPER_BAND_TOUCH, NEUTRAL
25
+ ema_cross: str = "NEUTRAL" # GOLDEN_CROSS, DEATH_CROSS, NEUTRAL
26
+ volume_spike: bool = False
27
+ tech_score: int = 0
28
+ bias: str = "NEUTRAL" # STRONG BUY, MODERATE BUY, NEUTRAL, MODERATE SELL, STRONG SELL
29
+
30
+
31
+ class SentimentResult(BaseModel):
32
+ asset: str
33
+ headlines: list[str] = Field(default_factory=list)
34
+ sentiment: str = "MIXED" # POSITIVE, NEGATIVE, MIXED
35
+ sentiment_score: int = 0 # +1, 0, -1
36
+ narrative: str = ""
37
+
38
+
39
+ class DecisionRecord(BaseModel):
40
+ asset: str
41
+ tech_score: int = 0
42
+ sentiment: str = "MIXED"
43
+ final_score: float = 0.0
44
+ decision: str = "SKIP" # ALERT | SKIP
45
+ priority: int = 0
46
+ skip_reason: Optional[str] = None
47
+
48
+
49
+ class AlertPayload(BaseModel):
50
+ asset: str
51
+ bias: str
52
+ price: float
53
+ change_24h: str
54
+ tech_score: int
55
+ sentiment: str
56
+ narrative: str
57
+ final_score: float
58
+ key_signals: list[str] = Field(default_factory=list)
59
+ url: str = ""