Market Morning Brief
Daily morning and evening intelligence digest for prediction market traders. Morning brief: Kalshi portfolio P&L, Polymarket trending markets, crypto prices...
Description
name: Market Morning Brief description: "Daily morning and evening intelligence digest for prediction market traders. Morning brief: Kalshi portfolio P&L, Polymarket trending markets, crypto prices — scannable in 30 seconds. Evening brief: lightweight market summary or AI-filtered news digest with two-stage Qwen materiality gate. Works standalone; unlocks additional sections automatically when paired with Kalshalyst (edges), Prediction Market Arbiter (divergences), and Xpulse (social signals). Hub of the OpenClaw Prediction Market Trading Stack."
Market Brief — Daily Morning & Evening Intelligence Digest
Overview
Market Morning Brief is a lightweight, resilient daily intelligence system designed to be the first thing you read each morning. It combines:
- Portfolio P&L — Your Kalshi positions and unrealized gains/losses
- Top opportunities — Markets with highest edge (if Kalshalyst cache available)
- Cross-platform divergences — Kalshi vs Polymarket pricing mismatches (if Arbiter cache available)
- X signal summaries — Top-performing prediction signals from Twitter/X (if Xpulse cache available)
- Crypto prices — Bitcoin, Ethereum, plus any configured altcoins (if Coinbase configured)
- Polymarket insights — Notable markets and volume activity
The brief is designed for 30-second scanning — each section is 3-8 lines maximum. If a data source is unavailable, the section gracefully degrades to "unavailable" and the brief continues. If Kalshi credentials are not configured yet, the brief shows a realistic preview portfolio and edge block so first-time users still see value immediately.
When to Use This Skill
- You trade prediction markets (Kalshi, Polymarket) and want daily market context
- You need a quick morning summary: portfolio status + opportunities + signals
- You want an evening briefing: either lightweight trading summary or AI-filtered news digest
- You want integration with your other market intelligence tools (Kalshalyst, Arbiter, Xpulse)
- You want plain text output suitable for SMS, iMessage, or any messaging platform
- You want AI-powered news curation: two-stage filtering to prevent notification fatigue
Every Evening (Default: 6:00 PM): Day's activity summary (positions opened/closed, realized P&L), watch list for overnight risks, top X signals from the day, and unusual market activity.
Architecture
Design Philosophy
Resilience through isolation. Each section:
- Wrapped in try/except to prevent one failure from breaking the entire brief
- Reads from cache files (not live APIs) for speed and reliability
- Gracefully degrades if data unavailable ("unavailable, check Kalshalyst directly")
- Logs failures without interrupting output
Plain text output. No markdown, no emojis, no formatting — designed for chat delivery:
- Compatible with iMessage, SMS, email, web chat, any platform
- Scannable: max 80 chars per line, clear section headers
- Readable at a glance in <30 seconds
Configurable integration. The brief reads from:
- Optional Kalshalyst cache (
.kalshi_research_cache.json) - Optional Arbiter cache (
.crossplatform_divergences.json) - Optional Xpulse cache (
.x_signal_cache.json) - Optional Coinbase API (if configured)
- Public Polymarket API (no auth)
If a cache file doesn't exist (skill not installed), that section simply shows "unavailable".
Configuration
Create or update your config.yaml when you want live account data. The first run works without it and shows preview output:
market_morning_brief:
enabled: true
morning_time: "07:30" # Schedule for morning brief
evening_time: "18:00" # Schedule for evening brief
timezone: "America/New_York"
# Kalshi API (required for portfolio section)
kalshi:
enabled: true
api_key_id: "your-key-id"
private_key_file: "/path/to/private.key"
# Coinbase API (optional, for crypto prices)
coinbase:
enabled: false
api_key: "sk-..."
tickers: ["BTC", "ETH"] # Customize as needed
# Cache paths (for reading other skills' data)
cache_paths:
kalshalyst: "./state/.kalshi_research_cache.json"
arbiter: "./state/.crossplatform_divergences.json"
xpulse: "./state/.x_signal_cache.json"
# Which sections to include
include:
portfolio: true
kalshalyst_edges: true # Requires Kalshalyst skill
arbiter_divergences: true # Requires Prediction Market Arbiter skill
xpulse_signals: true # Requires Xpulse skill
crypto: false # Requires Coinbase API key
polymarket: true # Free (public API)
Section-by-Section Breakdown
1. Portfolio Summary
Data source: Kalshi API (read-only)
Example output:
PORTFOLIO (3 positions, +$24 unrealized):
POTUS-2028-DEM YES 100@48¢ $48 cost +$18 unrl (exp: 242 days)
UKRAINE-2026-NO YES 50@28¢ $14 cost +$8 unrl (exp: 118 days)
FED-MAR-CUT NO 200@35¢ $70 cost -$2 unrl (exp: 8 days)
Fields:
- Ticker | Side (YES/NO) | Quantity @ Price | Cost | Unrealized P&L | Days to Expiration
Graceful degradation: If Kalshi API unavailable:
PORTFOLIO: unavailable (check Kalshi API)
2. Kalshalyst Edges (Optional)
Data source: Kalshalyst cache (.kalshi_research_cache.json)
Example output:
EDGES (Kalshalyst, top 3):
1. POTUS-2028-DEM NO @ 38% (+14% edge, 72% conf)
2. INFLATION-2026 YES @ 68% (+8% edge, 65% conf)
3. UKRAINE-PEACE YES @ 55% (+6% edge, 58% conf)
Fields:
- Ticker | Side | Market Price | Edge % | Confidence %
Graceful degradation: If Kalshalyst skill not installed:
EDGES: unavailable — unlock with: clawhub install kalshalyst
3. Cross-Platform Divergences (Optional)
Data source: Prediction Market Arbiter cache (.crossplatform_divergences.json)
Example output:
DIVERGENCES (Arbiter, Kalshi ↔ Polymarket):
UKRAINE-2026-NO Kalshi 28% ↔ PM 31% ($0.03 spread, 12% vol diff)
POTUS-2028-DEM Kalshi 38% ↔ PM 40% ($0.02 spread, 8% vol diff)
Fields:
- Ticker | Kalshi Price ↔ Polymarket Price | Spread | Volume Difference
Graceful degradation: If Arbiter skill not installed:
DIVERGENCES: unavailable — unlock with: clawhub install prediction-market-arbiter
4. X Signal Summaries (Optional)
Data source: Xpulse cache (.x_signal_cache.json)
Example output:
X SIGNALS (Xpulse, last 24h):
Fed rate cut odds +5% (confidence: 78%, reach: 8.2K)
Ukraine ceasefire talks (+3%, 72% conf, 5.1K reach)
Fields:
- Signal | Magnitude | Confidence % | Reach/Strength
Graceful degradation: If Xpulse skill not installed:
X SIGNALS: unavailable — unlock with: clawhub install xpulse
5. Crypto Prices (Optional)
Data source: Coinbase API (requires key + configuration)
Example output:
CRYPTO:
BTC $62,400 (+1.2%) | ETH $3,140 (-0.8%)
SOL $142 (-2.1%) | AVAX $38 (+0.5%)
Fields:
- Ticker | Price | 24h Change %
Graceful degradation: If Coinbase not configured:
CRYPTO: unavailable (configure Coinbase API for crypto prices)
6. Polymarket Activity
Data source: Public Polymarket API (free)
Example output:
POLYMARKET (top 3 by volume):
POTUS 2028: $2.4M vol, 48% DEM (vs 52% GOP)
Inflation >4% 2026: $1.1M vol, 32% prob
Bitcoin $100K by 2026: $0.8M vol, 58% prob
Fields:
- Market | Volume | Implied Probability | (Context)
Graceful degradation: If Polymarket API unavailable:
POLYMARKET: unavailable (check Polymarket directly)
Evening Brief — Lightweight Market Summary + AI-Filtered News
Sent at configured evening time (default: 6:00 PM). Two variants: lightweight market update or full news digest with materiality filtering.
Lightweight Market Variant (6-8 lines, trading-focused)
EVENING BRIEFING — Thursday, March 7, 2026
ACTIVITY:
Current positions: 3 | Cost: $132 | Unrealized: +$24
OVERNIGHT WATCH:
• FED-MAR-CUT expires in 8 days — monitor Fed speakers before FOMC
• UKRAINE-2026 low liquidity (9 contracts asking) — wide spreads
TOP X SIGNALS TODAY:
• Ukraine ceasefire talks +3% (78% conf)
• Fed rate cut odds stabilizing (72% conf)
Key differences from morning brief:
- Shorter (6-8 lines max)
- Focus on intraday activity (current positions, cost, unrealized P&L)
- Overnight watch items (expirations, geopolitical risks, liquidity alerts)
- Top X signals from that day (not 24h rolling)
Full Evening News Digest (News-focused with AI filtering)
EVENING NEWS BRIEFING — Thursday, March 7, 2026
🏛️ Fed Signals Cautious Stance on Rate Cuts (87% conf, Reuters)
📈 Tech Stocks Rally on Earnings Beat (82% conf, Bloomberg)
🌍 Geopolitical Tensions Escalate Over Trade Deal (79% conf, AP)
💻 AI Policy Bill Advances in Congress (76% conf, TechCrunch)
📌 Crypto Markets Stabilize After Volatility (71% conf, CoinDesk)
Features:
- Category icons: 🏛️ policy, 📈 markets, 💻 technology, 🌍 geopolitics, 📌 general
- Confidence scores (0-100%) show Qwen relevance assessment
- Two-stage filtering pipeline (see below)
- 48-hour rolling history prevents repeated news
- Fail-closed design: if Qwen unavailable, no news sent (silence over noise)
Evening Briefing: Two-Stage News Filtering Pipeline
Evening briefing combines DuckDuckGo news search with local Qwen LLM for AI-powered news curation. Designed to prevent notification fatigue while surfacing genuinely material developments.
Architecture
Stage 1: Relevance & Significance Filter
- Search for recent news across configured topics (default: prediction markets, AI policy, federal reserve)
- Run each article through Qwen: is this significant? (0-1 confidence score, category classification)
- Filter to articles with confidence >= min_confidence (default: 0.7)
- Limit to top 10 most confident articles for Stage 2
Stage 2: Materiality Gate (Prevents Notification Fatigue)
- Load history of previously sent articles (48h rolling, max 200 entries)
- Compare candidate articles against recent history
- Qwen decision: is this NEW and MATERIAL? Or just ongoing background noise?
- Drop duplicates, commentary, routine announcements
- Only pass through genuinely new developments or significant escalations
Fail-Closed Design:
- If Qwen unavailable during Stage 1 or Stage 2: drop all articles (silence over noise)
- If no material news: send nothing (don't interrupt with noise)
- History persistence:
~/.openclaw/state/evening_news_history.json(max 200 entries, auto-cleanup)
Example Configuration
market_morning_brief:
evening_briefing:
enabled: true
mode: "news" # "market" for activity summary, "news" for full news digest
time: "18:00" # Briefing time (30-min window)
materiality_gate: true # Enable Stage 2 filter (prevents fatigue)
min_confidence: 0.7 # Minimum relevance threshold (0-1)
max_per_topic: 3 # Max articles per topic to search
topics:
- "prediction markets"
- "AI policy"
- "federal reserve"
- "geopolitics"
Command Usage
# Lightweight market variant (activity + watch list)
python scripts/evening_brief.py --mode market
# Full news digest variant
python scripts/evening_brief.py --mode news
# Force send regardless of time/already-sent-today
python scripts/evening_brief.py --force
# Dry run (print without sending)
python scripts/evening_brief.py --dry-run
# Enable verbose logging
python scripts/evening_brief.py --debug
News History
Stored at ~/.openclaw/state/evening_news_history.json. Max 200 entries, auto-cleans after 48 hours. Used by Stage 2 materiality gate to prevent duplicate notifications.
Cache File Integration
Each optional skill writes a cache file that the Morning Brief reads automatically:
| Skill | Cache File | Section Unlocked |
|---|---|---|
| Kalshalyst | state/.kalshi_research_cache.json |
Edge opportunities |
| Prediction Market Arbiter | state/.crossplatform_divergences.json |
Cross-platform divergences |
| Xpulse | state/.x_signal_cache.json |
X/Twitter signals |
If a cache file doesn't exist, that section shows "unavailable" with the install command. See references/integration.md for cache file schemas.
Example Complete Morning Brief
MARKET MORNING BRIEF — Thursday, March 7, 2026
PORTFOLIO (3 positions, +$24 unrealized):
POTUS-2028-DEM YES 100@48¢ $48 cost +$18 unrl (exp: 242 days)
UKRAINE-2026-NO YES 50@28¢ $14 cost +$8 unrl (exp: 118 days)
FED-MAR-CUT NO 200@35¢ $70 cost -$2 unrl (exp: 8 days)
EDGES (Kalshalyst, top 3):
1. POTUS-2028-DEM NO @ 38% (+14% edge, 72% conf)
2. INFLATION-2026 YES @ 68% (+8% edge, 65% conf)
3. UKRAINE-PEACE YES @ 55% (+6% edge, 58% conf)
DIVERGENCES (Arbiter):
UKRAINE-2026-NO Kalshi 28% ↔ PM 31% ($0.03 spread)
POTUS-2028-DEM Kalshi 38% ↔ PM 40% ($0.02 spread)
X SIGNALS (last 24h):
Fed rate cut odds +5% (78% conf, 8.2K reach)
Ukraine ceasefire +3% (72% conf, 5.1K reach)
CRYPTO:
BTC $62,400 (+1.2%) | ETH $3,140 (-0.8%)
POLYMARKET (top 3 by vol):
POTUS 2028 DEM: $2.4M vol, 48% prob
Inflation >4% 2026: $1.1M vol, 32% prob
Bitcoin >$100K 2026: $0.8M vol, 58% prob
Scheduling & Commands
Morning Brief (Default: 7:30 AM)
# Manual trigger
python scripts/morning_brief.py
# With debug output
python scripts/morning_brief.py --debug
# Dry run (print without side effects)
python scripts/morning_brief.py --dry-run
# Custom config path
python scripts/morning_brief.py --config /path/to/config.yaml
# Via OpenClaw (if integrated):
openclaw skill run market-morning-brief morning
Cron Scheduling
30 7 * * * python /path/to/scripts/morning_brief.py # Morning at 7:30 AM
0 18 * * * python /path/to/scripts/evening_brief.py --mode market # Evening at 6:00 PM
Dependencies
Required: Python 3.10+, pip install kalshi-python requests pyyaml
For evening news digest: Ollama + Qwen model (ollama pull qwen3:latest), plus pip install ddgs (or duckduckgo-search as fallback).
Optional skills for additional brief sections: Kalshalyst, Prediction Market Arbiter, Xpulse (see Implementation Notes below).
Performance & Cost
Morning Brief
- Runtime: <5 seconds (all cached data)
- API calls: 1 (Polymarket public API) + 1 (Kalshi portfolio) = 2 calls
- Cost: $0 (Kalshi free tier, Polymarket free)
With Optional Skills
If Kalshalyst, Arbiter, Xpulse installed:
- Runtime: <2 seconds (reads cache files)
- Cost: Only the skill installation costs (brief itself has no additional cost)
Troubleshooting
Portfolio not showing: Verify Kalshi API key is configured and not rate-limited. Run python scripts/morning_brief.py --debug.
Sections showing "unavailable": Expected if the skill isn't installed. Install with the clawhub install command shown in the output, then run the skill once to generate its cache file.
Evening news empty: Check Ollama is running (ollama list), test Qwen (ollama run qwen3:latest "test"), and verify ddgs (python -c "from ddgs import DDGS; print('OK')").
Stage 2 drops everything: The materiality gate filters out non-novel news. Clear history with rm ~/.openclaw/state/evening_news_history.json and retry, or disable with --no-materiality-gate.
Qwen timeout: Reduce article count with --max-per-topic 2 or skip Stage 2 with --no-materiality-gate.
Implementation Notes
This skill is designed for standalone operation but unlocks its full potential with the OpenClaw Prediction Market Trading Stack.
Standalone: Portfolio P&L + Polymarket trending + Crypto prices (if configured). No other skills required.
With the full stack: Each additional skill adds a new section to your daily brief automatically — no configuration needed. Install skills, run them once, and the Morning Brief picks up their cache files on the next run.
| Skill | Unlocks | Install |
|---|---|---|
| Kalshalyst | Contrarian edge analysis with Kelly sizing | clawhub install kalshalyst |
| Prediction Market Arbiter | Cross-platform Kalshi↔Polymarket divergences | clawhub install prediction-market-arbiter |
| Xpulse | Real-time X/Twitter social signals | clawhub install xpulse |
| Portfolio Drift Monitor | Position drift alerts between briefs | clawhub install portfolio-drift-monitor |
| Kalshi Command Center | Direct trade execution from edge alerts | clawhub install kalshi-command-center |
Install the complete stack:
clawhub install kalshalyst kalshi-command-center polymarket-command-center prediction-market-arbiter xpulse portfolio-drift-monitor market-morning-brief personality-engine
Further Reading
- See
references/sections.mdfor detailed section documentation - See
references/integration.mdfor technical integration guide - See
references/evening-pipeline.mdfor evening briefing pipeline documentation
Support
For issues: run with DEBUG=1 for verbose output, review references/sections.md and references/integration.md, or check /tmp/market-morning-brief.log.
Author: KingMadeLLC
Feedback & Issues
Found a bug? Have a feature request? Want to share results?
- GitHub Issues: github.com/kingmadellc/openclaw-prediction-stack/issues
- X/Twitter: @KingMadeLLC
Part of the OpenClaw Prediction Stack — the first prediction market skill suite on ClawHub.
Reviews (0)
No reviews yet. Be the first to review!
Comments (0)
No comments yet. Be the first to share your thoughts!