SocialSentiment
intel.socialsentiment
Intelligence
planned
Spec started
frozen
Lightweight, secondary social-sentiment input — never primary trigger.
What it does
Lightweight, secondary social-sentiment input — never primary trigger.
Pipeline placement
runs after: —
→
SocialSentiment
→
runs before: —
Applies to: —
Why it matters
| If this fails | Consequence |
|---|---|
| Strategy uses sentiment as a primary trigger | Social sentiment is noisy, gameable, and easily manipulated by bot networks. Treated as a primary signal it produces churn and drawdowns; treated as a secondary input — 'is the prior consistent with public mood?' — it adds a small but real filter. Worked example Setup: A strategy reads `sentiment_score=+0.81` on a political market and treats it as a buy trigger. The +0.81 is driven by 14k posts in the last 30 minutes, 9k of which come from 12 wallets posting at 8 Hz. Without bot: The strategy enters at 0.74. Within 12 minutes the bot-driven posts stop, sentiment normalises to +0.05, and the price drifts back to 0.61. The strategy churns out for a 13% loss it never had a real thesis behind. With bot: SocialSentiment emits `{score: +0.81, provenance: 'twitter-v2', concentration: 0.73, primary_trigger_allowed: false}`. The strategy ignores it as a primary trigger and only widens its existing fundamental thesis. No entry occurs on the bot-driven spike. |
| No freshness or provenance on sentiment numbers | A sentiment score with no source string and no timestamp cannot be audited or replayed. Every emission must carry both, or downstream consumers have no way to reason about the data they are reading. |
| Sentiment signal duplicated across teams | Strategy authors otherwise build one-off sentiment fetchers each. Centralising the read gives a single rate-limited source, a single cache, and a single place to swap providers when one degrades. |
Inputs
Polymarket inputs
| Input | Source | Required | Use |
|---|---|---|---|
| Social post feed per market slug | ws_sports | required | Primary sentiment scoring data source. |
| Market slug and condition_id mapping | data | required | Resolve market slug to condition_id for ObservationReport output. |
Internal inputs
| Input | Source | Required | Use |
|---|---|---|---|
| KillSwitch active flag | KillSwitch | required | Suppress all sentiment emissions when KillSwitch is active. |
Authority
What this bot is permitted to do
Read-only
State
Readiness
Spec started
Status
planned
Class
Signal Service
Default mode
shadow_only
Developer owner
Polytraders core
Capital impact
Indirect
Reason codes emitted
| Code | Severity | Meaning | Action |
|---|---|---|---|
| SOCIALSENTIMENT_LOW_SAMPLE | WARN | Fewer posts than min_post_count in the sampling window; sentiment score unreliable. | Skip emission for this poll cycle. |
| STALE_DATA | WARN | Most recent post is older than staleness_threshold_s; feed may be lagging. | Suppress emission; alert on-call if condition persists > 5 min. |
| KILL_SWITCH_ACTIVE | HARD_REJECT | KillSwitch is active; all sentiment emissions suppressed. | Continue polling but suppress all ObservationReport emissions. |
| SOCIALSENTIMENT_FEED_ERROR | WARN | Social feed returned a non-200 status or empty payload unexpectedly. | Log WARN; skip this poll cycle; retry on next interval. |
| PARAMETER_CHANGE_REQUIRES_APPROVAL | HARD_REJECT | A parameter violates a locked bound (e.g. sample_rate < 1). | Reject config change; do not apply. |
Related bots in Intelligence
Used by
Reverse index — strategies that currently reference intel.socialsentiment. If you change this bot's authority or reason codes, these strategies must re-pass shadow.
| Strategy | State | Activity |
|---|---|---|
| BTC weekly — close-aware quotes | demo-wired | last triggered 21m ago |
| Fed Rates — surprise drift | frozen | last triggered 28m ago |
Showing 2 of 2 · demo-wired ≠ production-live
Why this matters
Intelligence bots does NOT propose, veto, sign, or execute any trade. Understanding the authority boundary prevents misuse and makes promotion-gate reviews faster and more reliable. View raw spec JSON →