yingfeng64/kronos-api
0
Kronos Stock Predictor API
基于清华大学 Kronos 金融 K 线基础大模型的 A 股概率预测 REST API。
- 数据源:Tushare Pro A 股日线,前复权(qfq)
- 推理方式:蒙特卡洛分批采样,输出预测方向、置信度及 95% 交易区间
- 异步任务:POST 提交 → 返回
task_id→ GET 轮询结果
更新说明(2026-03-16)
- 请求/响应主字段由
ts_code统一为symbol - 数据源切换回 Tushare Pro(
pro_bar,前复权qfq) - 方向概率
direction.probability定义为“当前direction.signal的概率(0–1)” - 推理路径改为分批采样(可通过
MC_BATCH_SIZE调整批大小) - 新增阶段耗时日志(
fetch/calendar/infer/build/cache/total)
模型信息
快速开始
1. 提交预测任务
curl -X POST "https://yingfeng64-kronos-api.hf.space/api/v1/predict" \
-H "Content-Type: application/json" \
-d '{
"symbol": "000063.SZ",
"lookback": 512,
"pred_len": 5,
"sample_count": 30,
"mode": "simple"
}'{ "task_id": "550e8400-e29b-41d4-a716-446655440000" }2. 轮询结果
curl "https://yingfeng64-kronos-api.hf.space/api/v1/predict/550e8400-e29b-41d4-a716-446655440000"status 为 "pending" 时继续等待,变为 "done" 或 "failed" 后读取结果。
Python 一键轮询版
import time, requests
BASE = "https://yingfeng64-kronos-api.hf.space"
resp = requests.post(f"{BASE}/api/v1/predict", json={
"symbol": "000063.SZ",
"lookback": 512,
"pred_len": 5,
"sample_count": 30,
})
task_id = resp.json()["task_id"]
while True:
r = requests.get(f"{BASE}/api/v1/predict/{task_id}").json()
if r["status"] in ("done", "failed"):
break
time.sleep(10)
print(r["result"])API 文档
POST /api/v1/predict — 提交单个预测任务
请求体
响应(`mode=simple`)
{
"symbol": "000063.SZ",
"base_date": "2026-03-13",
"pred_len": 5,
"confidence": 95,
"confidence_warning": false,
"cached": false,
"cache_expires_at": "2026-03-16 15:00:00 UTC+08:00",
"direction": {
"signal": "bearish",
"probability": 0.5667
},
"summary": {
"mean_close": 36.35,
"range_low": 30.60,
"range_high": 40.01,
"range_width": 9.41
},
"bands": [
{
"date": "2026-03-16",
"step": 1,
"mean_close": 36.10,
"trading_low": 34.46,
"trading_high": 37.32,
"uncertainty": 0.0785
}
]
}`mode=advanced` 在每个 `bands` 条目中追加
当 include_volume: true 时额外返回顶层 volume 数组:
"volume": [
{
"date": "2026-03-16",
"mean_volume": 1050000,
"volume_ci_low": 820000,
"volume_ci_high": 1280000
}
]GET /api/v1/predict/{task_id} — 查询单个任务结果
响应
POST /api/v1/predict/batch — 批量提交
一次提交最多 20 个预测请求,所有子任务并发入队。每个子任务参数与单个预测相同。
curl -X POST "https://yingfeng64-kronos-api.hf.space/api/v1/predict/batch" \
-H "Content-Type: application/json" \
-d '{
"requests": [
{"symbol": "000063", "pred_len": 5, "sample_count": 30},
{"symbol": "600900", "pred_len": 5, "sample_count": 30},
{"symbol": "000001", "pred_len": 5, "sample_count": 30}
]
}'{
"batch_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"task_ids": ["aaa...", "bbb...", "ccc..."]
}GET /api/v1/predict/batch/{batch_id} — 查询批量进度
{
"batch_id": "xxxxxxxx-...",
"status": "done",
"total": 3,
"done": 3,
"failed": 0,
"tasks": [
{
"task_id": "aaa...",
"status": "done",
"result": { ... },
"error": null
}
]
}GET /api/v1/cache — 查看缓存状态
列出有效缓存条目及剩余 TTL。
# 查某只股票
curl "https://yingfeng64-kronos-api.hf.space/api/v1/cache?symbol=000063"
# 查全部
curl "https://yingfeng64-kronos-api.hf.space/api/v1/cache"{
"count": 1,
"entries": [
{
"symbol": "000063",
"lookback": 512,
"pred_len": 5,
"sample_count": 30,
"mode": "simple",
"include_volume": false,
"cached_at": "2026-03-16 10:23:00 UTC+08:00",
"expires_at": "2026-03-16 15:00:00 UTC+08:00",
"ttl_seconds": 17220
}
]
}GET /health — 健康检查
{ "status": "ok" }响应字段说明
缓存机制
缓存 key 由 (symbol, lookback, pred_len, sample_count, mode, include_volume) 六元组构成,失效时机为下一个 A 股交易日收盘(15:00 CST)。
缓存命中时响应时间 < 100ms,无需等待模型推理。
运行配置
可观测性
服务会在 INFO 日志输出预测阶段耗时,示例:
Task <task_id> timing symbol=300065.SZ fetch=...ms calendar=...ms infer=...ms build=...ms cache=...ms total=...ms性能参考
推荐选用 GPU 硬件以获得实用响应速度。首次冷启动需从 HuggingFace Hub 下载模型权重,约需 1–2 分钟。
