跳转至

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_IndexGPU_IndexDRAM_IndexSSD_IndexCPU_IndexOI_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)

相关页面