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:
CODEBLOCK0
Section-by-Section Breakdown
1. Portfolio Summary
Data source: Kalshi API (read-only)
Example output:
CODEBLOCK1
Fields:
- - Ticker | Side (YES/NO) | Quantity @ Price | Cost | Unrealized P&L | Days to Expiration
Graceful degradation: If Kalshi API unavailable:
CODEBLOCK2
2. Kalshalyst Edges (Optional)
Data source: Kalshalyst cache (.kalshi_research_cache.json)
Example output:
CODEBLOCK3
Fields:
- - Ticker | Side | Market Price | Edge % | Confidence %
Graceful degradation: If Kalshalyst skill not installed:
CODEBLOCK4
3. Cross-Platform Divergences (Optional)
Data source: Prediction Market Arbiter cache (.crossplatform_divergences.json)
Example output:
CODEBLOCK5
Fields:
- - Ticker | Kalshi Price ↔ Polymarket Price | Spread | Volume Difference
Graceful degradation: If Arbiter skill not installed:
CODEBLOCK6
4. X Signal Summaries (Optional)
Data source: Xpulse cache (.x_signal_cache.json)
Example output:
CODEBLOCK7
Fields:
- - Signal | Magnitude | Confidence % | Reach/Strength
Graceful degradation: If Xpulse skill not installed:
CODEBLOCK8
5. Crypto Prices (Optional)
Data source: Coinbase API (requires key + configuration)
Example output:
CODEBLOCK9
Fields:
- - Ticker | Price | 24h Change %
Graceful degradation: If Coinbase not configured:
CODEBLOCK10
6. Polymarket Activity
Data source: Public Polymarket API (free)
Example output:
CODEBLOCK11
Fields:
- - Market | Volume | Implied Probability | (Context)
Graceful degradation: If Polymarket API unavailable:
CODEBLOCK12
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)
CODEBLOCK13
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)
CODEBLOCK14
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
- 1. 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)
- 1. 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
CODEBLOCK15
Command Usage
CODEBLOCK16
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 | INLINECODE9 | 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
CODEBLOCK17
Scheduling & Commands
Morning Brief (Default: 7:30 AM)
CODEBLOCK18
Cron Scheduling
CODEBLOCK19
Dependencies
Required: Python 3.10+, INLINECODE13
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 | INLINECODE26 |
| 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:
CODEBLOCK20
Further Reading
- - See
references/sections.md for detailed section documentation - See
references/integration.md for technical integration guide - See
references/evening-pipeline.md for 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?
Part of the OpenClaw Prediction Stack — the first prediction market skill suite on ClawHub.
市场简报 — 每日早晚情报摘要
概述
市场晨间简报是一个轻量级、高弹性的每日情报系统,专为您每天早晨的第一份阅读材料而设计。它整合了:
- - 投资组合盈亏 — 您的Kalshi持仓及未实现损益
- 顶级机会 — 具有最高优势的市场(若Kalshalyst缓存可用)
- 跨平台价差 — Kalshi与Polymarket之间的定价差异(若Arbiter缓存可用)
- X信号摘要 — 来自Twitter/X的顶级预测信号(若Xpulse缓存可用)
- 加密货币价格 — 比特币、以太坊,以及任何配置的山寨币(若Coinbase已配置)
- Polymarket洞察 — 值得关注的市场及成交量活动
该简报专为30秒快速浏览设计——每个部分最多3-8行。如果某个数据源不可用,该部分会优雅降级显示为不可用,简报继续生成。
如果Kalshi凭证尚未配置,简报会显示一个模拟预览投资组合和优势板块,让首次用户仍能立即看到价值。
何时使用此技能
- - 您交易预测市场(Kalshi、Polymarket)并希望获得每日市场背景
- 您需要一个快速的晨间摘要:投资组合状态 + 机会 + 信号
- 您需要一个晚间简报:轻量级交易摘要或AI筛选的新闻摘要
- 您希望与其他市场情报工具(Kalshalyst、Arbiter、Xpulse)集成
- 您需要适合短信、iMessage或任何消息平台的纯文本输出
- 您希望获得AI驱动的新闻策展:两级过滤以防止通知疲劳
每晚(默认:下午6:00): 当日活动摘要(开仓/平仓、已实现盈亏)、隔夜风险观察清单、当日顶级X信号以及异常市场活动。
架构
设计理念
通过隔离实现弹性。 每个部分:
- - 包裹在try/except中,防止单个故障破坏整个简报
- 从缓存文件(而非实时API)读取,以确保速度和可靠性
- 在数据不可用时优雅降级(不可用,请直接检查Kalshalyst)
- 记录故障但不中断输出
纯文本输出。 无Markdown、无表情符号、无格式——专为聊天交付设计:
- - 兼容iMessage、短信、电子邮件、网页聊天、任何平台
- 可快速扫描:每行最多80个字符,清晰的章节标题
- 在<30秒内一目了然
可配置集成。 简报读取自:
- - 可选的Kalshalyst缓存(.kalshiresearchcache.json)
- 可选的Arbiter缓存(.crossplatformdivergences.json)
- 可选的Xpulse缓存(.xsignal_cache.json)
- 可选的Coinbase API(若已配置)
- 公共Polymarket API(无需认证)
如果某个缓存文件不存在(技能未安装),该部分仅显示不可用。
配置
当您需要实时账户数据时,创建或更新您的config.yaml。首次运行无需配置即可工作,并显示预览输出:
yaml
marketmorningbrief:
enabled: true
morning_time: 07:30 # 晨间简报的调度时间
evening_time: 18:00 # 晚间简报的调度时间
timezone: America/New_York
# Kalshi API(投资组合部分必需)
kalshi:
enabled: true
apikeyid: your-key-id
privatekeyfile: /path/to/private.key
# Coinbase API(可选,用于加密货币价格)
coinbase:
enabled: false
api_key: sk-...
tickers: [BTC, ETH] # 根据需要自定义
# 缓存路径(用于读取其他技能的数据)
cache_paths:
kalshalyst: ./state/.kalshiresearchcache.json
arbiter: ./state/.crossplatform_divergences.json
xpulse: ./state/.xsignalcache.json
# 要包含的章节
include:
portfolio: true
kalshalyst_edges: true # 需要Kalshalyst技能
arbiter_divergences: true # 需要Prediction Market Arbiter技能
xpulse_signals: true # 需要Xpulse技能
crypto: false # 需要Coinbase API密钥
polymarket: true # 免费(公共API)
逐节详解
1. 投资组合摘要
数据源: Kalshi API(只读)
示例输出:
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)
字段:
- - 代码 | 方向(YES/NO)| 数量@价格 | 成本 | 未实现盈亏 | 到期天数
优雅降级: 如果Kalshi API不可用:
PORTFOLIO: unavailable (check Kalshi API)
2. Kalshalyst优势(可选)
数据源: Kalshalyst缓存(.kalshiresearchcache.json)
示例输出:
EDGES (Kalshalyst, top 3):
- 1. POTUS-2028-DEM NO @ 38% (+14% edge, 72% conf)
- INFLATION-2026 YES @ 68% (+8% edge, 65% conf)
- UKRAINE-PEACE YES @ 55% (+6% edge, 58% conf)
字段:
- - 代码 | 方向 | 市场价格 | 优势% | 置信度%
优雅降级: 如果Kalshalyst技能未安装:
EDGES: unavailable — unlock with: clawhub install kalshalyst
3. 跨平台价差(可选)
数据源: Prediction Market Arbiter缓存(.crossplatform_divergences.json)
示例输出:
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)
字段:
- - 代码 | Kalshi价格 ↔ Polymarket价格 | 价差 | 成交量差异
优雅降级: 如果Arbiter技能未安装:
DIVERGENCES: unavailable — unlock with: clawhub install prediction-market-arbiter
4. X信号摘要(可选)
数据源: Xpulse缓存(.xsignalcache.json)
示例输出:
X SIGNALS (Xpulse, last 24h):
Fed rate cut odds +5% (confidence: 78%, reach: 8.2K)
Ukraine ceasefire talks (+3%, 72% conf, 5.1K reach)
字段:
优雅降级: 如果Xpulse技能未安装:
X SIGNALS: unavailable — unlock with: clawhub install xpulse
5. 加密货币价格(可选)
数据源: Coinbase API(需要密钥+配置)
示例输出:
CRYPTO:
BTC $62,400 (+1.2%) | ETH $3,140 (-0.8%)
SOL $142 (-2.1%) | AVAX $38 (+0.5%)
字段:
优雅降级: 如果Coinbase未配置:
CRYPTO: unavailable (configure Coinbase API for crypto prices)
6. Polymarket活动
数据源: 公共Polymarket API(免费)
示例输出:
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
字段:
- - 市场 | 成交量 | 隐含概率 | (背景信息)
优雅降级: 如果Polymarket API