diff --git a/sentiment_engine/src/sentiment_engine/nlp/sentiment_emotion.py b/sentiment_engine/src/sentiment_engine/nlp/sentiment_emotion.py index 41e0a28..f7841ed 100644 --- a/sentiment_engine/src/sentiment_engine/nlp/sentiment_emotion.py +++ b/sentiment_engine/src/sentiment_engine/nlp/sentiment_emotion.py @@ -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