feat: massively expand crypto sentiment vocabulary
- CRYPTO_BULLISH_KEYWORDS: ~200+ terms covering price action, institutional/ETF, exchange listings, partnerships, technical indicators, on-chain, DeFi yield, macro narratives, sentiment/social - CRYPTO_BEARISH_KEYWORDS: ~350+ terms covering crashes/dumps, liquidations, hacks/exploits, depeg, outflows/selling, regulatory/legal, bankruptcy, technical indicators, on-chain, DeFi issues, macro risk-off, sentiment/social - WHALE_BULLISH_PHRASES: ~50+ context-aware phrases for whale accumulation/buying - WHALE_BEARISH_PHRASES: ~70+ context-aware phrases for whale distribution/selling Both keyword lists duplicated in CryptoSentimentCalibrator class for backward compatibility. Result: 15/15 critical sentiment tests still pass with vastly expanded coverage.
This commit is contained in:
@@ -269,40 +269,216 @@ class CryptoSentimentCalibrator:
|
||||
"""
|
||||
|
||||
# Crypto-bullish keywords (should map to index 2 = Bullish)
|
||||
# Removed: upgrade, upgrades, upgraded, mainnet (protocol events, not price signals)
|
||||
# Removed: whale, whales (whale movement can be either bullish or bearish)
|
||||
# Comprehensive vocabulary covering price action, institutional, technical, on-chain, and news catalysts
|
||||
CRYPTO_BULLISH_KEYWORDS = [
|
||||
"surge", "pump", "moon", "rally", "breakout", "bullish", "ath", "all.time.high",
|
||||
"inflow", "inflows", "adoption", "accumulation", "bull", "green",
|
||||
"profit", "gain", "win", "success", "breakthrough", "approval", "etf",
|
||||
"all.time.high", "record.high", "new.high",
|
||||
"approves", "approved", "approval", "approved",
|
||||
"listing", "listed", "lists", "list", "listings", "launch", "launches",
|
||||
"partnership", "partner", "collaboration",
|
||||
# Price action
|
||||
"surge", "surges", "surged", "surgeing", "pump", "pumps", "pumped", "pumping",
|
||||
"moon", "mooning", "mooned", "to.the.moon", "rally", "rallies", "rallied", "rallying",
|
||||
"breakout", "breakouts", "break.out", "breaking.out", "bullish", "bull.run", "bullrun",
|
||||
"ath", "all.time.high", "all.time.highs", "record.high", "record.highs", "new.high", "new.highs",
|
||||
"higher.high", "higher.highs", "higher.low", "higher.lows", "uptrend", "uptrending",
|
||||
"green", "green.candle", "green.candles", "pumping", "ripping", "rips", "ripped",
|
||||
"parabolic", "parabolic.move", "explosive", "explosive.move", "violent.move.up",
|
||||
|
||||
# Inflows & accumulation
|
||||
"inflow", "inflows", "net.inflow", "positive.flow", "capital.inflow", "institutional.inflow",
|
||||
"adoption", "adoptions", "mass.adoption", "mainstream.adoption", "accumulation", "accumulating",
|
||||
"accumulate", "accumulates", "accumulated", "whale.accumulation", "smart.money.accumulation",
|
||||
"hodl", "hodling", "diamond.hands", "strong.hands", "not.selling", "holding.strong",
|
||||
"buy.the.dip", "buying.the.dip", "dip.bought", "dca", "dollar.cost.average",
|
||||
|
||||
# Institutional & ETF
|
||||
"etf", "etfs", "spot.etf", "spot.etfs", "bitcoin.etf", "ethereum.etf", "etf.approval",
|
||||
"etf.approved", "etf.approves", "etf.launch", "etf.launches", "etf.listed", "etf.inflow",
|
||||
"etf.inflows", "blackrock", "fidelity", "vanguard", "grayscale", "ark.invest", "institutional",
|
||||
"institutions", "institutional.adoption", "corporate.treasury", "corporate.adoption",
|
||||
"microstrategy", "tesla", "public.company", "balance.sheet", "treasury.reserve",
|
||||
"approval", "approvals", "approved", "approves", "sec.approval", "regulatory.approval",
|
||||
"regulatory.clarity", "clear.regulation", "friendly.regulation", "pro.crypto",
|
||||
|
||||
# Exchange & listing
|
||||
"listing", "listings", "listed", "lists", "list", "new.listing", "major.listing",
|
||||
"tier1.listing", "tier1.exchange", "binance.listing", "coinbase.listing", "kraken.listing",
|
||||
"bybit.listing", "okx.listing", "upbit.listing", "launch", "launches", "launched",
|
||||
"mainnet.launch", "testnet.launch", "token.launch", "fair.launch", "ido", "ico", "ieo",
|
||||
|
||||
# Partnerships & development
|
||||
"partnership", "partnerships", "partner", "partners", "collaboration", "collaborations",
|
||||
"integration", "integrations", "integrated", "integrates", "ecosystem", "ecosystem.growth",
|
||||
"developer.activity", "dev.activity", "github.activity", "commits", "contributors",
|
||||
"grant", "grants", "funding", "funded", "investment", "investments", "vc.funding",
|
||||
"strategic.investment", "ecosystem.fund", "developer.fund", "bug.bounty",
|
||||
|
||||
# Profit & gains
|
||||
"profit", "profits", "profitable", "gain", "gains", "gaining", "win", "wins", "winning",
|
||||
"success", "successful", "breakthrough", "milestone", "milestones", "target.hit",
|
||||
"price.target", "target.achieved", "allocation", "portfolio.allocation", "diversification",
|
||||
|
||||
# Technical indicators (bullish)
|
||||
"golden.cross", "golden.cross", "macd.crossover", "macd.bullish", "rsi.oversold",
|
||||
"rsi.recovery", "moving.average", "ma.support", "support.held", "support.holds",
|
||||
"bounce", "bounces", "bounced", "bouncing", "reversal", "reverses", "reversed",
|
||||
"bottom", "bottomed", "local.bottom", "macro.bottom", "capitulation.over",
|
||||
"oversold", "oversold.rsi", "bullish.divergence", "hidden.bullish.divergence",
|
||||
|
||||
# On-chain bullish
|
||||
"whale.accumulation", "whale.buying", "large.holder.accumulation", "exchange.outflow",
|
||||
"exchange.outflows", "balance.decreasing", "off.exchange", "cold.storage",
|
||||
"staking", "staked", "staking.rewards", "validator", "validators", "delegation",
|
||||
"hashrate.up", "hashrate.rising", "difficulty.up", "network.growth", "addresses.growing",
|
||||
"active.addresses", "new.addresses", "transaction.count", "tx.count.rising",
|
||||
|
||||
# DeFi & yield
|
||||
"yield", "yield.farming", "liquidity.mining", "apy", "apr", "high.yield",
|
||||
"tvl.growth", "tvl.rising", "total.value.locked", "tvl.all.time.high",
|
||||
"protocol.revenue", "fees.growing", "revenue.growth", "buyback", "buybacks",
|
||||
"token.burn", "burns", "burning", "deflationary", "supply.decreasing",
|
||||
|
||||
# Macro & narrative
|
||||
"halving", "bitcoin.halving", "supply.shock", "supply.squeeze", "scarcity",
|
||||
"inflation.hedge", "store.of.value", "digital.gold", "monetary.policy",
|
||||
"rate.cut", "rate.cuts", "pivot", "fed.pivot", "liquidity", "m2.growth",
|
||||
"global.liquidity", "dollar.weakness", "dxy.down", "risk.on", "risk.on.environment",
|
||||
|
||||
# Sentiment & social
|
||||
"fomo", "fear.of.missing.out", "euphoria", "optimism", "optimistic", "bullish.sentiment",
|
||||
"greed", "extreme.greed", "fear.and.greed", "greed.index", "social.dominance",
|
||||
"mentions.rising", "trending", "trending.on.twitter", "trending.on.reddit",
|
||||
"google.trends", "search.interest", "retail.fomo", "new.entrants", "onboarding",
|
||||
]
|
||||
|
||||
# Crypto-bearish keywords (should map to index 0 = Bearish)
|
||||
# Added: crashes, crashing, wipes, wiped, wipes out, liquidations
|
||||
# Comprehensive vocabulary covering price action, institutional, technical, on-chain, regulatory, and news catalysts
|
||||
CRYPTO_BEARISH_KEYWORDS = [
|
||||
"crash", "crashes", "crashing", "dump", "panic", "fear", "bearish", "hack", "exploit", "rug", "rugpull",
|
||||
"liquidation", "liquidations", "bankruptcy", "depeg", "depegs", "depegged", "depegging",
|
||||
"outflow", "outflows", "sell", "sells", "selling", "sold",
|
||||
"loss", "lost", "down", "collapse", "ban", "lawsuit", "lawsuits", "enforcement", "delist",
|
||||
"stolen", "theft", "vulnerability", "drain", "drained",
|
||||
"hack", "hacked", "exploit", "exploited", "breach", "stolen", "theft",
|
||||
"unauthorized", "compromise", "drain", "drained", "vulnerability",
|
||||
"lawsuit", "lawsuits", "enforcement", "ban", "delist", "crackdown",
|
||||
"depeg", "depegs", "depegged", "depegging",
|
||||
"crashes", "crashing", "wipes", "wiped", "wipes out", "liquidations",
|
||||
"sues", "sue", "lawsuit", "enforcement", "ban", "crackdown", "delist", "ban",
|
||||
# Price action - crashes & dumps
|
||||
"crash", "crashes", "crashing", "crashed", "crash.down", "flash.crash", "market.crash",
|
||||
"dump", "dumps", "dumped", "dumping", "violent.dump", "capitulation", "capitulating",
|
||||
"panic", "panic.sell", "panic.selling", "panic.sold", "fear", "fearful", "bearish",
|
||||
"bear.market", "bearish.trend", "downtrend", "downtrending", "lower.high", "lower.highs",
|
||||
"lower.low", "lower.lows", "red", "red.candle", "red.candles", "bleeding", "bleeds",
|
||||
"free.fall", "freefall", "nose.dive", "nosedive", "plunge", "plunges", "plunged",
|
||||
"collapse", "collapses", "collapsed", "collapsing", "implosion", "implodes",
|
||||
"wipe", "wipes", "wiped", "wipes.out", "wiped.out", "wiping.out",
|
||||
|
||||
# Liquidations & leverage
|
||||
"liquidation", "liquidations", "liquidated", "liquidating", "mass.liquidation",
|
||||
"cascade.liquidation", "liquidation.cascade", "long.liquidation", "long.liquidations",
|
||||
"short.liquidation", "short.liquidations", "forced.liquidation", "margin.call",
|
||||
"margin.calls", "leverage.flush", "leverage.flush.out", "overleveraged", "over.leverage",
|
||||
"liquidation.price", "liq.price", "rekt", "getting.rekt", "blown.up", "account.blown",
|
||||
|
||||
# Hacks, exploits, security
|
||||
"hack", "hacks", "hacked", "hacking", "exploit", "exploits", "exploited", "exploiting",
|
||||
"rug", "rugpull", "rug.pull", "rugged", "rug.pulled", "exit.scam", "exit.scams",
|
||||
"stolen", "theft", "thefts", "stolen.funds", "drain", "drains", "drained", "draining",
|
||||
"vulnerability", "vulnerabilities", "vuln", "bug", "bugs", "breach", "breaches",
|
||||
"compromise", "compromised", "unauthorized", "unauthorized.access", "private.key.leak",
|
||||
"seed.phrase", "phishing", "phished", "social.engineering", "insider.attack",
|
||||
"smart.contract.bug", "reentrancy", "oracle.manipulation", "price.manipulation",
|
||||
"governance.attack", "flash.loan.attack", "mev.attack", "sandwich.attack",
|
||||
|
||||
# Depeg & stablecoin
|
||||
"depeg", "depegs", "depegged", "depegging", "depeg.risk", "depeg.fear",
|
||||
"stablecoin.depeg", "usdc.depeg", "usdt.depeg", "dai.depeg", "frax.depeg",
|
||||
"peg.broken", "peg.lost", "lost.peg", "below.peg", "trading.below.peg",
|
||||
"reserve.shortfall", "reserves.insufficient", "collateral.ratio", "undercollateralized",
|
||||
|
||||
# Outflows & selling
|
||||
"outflow", "outflows", "net.outflow", "negative.flow", "capital.outflow", "capital.flight",
|
||||
"sell", "sells", "selling", "sold", "sell.pressure", "selling.pressure", "heavy.selling",
|
||||
"distribute", "distributes", "distributed", "distributing", "distribution",
|
||||
"whale.selling", "whale.distribution", "smart.money.selling", "insider.selling",
|
||||
"profit.taking", "take.profit", "taking.profit", "realized.gains", "realize.gains",
|
||||
"paper.hands", "weak.hands", "capitulation.selling", "tax.loss.harvesting",
|
||||
|
||||
# Losses & downside
|
||||
"loss", "losses", "lost", "losing", "unrealized.loss", "drawdown", "max.drawdown",
|
||||
"down", "downward", "declining", "decline", "declines", "dropping", "drops", "dropped",
|
||||
"correction", "corrections", "pullback", "pullbacks", "retrace", "retraces", "retraced",
|
||||
"bear.trap", "fake.out", "fakeout", "bull.trap", "failed.breakout", "failed.rally",
|
||||
|
||||
# Regulatory & legal
|
||||
"ban", "bans", "banned", "banning", "prohibition", "prohibited", "illegal",
|
||||
"lawsuit", "lawsuits", "sued", "sues", "sue", "litigation", "legal.action",
|
||||
"enforcement", "enforcement.action", "sec.enforcement", "cftc.enforcement",
|
||||
"crackdown", "crackdowns", "cracking.down", "regulatory.crackdown",
|
||||
"delist", "delists", "delisted", "delisting", "exchange.delisting", "delisting.announcement",
|
||||
"wells.notice", "wells.notices", "subpoena", "subpoenas", "investigation", "investigations",
|
||||
"sec.investigation", "doj.investigation", "fraud.charges", "securities.fraud",
|
||||
"unregistered.securities", "securities.violation", "compliance", "non.compliant",
|
||||
"license.revoked", "license.denied", "cease.and.desist", "cease.desist",
|
||||
|
||||
# Bankruptcy & insolvency
|
||||
"bankruptcy", "bankrupt", "insolvency", "insolvent", "chapter.11", "chapter.7",
|
||||
"liquidation", "wind.down", "winding.down", "cease.operations", "shut.down",
|
||||
"creditors", "creditor", "claims", "recovery", "recovery.rate", "haircut",
|
||||
"ftx", "celcius", "voyager", "blockfi", "genesis", "three.arrows", "3ac",
|
||||
"terra", "luna", "ust", "algorithmic.stablecoin", "ponzi", "pyramid.scheme",
|
||||
|
||||
# Technical indicators (bearish)
|
||||
"death.cross", "death.cross", "macd.bearish", "macd.crossunder", "rsi.overbought",
|
||||
"rsi.rejection", "moving.average.resistance", "resistance.held", "resistance.holds",
|
||||
"rejection", "rejects", "rejected", "rejecting", "failed.breakout", "fake.breakout",
|
||||
"top", "topped", "local.top", "macro.top", "distribution.phase", "wyckoff.distribution",
|
||||
"overbought", "overbought.rsi", "bearish.divergence", "hidden.bearish.divergence",
|
||||
"head.and.shoulders", "double.top", "triple.top", "rising.wedge", "bearish.pattern",
|
||||
|
||||
# On-chain bearish
|
||||
"whale.selling", "whale.sells", "whale.dump", "whale.dumps", "large.holder.selling",
|
||||
"exchange.inflow", "exchange.inflows", "balance.increasing", "on.exchange",
|
||||
"hot.wallet", "exchange.deposit", "deposit.spike", "whale.deposit", "large.deposit",
|
||||
"unstaking", "unstaked", "unstake", "unstakes", "withdrawal", "withdrawals",
|
||||
"mass.withdrawal", "bank.run", "run.on.exchange", "solvency.concerns", "proof.of.reserves",
|
||||
"hashrate.down", "hashrate.dropping", "difficulty.down", "miners.capitulation",
|
||||
"miner.surrender", "miner.outflow", "miner.selling", "hash.ribbons",
|
||||
|
||||
# DeFi & protocol issues
|
||||
"tvl.drop", "tvl.dropping", "tvl.crash", "total.value.locked.drop", "tvl.outflow",
|
||||
"protocol.exploit", "protocol.hack", "smart.contract.exploit", "oracle.failure",
|
||||
"liquidation.crisis", "bad.debt", "insolvent.protocol", "undercollateralized.vault",
|
||||
"liquidation.bot", "mev.bot", "sandwich.attack", "front.run", "front.running",
|
||||
"inflationary", "supply.increasing", "token.inflation", "emission", "emissions.high",
|
||||
"unlock", "unlocks", "token.unlock", "vesting.unlock", "team.unlock", "investor.unlock",
|
||||
"cliff.unlock", "linear.unlock", "supply.shock", "dilution", "dilutive",
|
||||
|
||||
# Macro & risk-off
|
||||
"rate.hike", "rate.hikes", "fed.hawkish", "hawkish.fed", "tightening", "qt",
|
||||
"quantitative.tightening", "liquidity.drain", "liquidity.crunch", "credit.crunch",
|
||||
"recession", "recession.fears", "recession.risk", "economic.slowdown", "gdp.slowing",
|
||||
"inflation.high", "cpi.high", "ppi.high", "sticky.inflation", "core.inflation",
|
||||
"dollar.strength", "dxy.up", "dxy.rising", "risk.off", "risk.off.environment",
|
||||
"flight.to.safety", "safe.haven", "treasury.yields", "yields.rising", "bond.yields",
|
||||
"correlation", "correlated.selloff", "broad.selloff", "market.wide.selloff",
|
||||
"contagion", "contagion.risk", "systemic.risk", "domino.effect", "spillover",
|
||||
|
||||
# Sentiment & social
|
||||
"fud", "fear.uncertainty.doubt", "fear", "extreme.fear", "fear.and.greed",
|
||||
"fear.index", "capitulation", "despair", "depression", "anger", "rage",
|
||||
"selling.panic", "blind.panic", "herd.mentality", "herd.selling", "lemmings",
|
||||
"social.dominance.drop", "mentions.falling", "interest.fading", "google.trends.down",
|
||||
"search.interest.declining", "retail.exodus", "users.leaving", "offboarding",
|
||||
"narrative.broken", "narrative.shift", "thesis.broken", "thesis.invalidated",
|
||||
"disappointment", "missed.expectations", "guidance.lowered", "warn", "warning",
|
||||
]
|
||||
|
||||
# Whale action phrases - context-dependent sentiment
|
||||
# Whale action phrases - context-dependent sentiment (bullish)
|
||||
WHALE_BULLISH_PHRASES = [
|
||||
"whale buys", "whale buys", "whale accumulates", "whale accumulates", "whale accumulating",
|
||||
"whale loads", "whale loading", "whale adds", "whale buying", "whale accumulation",
|
||||
"whale entry", "whale enters", "whale positions", "whale positions", "whale positioned",
|
||||
"whale accumulation", "whale buying", "whale buys more", "whale adds more",
|
||||
"whale buy", "whale buy", "whale bought", "whale has bought", "whale purchased",
|
||||
"whale purchases", "whale acquiring", "whale acquires", "whale acquired",
|
||||
"whale stacking", "whale stacks", "whale stacked", "whale building", "whale builds",
|
||||
"whale building.position", "whale building.position", "whale increasing.position",
|
||||
"whale adds.to.position", "whale adding.to.position", "whale scaled.in", "whale scaling.in",
|
||||
"smart.money.accumulating", "smart.money.buys", "smart.money.accumulates",
|
||||
"institutional.accumulation", "institutional.buying", "institutional.accumulates",
|
||||
"large.holder.accumulating", "large.holder.buys", "large.holder.accumulates",
|
||||
"whale.absorbing", "whale.absorbs", "whale.absorbed", "absorption", "absorbing.supply",
|
||||
"supply.absorption", "whale.absorbing.supply", "bid.absorption", "strong.bids",
|
||||
"whale.bid", "whale.bids", "large.bid", "large.bids", "buy.wall", "buy.walls",
|
||||
"massive.buy", "massive.buys", "huge.buy", "huge.buys", "large.buy", "large.buys",
|
||||
]
|
||||
|
||||
WHALE_BEARISH_PHRASES = [
|
||||
@@ -312,6 +488,23 @@ class CryptoSentimentCalibrator:
|
||||
"whale takes profit", "whale takes profit", "whale profit taking", "whale takes profit",
|
||||
"whale exits", "whale exits", "whale distributes", "whale distributing",
|
||||
"whale sells", "whale sells", "whale sells", "whale unloads", "whale unloads",
|
||||
"whale sell", "whale sell", "whale sold", "whale has sold", "whale selling",
|
||||
"whale offloading", "whale offloads", "whale offloaded", "whale unloading",
|
||||
"whale distributes", "whale distributing", "whale distribution", "whale.distributing",
|
||||
"whale taking.profit", "whale.take.profit", "whale.profit.taking", "whale.realized",
|
||||
"whale.realizing", "whale.realizes", "whale.realize", "profit.realized",
|
||||
"whale.exits", "whale.exiting", "whale.exited", "whale.exit", "whale.exits.market",
|
||||
"whale.reducing", "whale.reduces", "whale.reduced", "whale.trimmed", "whale.trims",
|
||||
"whale.trimming", "whale.scaling.out", "whale.scales.out", "whale.scaled.out",
|
||||
"smart.money.selling", "smart.money.sells", "smart.money.distributes",
|
||||
"institutional.selling", "institutional.distributes", "institutional.exits",
|
||||
"large.holder.selling", "large.holder.distributes", "large.holder.exits",
|
||||
"whale.unloading", "whale.unload", "whale.unloaded", "supply.unloading",
|
||||
"supply.flooding", "whale.flooding", "massive.sell", "massive.sells", "huge.sell",
|
||||
"huge.sells", "large.sell", "large.sells", "sell.wall", "sell.walls", "massive.sell.wall",
|
||||
"whale.ask", "whale.asks", "large.ask", "large.asks", "heavy.asks", "ask.side.heavy",
|
||||
"whale.market.sell", "whale.market.sells", "market.sell", "market.sells",
|
||||
"aggressive.selling", "aggressive.seller", "aggressive.sells", "market.order.sell",
|
||||
]
|
||||
|
||||
@classmethod
|
||||
@@ -691,40 +884,216 @@ class CryptoSentimentCalibrator:
|
||||
"""
|
||||
|
||||
# Crypto-bullish keywords (should map to index 2 = Bullish)
|
||||
# Removed: upgrade, upgrades, upgraded, mainnet (protocol events, not price signals)
|
||||
# Removed: whale, whales (whale movement can be either bullish or bearish)
|
||||
# Comprehensive vocabulary covering price action, institutional, technical, on-chain, and news catalysts
|
||||
CRYPTO_BULLISH_KEYWORDS = [
|
||||
"surge", "pump", "moon", "rally", "breakout", "bullish", "ath", "all.time.high",
|
||||
"inflow", "inflows", "adoption", "accumulation", "bull", "green",
|
||||
"profit", "gain", "win", "success", "breakthrough", "approval", "etf",
|
||||
"all.time.high", "record.high", "new.high",
|
||||
"approves", "approved", "approval", "approved",
|
||||
"listing", "listed", "lists", "list", "listings", "launch", "launches",
|
||||
"partnership", "partner", "collaboration",
|
||||
# Price action
|
||||
"surge", "surges", "surged", "surgeing", "pump", "pumps", "pumped", "pumping",
|
||||
"moon", "mooning", "mooned", "to.the.moon", "rally", "rallies", "rallied", "rallying",
|
||||
"breakout", "breakouts", "break.out", "breaking.out", "bullish", "bull.run", "bullrun",
|
||||
"ath", "all.time.high", "all.time.highs", "record.high", "record.highs", "new.high", "new.highs",
|
||||
"higher.high", "higher.highs", "higher.low", "higher.lows", "uptrend", "uptrending",
|
||||
"green", "green.candle", "green.candles", "pumping", "ripping", "rips", "ripped",
|
||||
"parabolic", "parabolic.move", "explosive", "explosive.move", "violent.move.up",
|
||||
|
||||
# Inflows & accumulation
|
||||
"inflow", "inflows", "net.inflow", "positive.flow", "capital.inflow", "institutional.inflow",
|
||||
"adoption", "adoptions", "mass.adoption", "mainstream.adoption", "accumulation", "accumulating",
|
||||
"accumulate", "accumulates", "accumulated", "whale.accumulation", "smart.money.accumulation",
|
||||
"hodl", "hodling", "diamond.hands", "strong.hands", "not.selling", "holding.strong",
|
||||
"buy.the.dip", "buying.the.dip", "dip.bought", "dca", "dollar.cost.average",
|
||||
|
||||
# Institutional & ETF
|
||||
"etf", "etfs", "spot.etf", "spot.etfs", "bitcoin.etf", "ethereum.etf", "etf.approval",
|
||||
"etf.approved", "etf.approves", "etf.launch", "etf.launches", "etf.listed", "etf.inflow",
|
||||
"etf.inflows", "blackrock", "fidelity", "vanguard", "grayscale", "ark.invest", "institutional",
|
||||
"institutions", "institutional.adoption", "corporate.treasury", "corporate.adoption",
|
||||
"microstrategy", "tesla", "public.company", "balance.sheet", "treasury.reserve",
|
||||
"approval", "approvals", "approved", "approves", "sec.approval", "regulatory.approval",
|
||||
"regulatory.clarity", "clear.regulation", "friendly.regulation", "pro.crypto",
|
||||
|
||||
# Exchange & listing
|
||||
"listing", "listings", "listed", "lists", "list", "new.listing", "major.listing",
|
||||
"tier1.listing", "tier1.exchange", "binance.listing", "coinbase.listing", "kraken.listing",
|
||||
"bybit.listing", "okx.listing", "upbit.listing", "launch", "launches", "launched",
|
||||
"mainnet.launch", "testnet.launch", "token.launch", "fair.launch", "ido", "ico", "ieo",
|
||||
|
||||
# Partnerships & development
|
||||
"partnership", "partnerships", "partner", "partners", "collaboration", "collaborations",
|
||||
"integration", "integrations", "integrated", "integrates", "ecosystem", "ecosystem.growth",
|
||||
"developer.activity", "dev.activity", "github.activity", "commits", "contributors",
|
||||
"grant", "grants", "funding", "funded", "investment", "investments", "vc.funding",
|
||||
"strategic.investment", "ecosystem.fund", "developer.fund", "bug.bounty",
|
||||
|
||||
# Profit & gains
|
||||
"profit", "profits", "profitable", "gain", "gains", "gaining", "win", "wins", "winning",
|
||||
"success", "successful", "breakthrough", "milestone", "milestones", "target.hit",
|
||||
"price.target", "target.achieved", "allocation", "portfolio.allocation", "diversification",
|
||||
|
||||
# Technical indicators (bullish)
|
||||
"golden.cross", "golden.cross", "macd.crossover", "macd.bullish", "rsi.oversold",
|
||||
"rsi.recovery", "moving.average", "ma.support", "support.held", "support.holds",
|
||||
"bounce", "bounces", "bounced", "bouncing", "reversal", "reverses", "reversed",
|
||||
"bottom", "bottomed", "local.bottom", "macro.bottom", "capitulation.over",
|
||||
"oversold", "oversold.rsi", "bullish.divergence", "hidden.bullish.divergence",
|
||||
|
||||
# On-chain bullish
|
||||
"whale.accumulation", "whale.buying", "large.holder.accumulation", "exchange.outflow",
|
||||
"exchange.outflows", "balance.decreasing", "off.exchange", "cold.storage",
|
||||
"staking", "staked", "staking.rewards", "validator", "validators", "delegation",
|
||||
"hashrate.up", "hashrate.rising", "difficulty.up", "network.growth", "addresses.growing",
|
||||
"active.addresses", "new.addresses", "transaction.count", "tx.count.rising",
|
||||
|
||||
# DeFi & yield
|
||||
"yield", "yield.farming", "liquidity.mining", "apy", "apr", "high.yield",
|
||||
"tvl.growth", "tvl.rising", "total.value.locked", "tvl.all.time.high",
|
||||
"protocol.revenue", "fees.growing", "revenue.growth", "buyback", "buybacks",
|
||||
"token.burn", "burns", "burning", "deflationary", "supply.decreasing",
|
||||
|
||||
# Macro & narrative
|
||||
"halving", "bitcoin.halving", "supply.shock", "supply.squeeze", "scarcity",
|
||||
"inflation.hedge", "store.of.value", "digital.gold", "monetary.policy",
|
||||
"rate.cut", "rate.cuts", "pivot", "fed.pivot", "liquidity", "m2.growth",
|
||||
"global.liquidity", "dollar.weakness", "dxy.down", "risk.on", "risk.on.environment",
|
||||
|
||||
# Sentiment & social
|
||||
"fomo", "fear.of.missing.out", "euphoria", "optimism", "optimistic", "bullish.sentiment",
|
||||
"greed", "extreme.greed", "fear.and.greed", "greed.index", "social.dominance",
|
||||
"mentions.rising", "trending", "trending.on.twitter", "trending.on.reddit",
|
||||
"google.trends", "search.interest", "retail.fomo", "new.entrants", "onboarding",
|
||||
]
|
||||
|
||||
# Crypto-bearish keywords (should map to index 0 = Bearish)
|
||||
# Added: crashes, crashing, wipes, wiped, wipes out, liquidations
|
||||
# Comprehensive vocabulary covering price action, institutional, technical, on-chain, regulatory, and news catalysts
|
||||
CRYPTO_BEARISH_KEYWORDS = [
|
||||
"crash", "crashes", "crashing", "dump", "panic", "fear", "bearish", "hack", "exploit", "rug", "rugpull",
|
||||
"liquidation", "liquidations", "bankruptcy", "depeg", "depegs", "depegged", "depegging",
|
||||
"outflow", "outflows", "sell", "sells", "selling", "sold",
|
||||
"loss", "lost", "down", "collapse", "ban", "lawsuit", "lawsuits", "enforcement", "delist",
|
||||
"stolen", "theft", "vulnerability", "drain", "drained",
|
||||
"hack", "hacked", "exploit", "exploited", "breach", "stolen", "theft",
|
||||
"unauthorized", "compromise", "drain", "drained", "vulnerability",
|
||||
"lawsuit", "lawsuits", "enforcement", "ban", "delist", "crackdown",
|
||||
"depeg", "depegs", "depegged", "depegging",
|
||||
"crashes", "crashing", "wipes", "wiped", "wipes out", "liquidations",
|
||||
"sues", "sue", "lawsuit", "enforcement", "ban", "crackdown", "delist", "ban",
|
||||
# Price action - crashes & dumps
|
||||
"crash", "crashes", "crashing", "crashed", "crash.down", "flash.crash", "market.crash",
|
||||
"dump", "dumps", "dumped", "dumping", "violent.dump", "capitulation", "capitulating",
|
||||
"panic", "panic.sell", "panic.selling", "panic.sold", "fear", "fearful", "bearish",
|
||||
"bear.market", "bearish.trend", "downtrend", "downtrending", "lower.high", "lower.highs",
|
||||
"lower.low", "lower.lows", "red", "red.candle", "red.candles", "bleeding", "bleeds",
|
||||
"free.fall", "freefall", "nose.dive", "nosedive", "plunge", "plunges", "plunged",
|
||||
"collapse", "collapses", "collapsed", "collapsing", "implosion", "implodes",
|
||||
"wipe", "wipes", "wiped", "wipes.out", "wiped.out", "wiping.out",
|
||||
|
||||
# Liquidations & leverage
|
||||
"liquidation", "liquidations", "liquidated", "liquidating", "mass.liquidation",
|
||||
"cascade.liquidation", "liquidation.cascade", "long.liquidation", "long.liquidations",
|
||||
"short.liquidation", "short.liquidations", "forced.liquidation", "margin.call",
|
||||
"margin.calls", "leverage.flush", "leverage.flush.out", "overleveraged", "over.leverage",
|
||||
"liquidation.price", "liq.price", "rekt", "getting.rekt", "blown.up", "account.blown",
|
||||
|
||||
# Hacks, exploits, security
|
||||
"hack", "hacks", "hacked", "hacking", "exploit", "exploits", "exploited", "exploiting",
|
||||
"rug", "rugpull", "rug.pull", "rugged", "rug.pulled", "exit.scam", "exit.scams",
|
||||
"stolen", "theft", "thefts", "stolen.funds", "drain", "drains", "drained", "draining",
|
||||
"vulnerability", "vulnerabilities", "vuln", "bug", "bugs", "breach", "breaches",
|
||||
"compromise", "compromised", "unauthorized", "unauthorized.access", "private.key.leak",
|
||||
"seed.phrase", "phishing", "phished", "social.engineering", "insider.attack",
|
||||
"smart.contract.bug", "reentrancy", "oracle.manipulation", "price.manipulation",
|
||||
"governance.attack", "flash.loan.attack", "mev.attack", "sandwich.attack",
|
||||
|
||||
# Depeg & stablecoin
|
||||
"depeg", "depegs", "depegged", "depegging", "depeg.risk", "depeg.fear",
|
||||
"stablecoin.depeg", "usdc.depeg", "usdt.depeg", "dai.depeg", "frax.depeg",
|
||||
"peg.broken", "peg.lost", "lost.peg", "below.peg", "trading.below.peg",
|
||||
"reserve.shortfall", "reserves.insufficient", "collateral.ratio", "undercollateralized",
|
||||
|
||||
# Outflows & selling
|
||||
"outflow", "outflows", "net.outflow", "negative.flow", "capital.outflow", "capital.flight",
|
||||
"sell", "sells", "selling", "sold", "sell.pressure", "selling.pressure", "heavy.selling",
|
||||
"distribute", "distributes", "distributed", "distributing", "distribution",
|
||||
"whale.selling", "whale.distribution", "smart.money.selling", "insider.selling",
|
||||
"profit.taking", "take.profit", "taking.profit", "realized.gains", "realize.gains",
|
||||
"paper.hands", "weak.hands", "capitulation.selling", "tax.loss.harvesting",
|
||||
|
||||
# Losses & downside
|
||||
"loss", "losses", "lost", "losing", "unrealized.loss", "drawdown", "max.drawdown",
|
||||
"down", "downward", "declining", "decline", "declines", "dropping", "drops", "dropped",
|
||||
"correction", "corrections", "pullback", "pullbacks", "retrace", "retraces", "retraced",
|
||||
"bear.trap", "fake.out", "fakeout", "bull.trap", "failed.breakout", "failed.rally",
|
||||
|
||||
# Regulatory & legal
|
||||
"ban", "bans", "banned", "banning", "prohibition", "prohibited", "illegal",
|
||||
"lawsuit", "lawsuits", "sued", "sues", "sue", "litigation", "legal.action",
|
||||
"enforcement", "enforcement.action", "sec.enforcement", "cftc.enforcement",
|
||||
"crackdown", "crackdowns", "cracking.down", "regulatory.crackdown",
|
||||
"delist", "delists", "delisted", "delisting", "exchange.delisting", "delisting.announcement",
|
||||
"wells.notice", "wells.notices", "subpoena", "subpoenas", "investigation", "investigations",
|
||||
"sec.investigation", "doj.investigation", "fraud.charges", "securities.fraud",
|
||||
"unregistered.securities", "securities.violation", "compliance", "non.compliant",
|
||||
"license.revoked", "license.denied", "cease.and.desist", "cease.desist",
|
||||
|
||||
# Bankruptcy & insolvency
|
||||
"bankruptcy", "bankrupt", "insolvency", "insolvent", "chapter.11", "chapter.7",
|
||||
"liquidation", "wind.down", "winding.down", "cease.operations", "shut.down",
|
||||
"creditors", "creditor", "claims", "recovery", "recovery.rate", "haircut",
|
||||
"ftx", "celcius", "voyager", "blockfi", "genesis", "three.arrows", "3ac",
|
||||
"terra", "luna", "ust", "algorithmic.stablecoin", "ponzi", "pyramid.scheme",
|
||||
|
||||
# Technical indicators (bearish)
|
||||
"death.cross", "death.cross", "macd.bearish", "macd.crossunder", "rsi.overbought",
|
||||
"rsi.rejection", "moving.average.resistance", "resistance.held", "resistance.holds",
|
||||
"rejection", "rejects", "rejected", "rejecting", "failed.breakout", "fake.breakout",
|
||||
"top", "topped", "local.top", "macro.top", "distribution.phase", "wyckoff.distribution",
|
||||
"overbought", "overbought.rsi", "bearish.divergence", "hidden.bearish.divergence",
|
||||
"head.and.shoulders", "double.top", "triple.top", "rising.wedge", "bearish.pattern",
|
||||
|
||||
# On-chain bearish
|
||||
"whale.selling", "whale.sells", "whale.dump", "whale.dumps", "large.holder.selling",
|
||||
"exchange.inflow", "exchange.inflows", "balance.increasing", "on.exchange",
|
||||
"hot.wallet", "exchange.deposit", "deposit.spike", "whale.deposit", "large.deposit",
|
||||
"unstaking", "unstaked", "unstake", "unstakes", "withdrawal", "withdrawals",
|
||||
"mass.withdrawal", "bank.run", "run.on.exchange", "solvency.concerns", "proof.of.reserves",
|
||||
"hashrate.down", "hashrate.dropping", "difficulty.down", "miners.capitulation",
|
||||
"miner.surrender", "miner.outflow", "miner.selling", "hash.ribbons",
|
||||
|
||||
# DeFi & protocol issues
|
||||
"tvl.drop", "tvl.dropping", "tvl.crash", "total.value.locked.drop", "tvl.outflow",
|
||||
"protocol.exploit", "protocol.hack", "smart.contract.exploit", "oracle.failure",
|
||||
"liquidation.crisis", "bad.debt", "insolvent.protocol", "undercollateralized.vault",
|
||||
"liquidation.bot", "mev.bot", "sandwich.attack", "front.run", "front.running",
|
||||
"inflationary", "supply.increasing", "token.inflation", "emission", "emissions.high",
|
||||
"unlock", "unlocks", "token.unlock", "vesting.unlock", "team.unlock", "investor.unlock",
|
||||
"cliff.unlock", "linear.unlock", "supply.shock", "dilution", "dilutive",
|
||||
|
||||
# Macro & risk-off
|
||||
"rate.hike", "rate.hikes", "fed.hawkish", "hawkish.fed", "tightening", "qt",
|
||||
"quantitative.tightening", "liquidity.drain", "liquidity.crunch", "credit.crunch",
|
||||
"recession", "recession.fears", "recession.risk", "economic.slowdown", "gdp.slowing",
|
||||
"inflation.high", "cpi.high", "ppi.high", "sticky.inflation", "core.inflation",
|
||||
"dollar.strength", "dxy.up", "dxy.rising", "risk.off", "risk.off.environment",
|
||||
"flight.to.safety", "safe.haven", "treasury.yields", "yields.rising", "bond.yields",
|
||||
"correlation", "correlated.selloff", "broad.selloff", "market.wide.selloff",
|
||||
"contagion", "contagion.risk", "systemic.risk", "domino.effect", "spillover",
|
||||
|
||||
# Sentiment & social
|
||||
"fud", "fear.uncertainty.doubt", "fear", "extreme.fear", "fear.and.greed",
|
||||
"fear.index", "capitulation", "despair", "depression", "anger", "rage",
|
||||
"selling.panic", "blind.panic", "herd.mentality", "herd.selling", "lemmings",
|
||||
"social.dominance.drop", "mentions.falling", "interest.fading", "google.trends.down",
|
||||
"search.interest.declining", "retail.exodus", "users.leaving", "offboarding",
|
||||
"narrative.broken", "narrative.shift", "thesis.broken", "thesis.invalidated",
|
||||
"disappointment", "missed.expectations", "guidance.lowered", "warn", "warning",
|
||||
]
|
||||
|
||||
# Whale action phrases - context-dependent sentiment
|
||||
# Whale action phrases - context-dependent sentiment (bullish)
|
||||
WHALE_BULLISH_PHRASES = [
|
||||
"whale buys", "whale buys", "whale accumulates", "whale accumulates", "whale accumulating",
|
||||
"whale loads", "whale loading", "whale adds", "whale buying", "whale accumulation",
|
||||
"whale entry", "whale enters", "whale positions", "whale positions", "whale positioned",
|
||||
"whale accumulation", "whale buying", "whale buys more", "whale adds more",
|
||||
"whale buy", "whale buy", "whale bought", "whale has bought", "whale purchased",
|
||||
"whale purchases", "whale acquiring", "whale acquires", "whale acquired",
|
||||
"whale stacking", "whale stacks", "whale stacked", "whale building", "whale builds",
|
||||
"whale building.position", "whale building.position", "whale increasing.position",
|
||||
"whale adds.to.position", "whale adding.to.position", "whale scaled.in", "whale scaling.in",
|
||||
"smart.money.accumulating", "smart.money.buys", "smart.money.accumulates",
|
||||
"institutional.accumulation", "institutional.buying", "institutional.accumulates",
|
||||
"large.holder.accumulating", "large.holder.buys", "large.holder.accumulates",
|
||||
"whale.absorbing", "whale.absorbs", "whale.absorbed", "absorption", "absorbing.supply",
|
||||
"supply.absorption", "whale.absorbing.supply", "bid.absorption", "strong.bids",
|
||||
"whale.bid", "whale.bids", "large.bid", "large.bids", "buy.wall", "buy.walls",
|
||||
"massive.buy", "massive.buys", "huge.buy", "huge.buys", "large.buy", "large.buys",
|
||||
]
|
||||
|
||||
WHALE_BEARISH_PHRASES = [
|
||||
@@ -734,6 +1103,23 @@ class CryptoSentimentCalibrator:
|
||||
"whale takes profit", "whale takes profit", "whale profit taking", "whale takes profit",
|
||||
"whale exits", "whale exits", "whale distributes", "whale distributing",
|
||||
"whale sells", "whale sells", "whale sells", "whale unloads", "whale unloads",
|
||||
"whale sell", "whale sell", "whale sold", "whale has sold", "whale selling",
|
||||
"whale offloading", "whale offloads", "whale offloaded", "whale unloading",
|
||||
"whale distributes", "whale distributing", "whale distribution", "whale.distributing",
|
||||
"whale taking.profit", "whale.take.profit", "whale.profit.taking", "whale.realized",
|
||||
"whale.realizing", "whale.realizes", "whale.realize", "profit.realized",
|
||||
"whale.exits", "whale.exiting", "whale.exited", "whale.exit", "whale.exits.market",
|
||||
"whale.reducing", "whale.reduces", "whale.reduced", "whale.trimmed", "whale.trims",
|
||||
"whale.trimming", "whale.scaling.out", "whale.scales.out", "whale.scaled.out",
|
||||
"smart.money.selling", "smart.money.sells", "smart.money.distributes",
|
||||
"institutional.selling", "institutional.distributes", "institutional.exits",
|
||||
"large.holder.selling", "large.holder.distributes", "large.holder.exits",
|
||||
"whale.unloading", "whale.unload", "whale.unloaded", "supply.unloading",
|
||||
"supply.flooding", "whale.flooding", "massive.sell", "massive.sells", "huge.sell",
|
||||
"huge.sells", "large.sell", "large.sells", "sell.wall", "sell.walls", "massive.sell.wall",
|
||||
"whale.ask", "whale.asks", "large.ask", "large.asks", "heavy.asks", "ask.side.heavy",
|
||||
"whale.market.sell", "whale.market.sells", "market.sell", "market.sells",
|
||||
"aggressive.selling", "aggressive.seller", "aggressive.sells", "market.order.sell",
|
||||
]
|
||||
|
||||
@classmethod
|
||||
|
||||
Reference in New Issue
Block a user