← 返回
未分类 Key

stocki-datareader

Institutional-grade financial data skill for OpenClaw. Real-time quotes, financials, valuation time series, OHLCV history, industry membership, consensus forecasts, composite analysis. Covers cn/hk/us markets and stock/index/etf/futures/crypto. For structured market/financial data, use this skill.
Institutional-grade financial data skill for OpenClaw. Real-time quotes, financials, valuation time series, OHLCV history, industry membership, consensus forecasts, composite analysis. Covers cn/hk/us markets and stock/index/etf/futures/crypto. For structured market/financial data, use this skill.
stockiai
未分类 community v0.4.0 2 版本 100000 Key: 需要
★ 2
Stars
📥 102
下载
💾 0
安装
2
版本
#latest

概述

stocki-financial-reader

Institutional-grade financial data analyst skill. Aggregates 8 reference docs that teach the LLM how to retrieve structured market/financial data via HTTP. Routes user queries to the right reference, handles output discipline (no data-vendor leakage), and ships self-diagnostic scripts.

Core Principle

For structured market/financial data, use this skill. Examples: real-time prices, OHLCV history, financial statements, valuation time series, industry membership, consensus forecasts, composite company analysis.

Do NOT use this skill for: general financial knowledge questions ("what is P/E ratio?"), news commentary without data backing, or anything requiring fabricated numbers.

Never fabricate market data. If a value is not in a real response, say so. Completeness and output discipline are non-negotiable.

Stay non-advisory. Relay numbers and the response's own context fields (percentiles / industry comparisons). Do NOT append buy/sell/hold ratings, target-price opinions, or personalized recommendations on top of the data.

HTTP Convention

All references share these conventions. The router enforces them globally; individual references may override only with explicit justification.

  • Base URL: $STOCKI_GATEWAY_URL (env var). Set to http://localhost:9996 in dev or https://skill.stocki.com.cn in prod.
  • Auth: every request carries Authorization: Bearer $STOCKI_API_KEY. localhost dev mode does not validate but the header MUST still be sent (no environment-conditional code paths).
  • Content-Type: application/json for all POST.
  • Error code mapping (mirrors scripts/_http.py exit codes):

| HTTP | Mapped error code | Exit code |

|---|---|---|

| 401 | auth_invalid | 1 |

| 503 / 504 / 5xx / timeout | stocki_unavailable | 3 |

| 429 / quota | rate_limited | 4 |

| TCP/DNS refused | unreachable | 2 |

Inline Threshold (/api/v3/datareader/read only)

The stocki gateway v3 默认按 50 行截断 response.data;超过部分目前 runtime 不读取

外部存储。Body 参数 inline_threshold(max 1000)可把 inline 上限抬到 1000,

覆盖绝大部分时序需求。

Scope:仅 /api/v3/datareader/read 读此参数。其他 v3/v2/executor 端点静默忽略,

禁止financial_context/ / quotes/ / market/ / executor/ / v2

端点传 inline_threshold(会误导对响应结构的理解)。

估算先行:N = unique_symbols × time_window_trading_days × unique_metrics

形态特化:

  • index_member panel:成分股数 × 时间窗交易日
  • fundamental / indicator:symbols × 时间窗内财报期数(年 1 / 季 4)
  • consensus / estimate:symbols × 时间窗内有发布的交易日(稀疏)
  • revenue_breakdown:symbols × 期数 × 估 5-15 segments
  • company_info:symbols(静态)

Margin 表(中心化):

data_typemargin
------
price / fundamental / indicator / company_info×1.2
consensus / estimate / forecast×1.5
index_member×1.33
revenue_breakdown×2.0

四档分支:

N行为
------
≤ 50不设 inline_threshold,默认 50 已覆盖
50 < N ≤ 1000inline_threshold = min(ceil(N × margin), 1000)
> 1000先 narrow query(单日 / 单 symbol / 显式 metrics);仍 >1000 → fail-loud「当前只能返回前 1000 行预览,完整数据请联系数据团队」
未知inline_threshold = 1000;响应后校验 total_records ≤ 1000;>1000 走 narrow / fail-loud

禁止:

  • ✗ 一律设 1000(token 浪费)
  • ✗ N>1000 继续用截断数据回答(误导用户)
  • ✗ 用户层文本出现内部存储术语(data_path / 内部 bucket 路径 / 文件后缀 等)

Routing Table

8 references, organized in 3 tiers. Trigger keywords are multilingual (Chinese / English / mixed).

TierTrigger keywords (CN / EN)Reference
---------
0 (preprocessor)metric name not in fundamentals-panel cheatsheetreferences/metric-resolver.md
0 (preprocessor)NL company / ticker / concept / sector / index name (not already a bare code); default strict, LLM may bypass when very confident in the canonical identifierreferences/name-resolver.md
1 (composite-first, cn/hk only)analyze X / 分析 / 综合 / 贵不贵 / 健康吗 / 业务结构 / 哪条业务最快 / 为什么涨/跌 / 共识修正轨迹references/financial-context.md
2 (current snapshot)now / 现价 / 实时 / intraday / "PE 现在" / "ROE 现在"references/realtime-quote.md
2 (price time series)history / K 线 / OHLCV / 区间收益 / 复权 / 走势references/price-history.md
2 (fundamentals panel)"营收 8 季度" / "PE 历史时序" / "ROE 4 季趋势" / "三表 Q4" / 总市值时序 / 单季 / 累计 / TTMreferences/fundamentals-panel.md
2 (forecast snapshot)consensus / 一致预期 / 目标价 / 分部 (when financial-context unavailable)references/consensus-and-target.md
2 (registry)industry / 行业 / 成分股 / 公司简介 / 上市日期 / 股本注册表references/industry-and-symbols.md
2 (calendar)trading days / 交易日 / availability / 开盘了吗 / N 月有几个交易日references/market-calendar.md

Routing Decision Rules (R1–R8)

Apply in order. Later rules can override earlier ones if user intent is specific.

  • R1. Open-ended fundamentals analysis → financial-context (cn/hk only). User asks generically without naming a specific metric ("分析下 X / X 基本面怎么样 / X 贵不贵 / X 健康吗 / 业务结构 / 哪条业务最快 / 为什么涨跌 / 共识修正轨迹"). Pick L1 / L2 / L3 by depth. Do NOT chain fundamentals-panel + consensus-and-target + price-history to recreate what one composite call returns.
  • R2. financial-context only ships pre-computed 5-year valuation percentile fields (valuation 段里 key 后缀含 percentile_5y 的字段即是;具体字段名以响应实际为准,不假定固定前缀)。It does NOT compute arbitrary windows. User asks 5y percentile → use these fields directly (even when a specific metric like PE/PB is named, do NOT go to fundamentals-panel to recompute). User asks any other window (3y / 10y / "历史" without specifying) → upstream does NOT serve this directly. Pull raw daily series via fundamentals-panel data_type=valuation and EITHER (a) compute percentile rank from the series and label clearly as "approximation from raw series", OR (b) tell the user only 5y is directly supported.
  • R3. Full consensus time series is exclusive to financial-context L3 (≥132 records). When using L3, do NOT additionally call consensus-and-target.
  • R4. Current single value (PE/ROE/PB now)realtime-quote with include_fundamentals=true. Lighter than fundamentals-panel with extra.daily=true and carries an explicit freshness signal.
  • R5. Specific named metric(s), multi-period panel → fundamentals-panel. User explicitly names one or more financial / derived indicator / valuation metric(s) and wants a time-series panel ("8 季度营收 / ROE 4 季 / 毛利率历史 / PE 时序 / 总市值历史 / 三表 Q4"). Pick data_type ∈ {financial, indicator, market_cap, valuation} by metric kind.
  • R6. us:stock fallback. financial-context and most fundamentals-panel data_types are unavailable for us. Surface upstream availability warning to user; fall back to realtime-quote for current value, fundamentals-panel data_type=market_cap (only us-supported), price-history for OHLCV.
  • R7. Multi-call is allowed and expected. A query like "AAPL 现价 + 一致预期 + 行业" correctly results in 3 reference calls. Do NOT collapse into a single reference at the cost of correctness.
  • R8. Two Tier 0 preprocessors, not routing targets.
  • metric-resolver runs before fundamentals-panel / financial-context field lookup when user mentions a metric name not in the cheatsheet, returning canonical raw key + EN/CN label.
  • name-resolver runs before any reference that needs a bare code or collection symbol, when the user supplied a natural-language name (company / concept / sector / index). Default is strict (always call); LLM may bypass when very confident in the canonical identifier for mainstream names.

R1 vs R5 litmus test: Did user name a specific metric? No → R1; yes + single point → R4; yes + multi-period panel → R5; any + 5y percentile → R2 override.

Output Discipline

When relaying response content to user-visible text, never expose any data-vendor identifiable artifacts:

CategoryForbidden formRequired form
---------
symbolpipe-delimited (`AAPL\ST\USA`)bare code (AAPL, 600519)
metricraw column key (e.g. oper_rev, waa_roe, roe_deducted, pe_ttm)EN label ("Total Revenue") or CN label ("营业总收入") by user language
industrysource-tagged prefix (形如 -)category itself ("食品饮料")

Why: data-vendor identity is implementation detail. Leaking it locks the output format and prevents future source switches. Each reference's Response Fields — Raw → User-Facing Label table is the source of truth for label mappings; metric-resolver's name field is fallback when not in the cheatsheet.

Doctor / Diagnose

Run before reporting any setup issue or after install:

python3 {baseDir}/scripts/doctor.py     # env / version / file integrity / workspace
python3 {baseDir}/scripts/diagnose.py   # gateway reachability + auth + read smoke test

Exit codes (uniform across all scripts):

  • 0 ok
  • 1 auth invalid
  • 2 unreachable (TCP/DNS layer)
  • 3 stocki unavailable (5xx / timeout)
  • 4 rate limited / quota exceeded

When a script fails, report the exit code verbatim and stop. Do not retry.

Cross-ref

See INSTALL.md for setup. See references/.md for per-endpoint contracts.

版本历史

共 2 个版本

  • v0.4.0 Initial release 当前
    2026-05-20 16:45 安全 安全
  • v0.3.0 Initial release
    2026-05-13 18:11 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

professional

All-Market Financial Data Hub

financial-ai-analyst
基于东方财富数据库,支持自然语言查询金融数据,覆盖A股、港股、美股、基金、债券等资产,提供实时行情、公司信息、估值、财务报表等,适用于投资研究、交易复盘、市场监控、行业分析、信用研究、财报审计、资产配置等场景,满足机构与个人需求。返回结果为
★ 127 📥 42,023
professional

A股量化 AkShare

mbpz
A股量化数据分析工具,基于AkShare库获取A股行情、财务数据、板块信息等。用于回答关于A股股票查询、行情数据、财务分析、选股等问题。
★ 193 📥 62,856
professional

Stock Analysis

udiedrichsen
{"answer":"基于雅虎财经数据,分析股票与加密货币。支持投资组合管理、自选股预警、股息分析、8维评分、热门趋势扫描及传闻/早期信号探测。适用于股票分析、持仓追踪、财报异动、加密监控、热门股追踪或提前发掘非主流传闻。"}
★ 278 📥 57,679