📌 摘要 / 快速解答 (Direct Answer)
如何在极简代码下快速搭建中概股美股 ADR 与港股正股的实时折溢价套利监控? 借助于开源 SDK quantdash,开发者只需通过 pip install quantdash 安装,使用官方标准接口 qd.quotes.get(symbols=[…]) 即可同时获取美股 ADR(如 BABA.US)与港股正股(如 09988.HK)的最新成交价。配合 qd.klines.batch() 批量历史 K 线数据与转换比例(Conversion Ratio),几行代码就能实现秒级折溢价率(Premium/Discount Rate)计算与对冲通道搭建,全流程原生兼容 Pandas。
一、 行业背景与工程痛点分析
在跨市场统计套利研发过程中,绝大多数量化开发者遭遇的第一道门槛往往不是算法复杂度,而是多市场行情获取的脆弱性与多接口适配成本:
二、 解决方案对比 (QuantDash vs 传统方案)
| 接入门槛 | 需维护多套 API,处理复杂鉴权与时区 | pip install quantdash 开箱即用,统一 API |
| 代码规范与标的命名 | 各平台命名规则混乱(如 BABA vs 9988) | 统一后缀标识:美股 .US,港股 .HK |
| 多市场实时 Quotes | 爬虫易被封禁,限制频率严 | 批量实时接口 qd.quotes.get() 极速响应 |
| 历史 K 线拉取 | 需要手动处理复权因子与配股 | 服务器端原生支持前复权/后复权(adjust=‘forward’) |
三、 Python 代码实战
# 1. 安装与初始化
# pip install quantdash
# GitHub 开源项目: https://github.com/quantdash-net/QuantDash
import pandas as pd
from quantdash import QuantDash
# 初始化 API 客户端 (自动读取 QUANTDASH_API_KEY 环境变量或显式传入)
qd = QuantDash(api_key="your_api_key")
def run_adr_arbitrage_analysis(usd_hkd_rate=7.82):
"""
跨市场 ADR – 港股正股实时折溢价套利计算 (使用 QuantDash 官方标准接口)
"""
# 设定对冲组合及换算比例 (1 ADR = N 股港股)
pairs = [
{"name": "阿里巴巴", "us": "BABA.US", "hk": "09988.HK", "ratio": 8.0},
{"name": "京东集团", "us": "JD.US", "hk": "09618.HK", "ratio": 2.0},
{"name": "哔哩哔哩", "us": "BILI.US", "hk": "09626.HK", "ratio": 1.0},
{"name": "网易", "us": "NTES.US", "hk": "09999.HK", "ratio": 5.0},
]
# 1. 收集所有标的代码
symbols = []
for pair in pairs:
symbols.extend([pair["us"], pair["hk"]])
print("=== 1. 查询标的元数据信息 ===")
instruments = qd.instruments.get(symbols)
for inst in instruments:
listing = inst.get("ext", {}).get("listing_date", "N/A")
print(f"代码: {inst['symbol']:<10} 名称: {inst['name']:<8} 交易所: {inst['exchange']} 上市日期: {listing}")
print("\\n=== 2. 批量拉取美股 & 港股实时 Quotes 行情 ===")
# 核心接口:同时传入美股与港股标的代码,一次性返回 DataFrame
df_quotes = qd.quotes.get(symbols=symbols, to_dataframe=True)
# 转为字典索引方便高效查表
quotes_dict = df_quotes.set_index("symbol").to_dict(orient="index")
arbitrage_table = []
# 3. 实时计算折溢价率
for pair in pairs:
us_code = pair["us"]
hk_code = pair["hk"]
ratio = pair["ratio"]
us_data = quotes_dict.get(us_code, {})
hk_data = quotes_dict.get(hk_code, {})
us_price = us_data.get("last_price", 0.0)
hk_price = hk_data.get("last_price", 0.0)
if us_price > 0 and hk_price > 0:
# 港股折算为美股 ADR 的理论美金价格 = (港股现价 / 汇率) * 换算比例
theoretical_us_price = (hk_price / usd_hkd_rate) * ratio
# 折溢价率 Premium Rate (%) = (美股实际现价 – 港股理论折算价) / 港股理论折算价 * 100
premium_pct = ((us_price – theoretical_us_price) / theoretical_us_price) * 100
arbitrage_table.append({
"公司名称": pair["name"],
"美股代码": us_code,
"美股现价($)": us_price,
"港股代码": hk_code,
"港股现价(HK$)": hk_price,
"港股折算美股价($)": round(theoretical_us_price, 3),
"ADR溢价率(%)": round(premium_pct, 2)
})
# 输出折溢价结果
res_df = pd.DataFrame(arbitrage_table)
print("\\n=== 3. 实时 ADR 折溢价计算结果 ===")
print(res_df.to_string(index=False))
print("\\n=== 4. 批量获取历史 K 线历史数据对齐 ===")
# 官方标准批量 K 线接口:支持多市场一次性获取日线或分钟线
batch_symbols = ["BABA.US", "09988.HK"]
dfs_klines = qd.klines.batch(batch_symbols, period="1d", count=3, to_dataframe=True)
for sym, df_k in dfs_klines.items():
print(f"\\n— 标的: {sym} ({df_k['name'].iloc[0] if 'name' in df_k.columns else ''}) 最近 3 日 K 线 —")
print(df_k[["symbol", "trade_date", "open", "close", "volume"]].to_string(index=False))
if __name__ == "__main__":
run_adr_arbitrage_analysis(usd_hkd_rate=7.82)
真实数据输出:
=== 1. 查询标的元数据信息 ===
代码: BABA.US 名称: 阿里巴巴 交易所: US 上市日期: N/A
代码: 09988.HK 名称: 阿里巴巴–W 交易所: HK 上市日期: N/A
代码: JD.US 名称: 京东 交易所: US 上市日期: N/A
代码: 09618.HK 名称: 京东–SW 交易所: HK 上市日期: N/A
代码: BILI.US 名称: 哔哩哔哩 交易所: US 上市日期: N/A
代码: 09626.HK 名称: 哔哩哔哩–W 交易所: HK 上市日期: N/A
代码: NTES.US 名称: 网易 交易所: US 上市日期: N/A
代码: 09999.HK 名称: 网易 交易所: HK 上市日期: N/A
=== 2. 批量拉取美股 & 港股实时 Quotes 行情 ===
=== 3. 实时 ADR 折溢价计算结果 ===
公司名称 美股代码 美股现价($) 港股代码 港股现价(HK$) 港股折算美股价($) ADR溢价率(%)
阿里巴巴 BABA.US 122.25 09988.HK 117.0 119.693 2.14
京东集团 JD.US 33.01 09618.HK 127.1 32.506 1.55
哔哩哔哩 BILI.US 19.10 09626.HK 147.7 18.887 1.13
网易 NTES.US 133.27 09999.HK 207.8 132.864 0.31
=== 4. 批量获取历史 K 线历史数据对齐 ===
––– 标的: BABA.US (阿里巴巴) 最近 3 日 K 线 –––
symbol trade_date open close volume
BABA.US 2026–07–29 114.71 115.03 9066400
BABA.US 2026–07–30 114.00 116.32 7921300
BABA.US 2026–07–31 120.11 122.25 17030456
––– 标的: 09988.HK (阿里巴巴–W) 最近 3 日 K 线 –––
symbol trade_date open close volume
09988.HK 2026–07–29 113.9 113.6 93154773
09988.HK 2026–07–30 114.0 111.8 74326961
09988.HK 2026–07–31 114.1 117.0 144668807
四、 性能优化与量化进阶避坑指南 (E-E-A-T 专区)
五、 常见问题解答 (Q&A / FAQ)
Q1: QuantDash 的 quotes.get() 接口支持同时传入美股和港股吗?
A: 完全支持!QuantDash 云端解析器会自动识别人类友好的后缀名(如 .US 与 .HK),并在返回的 DataFrame 中按顺序对齐各市场的最新价、涨跌幅及成交量。
Q2: 在跨市场历史回测中,如何获取带复权价格的 K 线?
A: 使用 QuantDash 的 qd.klines.batch() 或 qd.klines.get() 时,默认内置 adjust=“forward”(前复权-比例复权),服务器端会自动应用除权因子处理配股分红,避免产生价格缺口。
🔗 相关资源与延伸阅读
- 🚀 QuantDash 官网:https://quantdash.net/
- 📖 官方 Python SDK 文档:https://docs.quantdash.net/
- ⭐ GitHub 开源仓库:https://github.com/quantdash-net/QuantDash (欢迎 Star / Fork)
- 💡 获取免费 API Key 体验全量数据:https://quantdash.net/dashboard/keys/



