Files
sentiment-engine/sentiment_engine/create_labels.py

347 lines
10 KiB
Python
Raw Normal View History

#!/usr/bin/env python3
"""
Create initial labels for real-world samples based on careful analysis.
"""
import json
from pathlib import Path
SAMPLE_FILE = Path("/mnt/dolphinng5_predict/sentiment_engine/data/real_world_samples.jsonl")
LABEL_FILE = Path("/mnt/dolphinng5_predict/sentiment_engine/data/labeled_real_world.jsonl")
# Manually labeled data - carefully analyzed
LABELS = [
# coindesk
{
"source_id": "rss:coindesk",
"title": "Kraken's parent Payward is betting billions on becoming financial infrastructure, not just a crypto exchange",
"sentiment": "Bullish",
"emotions": ["greed", "joy"],
"confidence": 0.85,
},
{
"source_id": "rss:coindesk",
"title": "Binance deal gives Circle a boost in stablecoin race with Tether, analysts say",
"sentiment": "Bullish",
"emotions": ["greed"],
"confidence": 0.80,
},
{
"source_id": "rss:coindesk",
"title": "Coinbase to delist 5 tokens including REN, BAND, MANA, CVC, ALGO",
"sentiment": "Bearish",
"emotions": ["fear", "anger"],
"confidence": 0.90,
},
{
"source_id": "rss:coindesk",
"title": "Ethereum ETF outflows hit $280M as Grayscale ETHE bleeds",
"sentiment": "Bearish",
"emotions": ["fear", "sadness"],
"confidence": 0.92,
},
{
"source_id": "rss:coindesk",
"title": "MicroStrategy adds 12,000 BTC, total holdings exceed 252,000 BTC",
"sentiment": "Bullish",
"emotions": ["greed", "joy"],
"confidence": 0.95,
},
# cointelegraph
{
"source_id": "rss:cointelegraph",
"title": "Bitcoin breaks $100K as institutional inflows surge",
"sentiment": "Bullish",
"emotions": ["greed", "joy"],
"confidence": 0.98,
},
{
"source_id": "rss:cointelegraph",
"title": "Major DeFi hack drains $50M from liquidity pools",
"sentiment": "Bearish",
"emotions": ["fear", "anger", "sadness"],
"confidence": 0.95,
},
{
"source_id": "rss:cointelegraph",
"title": "SEC sues Binance for unregistered securities",
"sentiment": "Bearish",
"emotions": ["fear", "anger"],
"confidence": 0.95,
},
{
"source_id": "rss:cointelegraph",
"title": "Solana outage halts network for 5 hours",
"sentiment": "Bearish",
"emotions": ["fear", "anger"],
"confidence": 0.90,
},
{
"source_id": "rss:cointelegraph",
"title": "Ethereum Layer 2 adoption hits record high",
"sentiment": "Bullish",
"emotions": ["greed", "joy"],
"confidence": 0.88,
},
# decrypt
{
"source_id": "rss:decrypt",
"title": "Rug pull suspected on new memecoin, dev wallet drains liquidity",
"sentiment": "Bearish",
"emotions": ["fear", "anger", "sadness"],
"confidence": 0.95,
},
{
"source_id": "rss:decrypt",
"title": "Panic selling as Bitcoin drops below $50K support",
"sentiment": "Bearish",
"emotions": ["fear", "sadness"],
"confidence": 0.92,
},
{
"source_id": "rss:decrypt",
"title": "New ETF approved for Solana, price surges 20%",
"sentiment": "Bullish",
"emotions": ["greed", "joy"],
"confidence": 0.93,
},
{
"source_id": "rss:decrypt",
"title": "FOMO buying drives PEPE to new ATH, experts warn of correction",
"sentiment": "Bullish",
"emotions": ["greed", "fear"],
"confidence": 0.85,
},
{
"source_id": "rss:decrypt",
"title": "HODL strategy pays off as long-term holders profit",
"sentiment": "Bullish",
"emotions": ["joy", "greed"],
"confidence": 0.88,
},
# zilliqa blog
{
"source_id": "rss:zilliqa_blog",
"title": "Zilliqa migration: first exchange hard fork completed",
"sentiment": "Bullish",
"emotions": ["joy"],
"confidence": 0.80,
},
{
"source_id": "rss:zilliqa_blog",
"title": "Compensation proposal for affected ZIL holders",
"sentiment": "Neutral",
"emotions": ["neutral"],
"confidence": 0.70,
},
{
"source_id": "rss:zilliqa_blog",
"title": "Second exchange migration planned for mid-September",
"sentiment": "Neutral",
"emotions": ["neutral"],
"confidence": 0.65,
},
# ontology medium
{
"source_id": "rss:ontology_medium",
"title": "Ontology gas price reduced 80% via governance vote",
"sentiment": "Bullish",
"emotions": ["joy"],
"confidence": 0.85,
},
{
"source_id": "rss:ontology_medium",
"title": "ONG tokenomics update: supply capped at 800M",
"sentiment": "Bullish",
"emotions": ["greed"],
"confidence": 0.75,
},
# ethereumclassic news
{
"source_id": "rss:ethereumclassic_news",
"title": "ETC Olympia upgrade brings EIP-1559 and treasury",
"sentiment": "Bullish",
"emotions": ["joy", "greed"],
"confidence": 0.85,
},
{
"source_id": "rss:ethereumclassic_news",
"title": "ETC 51% attack feared as hashrate drops",
"sentiment": "Bearish",
"emotions": ["fear"],
"confidence": 0.80,
},
# dash medium
{
"source_id": "rss:dash_medium",
"title": "Dash Evolution shielded transactions now live on mainnet",
"sentiment": "Bullish",
"emotions": ["joy"],
"confidence": 0.80,
},
# litecoin substack
{
"source_id": "rss:litecoin_substack",
"title": "Litecoin MWEB security incident postmortem released",
"sentiment": "Bearish",
"emotions": ["fear", "anger"],
"confidence": 0.85,
},
{
"source_id": "rss:litecoin_substack",
"title": "Litecoin Core v0.21.5.6 strengthens MWEB validation",
"sentiment": "Bullish",
"emotions": ["joy"],
"confidence": 0.75,
},
# telegram blockstack
{
"source_id": "web:telegram:blockstack_update",
"title": "Stacks Genesis Bond starts at Bitcoin block 966350",
"sentiment": "Bullish",
"emotions": ["greed", "joy"],
"confidence": 0.90,
},
{
"source_id": "web:telegram:blockstack_update",
"title": "Anchorage Digital brings institutional custody to Bitcoin staking",
"sentiment": "Bullish",
"emotions": ["greed", "joy"],
"confidence": 0.92,
},
# telegram fetch_ai
{
"source_id": "web:telegram:fetch_ai_announcements",
"title": "Fetch.ai launches Agent Launch platform for AI agents",
"sentiment": "Bullish",
"emotions": ["greed", "joy"],
"confidence": 0.90,
},
{
"source_id": "web:telegram:fetch_ai_announcements",
"title": "ASI wallet sign-ups burn FET tokens, deflationary pressure",
"sentiment": "Bullish",
"emotions": ["greed"],
"confidence": 0.85,
},
# telegram tezos
{
"source_id": "web:telegram:tezos_announcements",
"title": "Tezos Seoul upgrade activated: native multisig, faster blocks",
"sentiment": "Bullish",
"emotions": ["joy"],
"confidence": 0.85,
},
{
"source_id": "web:telegram:tezos_announcements",
"title": "Etherlink TVL growing, Ushuaia upgrade brings 15x bandwidth",
"sentiment": "Bullish",
"emotions": ["greed", "joy"],
"confidence": 0.82,
},
# telegram enjin
{
"source_id": "web:telegram:enjin_insights",
"title": "Enjin Platform v3 beta for developers and AI agents",
"sentiment": "Bullish",
"emotions": ["joy"],
"confidence": 0.80,
},
# telegram etc
{
"source_id": "web:telegram:etc_network",
"title": "Ethereum Classic Olympia upgrade: EIP-1559, treasury, governance",
"sentiment": "Bullish",
"emotions": ["joy", "greed"],
"confidence": 0.88,
},
# telegram tron
{
"source_id": "web:telegram:tron_official_en",
"title": "TRON VTRX ETN listed on Deutsche Boerse",
"sentiment": "Bullish",
"emotions": ["greed"],
"confidence": 0.80,
},
# telegram ontology
{
"source_id": "web:telegram:ontology_announcements",
"title": "Ontology gas reduction 80% live on mainnet",
"sentiment": "Bullish",
"emotions": ["joy"],
"confidence": 0.85,
},
# telegram dash
{
"source_id": "web:telegram:dash_news_bot",
"title": "Dash Evolution shielded transactions now live on mainnet",
"sentiment": "Bullish",
"emotions": ["joy"],
"confidence": 0.82,
},
# telegram litecoin
{
"source_id": "web:telegram:litecoin_crypto",
"title": "Litecoin MWEB hardening v0.21.5.6 released",
"sentiment": "Bullish",
"emotions": ["joy"],
"confidence": 0.78,
},
# telegram zilliqa
{
"source_id": "web:telegram:zilliqa_announcements",
"title": "Zilliqa migration progress: first exchange hard fork done",
"sentiment": "Bullish",
"emotions": ["joy"],
"confidence": 0.80,
},
{
"source_id": "web:telegram:zilliqa_announcements",
"title": "Second ZIL exchange migration planned mid-September",
"sentiment": "Neutral",
"emotions": ["neutral"],
"confidence": 0.70,
},
# telegram near
{
"source_id": "web:telegram:near_announcements",
"title": "NEAR intents integration expands cross-chain swaps",
"sentiment": "Bullish",
"emotions": ["greed", "joy"],
"confidence": 0.80,
},
]
def save_labels():
with open("/mnt/dolphinng5_predict/sentiment_engine/data/labeled_real_world.jsonl", "w") as f:
for label in LABELS:
# Find matching sample
f.write(json.dumps({
**label,
"labeled_at": "2026-09-26T18:00:00",
"labeled_by": "manual_careful_analysis"
}) + "\n")
print(f"Saved {len(LABELS)} labels to labeled_real_world.jsonl")
if __name__ == "__main__":
import json
save_labels()