index_daily — 指数日线行情
获取指数按日汇总的整体加权价格与指数点位,含涨跌幅。
- 接口:
index_daily
- 数据示例:见下文
- 权限要求:scope
index:read
- 更新频率:每次报价导入后自动重算
- 时效限制:有。免费用户默认只能查询最近交易日向前回退 7 个交易日及更早的数据(后台可调整交易日数,周末和休市日不计入);专业会员与管理员可查最新已发布数据。指定日期、扩大范围或分页均不能放宽该上限。
- 指数范围:免费用户可访问 7 个公开指数;
Hardware_Index 为会员专享,免费用户查询返回 403。
输入参数
| 名称 |
类型 |
必选 |
描述 |
| index_code |
str |
N |
指数代码,如 Server_Index |
| trade_date |
str |
N |
交易日期 YYYYMMDD(不能与 start_date/end_date 同用) |
| start_date |
str |
N |
开始日期 YYYYMMDD(含边界) |
| end_date |
str |
N |
结束日期 YYYYMMDD(含边界) |
所有条件都可省略;此时分页返回当前 Key 有权访问的全部指数日数据。批量同步建议明确传入日期范围。
输出参数
| 名称 |
类型 |
描述 |
| trade_date |
str |
交易日期,YYYYMMDD |
| index_code |
str |
指数代码 |
| weighted_price |
str(decimal) |
Σ(price × weight) 得到的整体加权价格 |
| index_value |
str(decimal) |
当日指数点位 |
| previous_price |
str(decimal)/null |
上一可计算报价日的整体价格 |
| previous_index |
str(decimal)/null |
上一可计算报价日的指数点位 |
| change_rate |
str(decimal) |
涨跌比例,"0.0123" 表示 1.23% |
| calculated_at |
str |
计算时间,RFC 3339 |
默认字段(省略 fields 时返回全部):
| [
"trade_date",
"index_code",
"weighted_price",
"index_value",
"previous_price",
"previous_index",
"change_rate",
"calculated_at"
]
|
指数计算逻辑
| 当日加权价格 = Σ(规格报价 × 权重) (同日同指数权重合计 = 1)
今日点位 = 昨日点位 × 今日加权价 ÷ 昨日加权价 (链式,基准日 = base_value)
|
算力硬件指数
Hardware_Index 是会员可访问的系统派生指数,不接受独立规格报价。仅当同一交易日的 6 个基础指数(Server_Index、GPU_Index、DRAM_Index、SSD_Index、CPU_Index、OI_Index)数据齐全时生成:
| 当日涨跌幅 = (Server + Card + Dram + Nand + CPU + OP 的当日涨跌幅) ÷ 6
今日点位 = 昨日点位 × (1 + 当日涨跌幅)
|
注意:AI 服务器租赁指数(Server_Rental_Index)不参与该计算。
首个完整交易日以 1000 点为基准。免费用户查询该指数会被拒绝(403);
省略 index_code 批量读取时,结果会自动排除该指数。
接口使用
| import tokease
pro = tokease.Client()
# 查询某指数某月日线
df = pro.query("index_daily", params={
"index_code": "Server_Index",
"start_date": "20260801",
"end_date": "20260831",
})
# 查询单日
df = pro.query("index_daily", params={
"index_code": "Server_Index",
"trade_date": "20260820",
})
|
数据样例
| trade_date |
index_code |
weighted_price |
index_value |
change_rate |
| 20260820 |
Server_Index |
10020000.000000 |
1000.000000 |
0.0000000000 |
| 20260821 |
Server_Index |
10040040.000000 |
1002.000000 |
0.0020000000 |
| 20260822 |
Server_Index |
10090140.200000 |
1007.000000 |
0.0049900200 |
cURL 示例
| curl -X POST "https://your-domain/api/v1/query" \
-H "Content-Type: application/json" \
-H "X-API-Key: $WHALE_KEY" \
-d '{
"api_name": "index_daily",
"params": {
"index_code": "Server_Index",
"start_date": "20260801",
"end_date": "20260831"
},
"fields": ["trade_date", "index_code", "weighted_price", "index_value"],
"limit": 1000,
"offset": 0
}'
|
Python + Pandas 完整示例
| import os
from typing import Any
import pandas as pd
import requests
BASE_URL = "https://your-domain"
API_KEY = os.environ["WHALEINDEX_API_KEY"]
def whaleindex_query(
api_name: str,
params: dict[str, Any],
fields: list[str] | None = None,
page_size: int = 1000,
) -> pd.DataFrame:
offset = 0
columns: list[str] = []
rows: list[list[Any]] = []
with requests.Session() as session:
session.headers.update({"X-API-Key": API_KEY})
while True:
response = session.post(
f"{BASE_URL}/api/v1/query",
json={
"api_name": api_name,
"params": params,
"fields": fields or [],
"limit": page_size,
"offset": offset,
},
timeout=30,
)
response.raise_for_status()
body = response.json()
if body["code"] != 0:
raise RuntimeError(
f'{body["code"]}: {body["message"]} '
f'(request_id={body["request_id"]})'
)
data = body["data"]
columns = data["fields"]
rows.extend(data["items"])
if not data["has_more"]:
break
offset += data["returned"]
frame = pd.DataFrame(rows, columns=columns)
if "trade_date" in frame.columns:
frame["trade_date"] = pd.to_datetime(frame["trade_date"], format="%Y%m%d")
decimal_columns = {
"weighted_price", "index_value", "previous_price",
"previous_index", "change_rate",
}
for column in decimal_columns.intersection(frame.columns):
frame[column] = pd.to_numeric(frame[column], errors="coerce")
return frame
df = whaleindex_query(
api_name="index_daily",
params={
"index_code": "Server_Index",
"start_date": "20260801",
"end_date": "20260831",
},
)
print(df)
|
相关页面