feat(sentiment): add 30 new sources for uncovered trade assets
Add 5 RSS feeds + 25 Telegram web_crawl channels for assets with ZERO coverage: - STX: BlockstackUpdate, StacksChat (missed +43% ONE, -5.65% STX) - FET: fetch_ai_announcements, fetch_ai (missed +22.68%) - XTZ: TezosAnnouncements, TezosPlatform (missed +3.85%) - ENJ: enjininsights, ejsnews (missed +5.13%) - ETC: etcnetwork, EtcHash + RSS (missed +8.52%) - TRX: tronnetworkEN, Tron_TRX_News (missed -0.44%) - ONG: ontologyannouncements, OntologyNetwork + RSS (missed +6.37%) - DASH: dashnewsbot, dash_chat + RSS (missed +6.45%) - LTC: litecoin_crypto, litecoin_fundamentals + RSS (missed +5.45%) - ZIL: zilliqann, zilliqachat, ZilliqaDevs + RSS (missed -2.88%, 9x SHORT loss) - NEAR: NearAnnouncements (missed +19.26%) - APT: AptosAnnouncements (missed +10.35%) - SUI: SuiAnnouncements (missed +10.87%) - ICP: dfinity (missed +10.86%) All sources verified: RSS feeds return valid XML, Telegram public preview URLs return HTML. Coverage for trade assets: 40% → ~95%+
This commit is contained in:
@@ -1,257 +0,0 @@
|
||||
# Sentiment Engine Configuration v2.0.0
|
||||
|
||||
# =============================================================================
|
||||
# NATS JetStream Configuration
|
||||
# =============================================================================
|
||||
nats:
|
||||
servers: ["nats://localhost:4222"]
|
||||
stream_ingestion: "sentiment_ingestion"
|
||||
stream_processed: "sentiment_processed"
|
||||
subjects:
|
||||
news: "sentiment.ingest.news"
|
||||
social: "sentiment.ingest.social"
|
||||
regulatory: "sentiment.ingest.regulatory"
|
||||
exchange: "sentiment.ingest.exchange"
|
||||
consumer_durable: "sentiment-engine"
|
||||
ack_wait_seconds: 30
|
||||
max_deliver: 3
|
||||
|
||||
# =============================================================================
|
||||
# ClickHouse Configuration
|
||||
# =============================================================================
|
||||
clickhouse:
|
||||
host: "localhost"
|
||||
port: 8123
|
||||
database: "dolphin"
|
||||
user: "default"
|
||||
password: "${CLICKHOUSE_PASSWORD}"
|
||||
tables:
|
||||
sentiment_events: "sentiment_events"
|
||||
sentiment_scores: "sentiment_scores"
|
||||
sentiment_raw_items: "sentiment_raw_items"
|
||||
sentiment_otel: "sentiment_otel"
|
||||
|
||||
# =============================================================================
|
||||
# Hazelcast Configuration
|
||||
# =============================================================================
|
||||
hazelcast:
|
||||
cluster_name: "dolphin"
|
||||
cluster_members: ["localhost:5701"]
|
||||
maps:
|
||||
sentiment_scores: "sentiment_scores_*"
|
||||
sentiment_streams: "sentiment_streams"
|
||||
|
||||
# =============================================================================
|
||||
# LatticeDB (Graph Layer) Configuration
|
||||
# =============================================================================
|
||||
latticedb:
|
||||
enabled: true
|
||||
host: "localhost"
|
||||
port: 7878
|
||||
# For source credibility propagation, entity co-occurrence graph
|
||||
|
||||
# =============================================================================
|
||||
# NLP Model Configuration
|
||||
# =============================================================================
|
||||
nlp:
|
||||
models:
|
||||
entity_extraction:
|
||||
model_name: "ProsusAI/finbert"
|
||||
device: "cuda"
|
||||
batch_size: 32
|
||||
max_length: 512
|
||||
sentiment_emotion:
|
||||
model_name: "google/gemma-3-4b"
|
||||
device: "cuda"
|
||||
batch_size: 8
|
||||
max_length: 2048
|
||||
quantization: "4bit"
|
||||
event_classification:
|
||||
model_name: "custom/finbert-event-classifier"
|
||||
device: "cuda"
|
||||
batch_size: 16
|
||||
max_length: 512
|
||||
embeddings:
|
||||
model_name: "intfloat/e5-large-v2"
|
||||
device: "cuda"
|
||||
batch_size: 64
|
||||
max_length: 4096
|
||||
multilingual_embeddings:
|
||||
model_name: "intfloat/multilingual-e5-large"
|
||||
device: "cuda"
|
||||
batch_size: 32
|
||||
language_detection:
|
||||
model: "fasttext"
|
||||
supported_languages: ["en"]
|
||||
translate_non_english: false
|
||||
asset_mapping:
|
||||
ticker_regex: "\\$?[A-Z]{2,10}\\b"
|
||||
contract_address_regex: "0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44}"
|
||||
alias_file: "config/asset_aliases.yaml"
|
||||
known_entities_file: "config/known_entities.yaml"
|
||||
|
||||
# =============================================================================
|
||||
# Scoring Engine Configuration
|
||||
# =============================================================================
|
||||
scoring:
|
||||
parameters:
|
||||
fear_state:
|
||||
halflife_minutes: 180
|
||||
confidence_floor: 0.15
|
||||
proximity_boost: 0.5
|
||||
centroid_weight_keywords: 1.0
|
||||
centroid_weight_sentences: 2.0
|
||||
centroid_weight_clusters: 1.5
|
||||
greed_state:
|
||||
halflife_minutes: 180
|
||||
confidence_floor: 0.15
|
||||
proximity_boost: 0.5
|
||||
hype_velocity:
|
||||
halflife_minutes: 60
|
||||
confidence_floor: 0.20
|
||||
proximity_boost: 0.3
|
||||
velocity_window_minutes: 15
|
||||
pub_velocity:
|
||||
halflife_minutes: 120
|
||||
window_minutes: 60
|
||||
min_sources: 3
|
||||
pump_score:
|
||||
halflife_minutes: 240
|
||||
confidence_floor: 0.25
|
||||
multi_source_threshold: 3
|
||||
coordination_window_minutes: 30
|
||||
dump_score:
|
||||
halflife_minutes: 240
|
||||
confidence_floor: 0.25
|
||||
event_flags:
|
||||
halflife_minutes: 480
|
||||
event_types:
|
||||
- "listing"
|
||||
- "delisting"
|
||||
- "hack"
|
||||
- "regulatory"
|
||||
- "governance"
|
||||
- "upgrade"
|
||||
- "partnership"
|
||||
- "earnings"
|
||||
- "macro"
|
||||
- "liquidation"
|
||||
- "whale"
|
||||
- "manipulation"
|
||||
|
||||
aggregation:
|
||||
asset_to_industry_map: "config/asset_industry_map.yaml"
|
||||
industry_weights: "equal" # or "market_cap"
|
||||
market_weights: "equal"
|
||||
decay:
|
||||
asset_halflife_minutes: 30
|
||||
industry_halflife_minutes: 60
|
||||
market_halflife_minutes: 120
|
||||
|
||||
# =============================================================================
|
||||
# Source Credibility Registry
|
||||
# =============================================================================
|
||||
credibility:
|
||||
registry_file: "config/source_credibility.yaml"
|
||||
default_credibility: 0.5
|
||||
decay:
|
||||
half_life_days: 30
|
||||
min_credibility: 0.1
|
||||
feedback_loop:
|
||||
enabled: true
|
||||
lookback_days: 90
|
||||
impact_threshold: 0.02 # 2% price move attributed to event
|
||||
|
||||
# =============================================================================
|
||||
# Source Connector Configuration
|
||||
# =============================================================================
|
||||
connectors:
|
||||
rss:
|
||||
poll_interval_seconds: 120 # 2 minutes
|
||||
max_feeds_per_poll: 500
|
||||
timeout_seconds: 30
|
||||
user_agent: "DOLPHIN-SentimentEngine/2.0"
|
||||
api:
|
||||
poll_interval_seconds: 300 # 5 minutes
|
||||
rate_limit_rpm: 100
|
||||
timeout_seconds: 30
|
||||
twitter:
|
||||
bearer_token: "${TWITTER_BEARER_TOKEN}"
|
||||
api_key: "${TWITTER_API_KEY}"
|
||||
api_secret: "${TWITTER_API_SECRET}"
|
||||
access_token: "${TWITTER_ACCESS_TOKEN}"
|
||||
access_secret: "${TWITTER_ACCESS_SECRET}"
|
||||
stream_rules: ["crypto", "bitcoin", "ethereum", "defi", "web3"]
|
||||
sample_rate: 0.1
|
||||
reddit:
|
||||
client_id: "${REDDIT_CLIENT_ID}"
|
||||
client_secret: "${REDDIT_CLIENT_SECRET}"
|
||||
user_agent: "DOLPHIN-SentimentEngine/2.0"
|
||||
subreddits: ["CryptoCurrency", "Bitcoin", "EthTrader", "CryptoMoon", "SatoshiStreetBets"]
|
||||
poll_interval_seconds: 300
|
||||
use_pushshift: true
|
||||
discord:
|
||||
bot_token: "${DISCORD_BOT_TOKEN}"
|
||||
channels: [] # channel IDs to monitor
|
||||
telegram:
|
||||
bot_token: "${TELEGRAM_BOT_TOKEN}"
|
||||
channels: [] # channel usernames/IDs
|
||||
web_crawl:
|
||||
enabled: true
|
||||
tool: "hister" # or "scrapy"
|
||||
job_timeout_seconds: 3600
|
||||
max_depth: 2
|
||||
allowed_domains: []
|
||||
rate_limit_rps: 1
|
||||
|
||||
# =============================================================================
|
||||
# Prefect Configuration
|
||||
# =============================================================================
|
||||
prefect:
|
||||
api_url: "http://localhost:4200/api"
|
||||
work_pool: "sentiment-engine"
|
||||
deployment_tags: ["sentiment", "production"]
|
||||
flows:
|
||||
rss_ingest:
|
||||
schedule: "*/2 * * * *" # every 2 minutes
|
||||
timeout_seconds: 300
|
||||
api_ingest:
|
||||
schedule: "*/5 * * * *" # every 5 minutes
|
||||
timeout_seconds: 300
|
||||
web_crawl:
|
||||
schedule: "0 */30 * * *" # every 30 minutes
|
||||
timeout_seconds: 7200
|
||||
|
||||
# =============================================================================
|
||||
# Trading Engine Integration
|
||||
# =============================================================================
|
||||
trading_integration:
|
||||
exf_map_key: "exf_latest"
|
||||
acb_keys:
|
||||
- "market_sentiment_state"
|
||||
- "aggregate_pump_risk"
|
||||
- "fear_state"
|
||||
- "greed_state"
|
||||
- "hype_velocity"
|
||||
book_health_gate:
|
||||
pump_score_veto_threshold: 75
|
||||
alpha_exit_v7:
|
||||
dump_score_threshold: 70
|
||||
fear_state_threshold: 80
|
||||
|
||||
# =============================================================================
|
||||
# Observability
|
||||
# =============================================================================
|
||||
observability:
|
||||
otel:
|
||||
endpoint: "http://localhost:4317"
|
||||
service_name: "sentiment-engine"
|
||||
resource_attributes:
|
||||
deployment.environment: "production"
|
||||
prometheus:
|
||||
port: 9090
|
||||
path: "/metrics"
|
||||
logging:
|
||||
level: "INFO"
|
||||
format: "json"
|
||||
output: "stdout"
|
||||
Reference in New Issue
Block a user