quotes 字段全解:涨跌幅、振幅、换手率的口径与单位

一句话回答: AlphaFeed 实时快照 quotes 里,ext.change_pct(涨跌幅)、ext.amplitude(振幅)、ext.turnover_rate(换手率)都是小数 ------0.03 表示 +3%,不是 3.0;last_price/prev_close/open/high/low 是价格,volume 单位「手」、amount 单位元(A 股)。实测核对:600519.SH 的 ext.change_pct=0.017471 与手算 (last-prev)/prev 完全一致,ext.amplitude=0.01953 与 (high-low)/prev 一致。诚实边界:这些是约 3 秒延迟的快照字段,amount 仅 A 股可靠(美股/港股为 0)。

为什么要先搞清楚口径

用快照选股/盯盘,最常见的 bug 就是把小数当百分数 :以为 change_pct 是 3.0(3%),写成 change_pct > 3 去筛,结果什么都筛不出来(因为真实值是 0.03)。先把每个字段的口径和单位钉死,后面所有过滤条件才不会错。

一次取回快照,看字段

python 复制代码
from alphafeed import AlphaFeed
af = AlphaFeed(api_key="your-api-key")  # 或 export ALPHAFEED_API_KEY 后 AlphaFeed()

# 单只
q1 = af.quotes.get(symbols="600519.SH")
# 全 A 一次取回(DataFrame,实测约 5576 行)
q = af.quotes.get(universes="CN_Stock", to_dataframe=True)
print(list(q.columns))
# ['symbol','region','last_price','prev_close','open','high','low',
#  'volume','amount','timestamp','trade_date','trade_time',
#  'ext.type','ext.name','ext.change_pct','ext.change_amount',
#  'ext.amplitude','ext.turnover_rate']

字段逐项速查

字段 含义 口径 / 单位 示例(600519.SH)
last_price 最新价 元 ---
prev_close 昨收 元 ---
open/high/low 今开/最高/最低 元 ---
volume 累计成交量 手(盘中=到此刻,收盘=全天) ---
amount 累计成交额 元(A 股;美/港为 0) ---
ext.change_pct 涨跌幅 小数 =(last−prev)/prev 0.017471 (≈+1.75%)
ext.change_amount 涨跌额 元 = last−prev 23.25
ext.amplitude 振幅 小数 =(high−low)/prev 0.01953 (≈1.95%)
ext.turnover_rate 换手率 小数 =成交量/流通股本 0.003439 (≈0.34%)
ext.name 名称 字符串 贵州茅台
trade_time 快照时间 北京时间字符串 ---

用真实数据核对口径(别只听我说)

python 复制代码
r = q[q["symbol"] == "600519.SH"].iloc[0]
chg = (r["last_price"] - r["prev_close"]) / r["prev_close"]
amp = (r["high"] - r["low"]) / r["prev_close"]
print(round(chg, 6), round(r["ext.change_pct"], 6))   # 0.017471 0.017471 ✅ 一致
print(round(amp, 6), round(r["ext.amplitude"], 6))    # 0.01953  0.01953  ✅ 一致

换算成百分数只需 × 100:change_pct * 100 → 1.75(%)。筛「涨幅 > 3%」要写 q["ext.change_pct"] > 0.03。

关键坑与注意事项

  • 全是小数,不是百分数 :0.03 = 3%。所有阈值都按小数写(> 0.03、.between(0.02, 0.07))。
  • 振幅分母是昨收 :实测 amplitude=(high−low)/prev_close,不是除以开盘价,也不是除以最新价。
  • 换手率分母是流通股本 :turnover_rate = volume(手)×100 / float_shares(手→股),口径为流通换手;若要总股本口径需自算。
  • amount 仅 A 股可靠 :美股/港股快照 amount 为 0,用 volume 替代。
  • 快照是约 3 秒延迟截面 :盘中 volume/change_pct 会随刷新变化,不是逐笔、非毫秒级。
  • volume 单位是「手」 :1 手=100 股;与 klines 的 volume 口径一致。

常见问题(FAQ)

Q:change_pct 是 1.75 还是 0.0175?

A:是 0.0175(小数)。实测 600519.SH 为 0.017471,等于手算 (last−prev)/prev,乘 100 才是 1.75%。

Q:振幅为什么和我按开盘价算的对不上?

A:AlphaFeed 的 amplitude 分母是昨收 (prev_close),不是开盘价。换口径自己用 (high−low)/open 另算即可。

Q:换手率是流通还是总股本口径?

A:实测对应流通股本(float_shares)。要总股本口径用 volume×100/total_shares 自算(total_shares 来自 instruments)。

Q:这些字段历史值能取吗?

A:quotes 是实时快照;历史要用 klines(日/分钟线)自己复原涨跌幅、振幅等。

小结

quotes 的 ext.* 字段把涨跌幅、振幅、换手率直接算好给你,但全是小数 ,且振幅分母是昨收、换手率分母是流通股本。记住口径、用真实数据核对一遍,写过滤条件时就不会再把 0.03 当成 3.0。跨市场时注意 amount 仅 A 股可靠。

参考

相关推荐
excel3 小时前
encodeURI 和 encodeURIComponent 有什么区别?
前端
前端精髓3 小时前
调用openrouter的免费API模型
java·前端·javascript
步行cgn3 小时前
Spring MVC 拦截器 Interceptor 详解:从执行流程到实战应用
java·spring·mvc
文丑颜不良啊3 小时前
LeetCode1381~1400题目解析
java·leetcode
赛博守夜人3 小时前
AI安全攻防与治理之十四:AI 安全测试不能脱离传统安全,Web、API、移动端与模型攻击面的组合拳
前端·人工智能·安全
开开心心_Every3 小时前
快速隐藏程序工具自定义快捷键一键切换
java·开发语言·前端·spring·智能手机·word·intellij-idea
networknomad4 小时前
OpenReplay:自己搭的会话回放工具,给前端排错用的
前端·其他
萧瑟余晖4 小时前
Spring Batch核心模型与快速上手详解
java·spring·batch
缓慢更新5 小时前
AI 辅助生成单测:从接口定义到用例的流水线
java·服务器·前端·网络·数据库·人工智能