> ## Documentation Index
> Fetch the complete documentation index at: https://docs.reportify.cn/llms.txt
> Use this file to discover all available pages before exploring further.

# 股票数据

> Python SDK 股票数据模块，返回 pandas DataFrame

<Note>
  股票数据模块的方法返回 **pandas DataFrame**，方便进行数据分析。
</Note>

## 公司信息

### overview()

获取公司概览信息。返回结构为 `{"items": [company, ...]}`，每个 company 下有 `stockList` 数组。

```python theme={null}
# 通过股票代码查询（支持多个，逗号分隔）
result = client.stock.overview(symbols="AAPL,00700")
companies = result.get("items", [result]) if isinstance(result, dict) else result
for company in companies:
    for stock in company.get("stockList", []):
        print(stock["symbol"], stock.get("stock_name"), stock.get("ipo_date"))

# 通过股票名称查询
result = client.stock.overview(names="腾讯,苹果")
```

<ParamField path="symbols" type="string">
  股票代码（不含市场前缀），支持多个用逗号分隔，如 `AAPL,00700`。与 `names` 至少提供一个
</ParamField>

<ParamField path="names" type="string">
  股票名称，支持多个用逗号分隔，如 `腾讯,苹果`
</ParamField>

<ResponseField name="返回值" type="dict">
  `{"items": [...]}` 结构。每个 item 包含 `country`、`city`、`fiscal_year_end`、`stockList` 等字段；`stockList` 是股票列表，每项含 `symbol`、`stock_name`、`market`、`ipo_date`、`industry_HS_1` 等
</ResponseField>

<Tip>
  批量查询 IPO 日期、市值等量化字段时，建议用 `client.quant.factors_compute(formula="LISTING_DATE")` 或 `"CIRCULATING_MARKET_CAP"`，单次调用即可处理全市场，比循环调用 `overview` 快得多。
</Tip>

***

### shareholders()

获取主要股东列表。

```python theme={null}
shareholders = client.stock.shareholders("AAPL")
for holder in shareholders:
    print(holder["name"], holder["percent"])

# 获取流通股东
outstanding = client.stock.shareholders("AAPL", type="outstanding_shareholders", limit=20)
```

<ParamField path="symbol" type="string" required>
  股票代码
</ParamField>

<ParamField path="type" type="string" default="shareholders">
  股东类型：`shareholders`（全部股东）或 `outstanding_shareholders`（流通股东）
</ParamField>

<ParamField path="limit" type="integer" default="10">
  返回股东数量上限
</ParamField>

<ResponseField name="返回值" type="list[dict]">
  股东列表，包含 `name`, `holdings`, `percent`, `date` 等
</ResponseField>

***

## 财务报表

### income\_statement()

获取利润表数据。

```python theme={null}
income = client.stock.income_statement(
    symbol="AAPL",
    period="quarterly",
    limit=8
)
print(income[["revenue", "net_income", "eps"]].head())
```

<ParamField path="symbol" type="string" required>
  股票代码
</ParamField>

<ParamField path="period" type="string" default="annual">
  报告期间：`annual`（年报）或 `quarterly`（季报）
</ParamField>

<ParamField path="limit" type="int" default="8">
  返回期数
</ParamField>

<ParamField path="start_date" type="str">
  开始日期，格式：`YYYY-MM-DD`
</ParamField>

<ParamField path="end_date" type="str">
  结束日期，格式：`YYYY-MM-DD`
</ParamField>

<ParamField path="calendar" type="str" default="fiscal">
  日历类型：`calendar`（公历）或 `fiscal`（财年）
</ParamField>

<ParamField path="fiscal_year" type="str">
  指定财年，如 `2023`
</ParamField>

<ParamField path="fiscal_quarter" type="str">
  指定财季（Q1, Q2, Q3, Q4, FY, H1, `Q3 (9 months)`）
</ParamField>

<ResponseField name="返回值" type="DataFrame">
  利润表数据，以日期为索引，包含 `revenue`, `gross_profit`, `operating_income`, `net_income`, `eps` 等列
</ResponseField>

***

### balance\_sheet()

获取资产负债表数据。

```python theme={null}
balance = client.stock.balance_sheet("AAPL", period="annual")
print(balance[["total_assets", "total_liabilities", "total_equity"]].head())
```

<ParamField path="symbol" type="string" required>
  股票代码
</ParamField>

<ParamField path="period" type="string" default="annual">
  报告期间：`annual` 或 `quarterly`
</ParamField>

<ParamField path="limit" type="int" default="8">
  返回期数
</ParamField>

<ParamField path="start_date" type="str">
  开始日期，格式：`YYYY-MM-DD`
</ParamField>

<ParamField path="end_date" type="str">
  结束日期，格式：`YYYY-MM-DD`
</ParamField>

<ParamField path="calendar" type="str" default="fiscal">
  日历类型：`calendar`（公历）或 `fiscal`（财年）
</ParamField>

<ParamField path="fiscal_year" type="str">
  指定财年，如 `2023`
</ParamField>

<ParamField path="fiscal_quarter" type="str">
  指定财季（Q1, Q2, Q3, Q4, FY）
</ParamField>

<ResponseField name="返回值" type="DataFrame">
  资产负债表数据
</ResponseField>

***

### cashflow\_statement()

获取现金流量表数据。

```python theme={null}
cashflow = client.stock.cashflow_statement("AAPL")
print(cashflow[["operating_cashflow", "investing_cashflow", "financing_cashflow"]].head())
```

<ParamField path="symbol" type="string" required>
  股票代码
</ParamField>

<ParamField path="period" type="string" default="annual">
  报告期间：`annual`、`quarterly` 或 `cumulative quarterly`
</ParamField>

<ParamField path="limit" type="int" default="8">
  返回期数
</ParamField>

<ParamField path="start_date" type="str">
  开始日期，格式：`YYYY-MM-DD`
</ParamField>

<ParamField path="end_date" type="str">
  结束日期，格式：`YYYY-MM-DD`
</ParamField>

<ParamField path="calendar" type="str" default="fiscal">
  日历类型：`calendar`（公历）或 `fiscal`（财年）
</ParamField>

<ParamField path="fiscal_year" type="str">
  指定财年，如 `2023`
</ParamField>

<ParamField path="fiscal_quarter" type="str">
  指定财季（Q1, Q2, Q3, Q4, FY, H1, `Q3 (9 months)`）
</ParamField>

<ResponseField name="返回值" type="DataFrame">
  现金流量表数据
</ResponseField>

***

### revenue\_breakdown()

获取营收分解数据。

```python theme={null}
breakdown = client.stock.revenue_breakdown("AAPL", limit=6)
print(breakdown)
```

<ParamField path="symbol" type="string" required>
  股票代码
</ParamField>

<ParamField path="period" type="str">
  报告周期，如 `FY`（全年）、`Q2`（二季度）
</ParamField>

<ParamField path="limit" type="int" default="6">
  返回记录数
</ParamField>

<ParamField path="start_date" type="str">
  开始日期，格式：`YYYY-MM-DD`
</ParamField>

<ParamField path="end_date" type="str">
  结束日期，格式：`YYYY-MM-DD`
</ParamField>

<ParamField path="fiscal_year" type="str">
  指定财年，如 `2023`
</ParamField>

<ResponseField name="返回值" type="DataFrame">
  营收分解数据
</ResponseField>

***

## 行情数据

### quote()

获取股票行情数据（当前和历史价格）。

```python theme={null}
quote = client.stock.quote(
    symbol="AAPL",
    start_date="2024-01-01",
    end_date="2024-06-30"
)
print(quote[["close", "volume", "market_cap"]].tail())
```

<ParamField path="symbol" type="string" required>
  股票代码
</ParamField>

<ParamField path="start_date" type="str">
  开始日期，格式：`YYYY-MM-DD`
</ParamField>

<ParamField path="end_date" type="str">
  结束日期，格式：`YYYY-MM-DD`
</ParamField>

<ResponseField name="返回值" type="DataFrame">
  股票行情数据，包含 `close`, `volume`, `market_cap`, `pe`, `ps` 等
</ResponseField>

***

### index\_quote()

获取指数行情数据。

```python theme={null}
# 获取恒生指数行情
index = client.stock.index_quote(
    symbol="HSI",
    start_date="2024-01-01",
    end_date="2024-06-30"
)
print(index[["stock_price", "stock_change_percent"]].tail())

# 获取标普500指数
spx = client.stock.index_quote("SPX")
```

<ParamField path="symbol" type="string" required>
  指数代码，如 `HSI`（恒生指数）, `SPX`（标普500）, `DJI`（道琼斯）
</ParamField>

<ParamField path="start_date" type="str">
  开始日期，格式：`YYYY-MM-DD`
</ParamField>

<ParamField path="end_date" type="str">
  结束日期，格式：`YYYY-MM-DD`
</ParamField>

<ResponseField name="返回值" type="DataFrame">
  指数行情数据
</ResponseField>

***

## 指数和行业

### index\_constituents()

获取指数成分股列表。

```python theme={null}
# 获取沪深300指数成分股
csi300 = client.stock.index_constituents("000300")
print(csi300[["market", "symbol"]])

# 获取创业板指数成分股
chinext = client.stock.index_constituents("399006")
```

<ParamField path="symbol" type="string" required>
  指数代码，如 `000300`（沪深300）, `000016`（上证50）, `399006`（创业板指）
</ParamField>

<ResponseField name="返回值" type="DataFrame">
  成分股列表，包含 `market`, `symbol` 等
</ResponseField>

***

### index\_tracking\_funds()

获取指数跟踪基金列表。

```python theme={null}
# 获取沪深300指数跟踪基金
funds = client.stock.index_tracking_funds("000300")
print(funds[["symbol", "short_name", "name"]])

# 获取中证500指数跟踪基金
funds = client.stock.index_tracking_funds("000905")
```

<ParamField path="symbol" type="string" required>
  指数代码，如 `000300`（沪深300）, `000016`（上证50）, `000905`（中证500）
</ParamField>

<ResponseField name="返回值" type="DataFrame">
  跟踪基金列表，包含 `symbol`, `short_name`, `name` 等
</ResponseField>

***

### industry\_constituents()

获取行业成分股列表。

```python theme={null}
# 获取中国军工行业成分股
stocks = client.stock.industry_constituents("cn", "军工")
print(stocks[["symbol", "name", "industry_one_level_name"]])

# 使用特定分类标准
stocks = client.stock.industry_constituents("cn", "军工", type="sw")
```

<ParamField path="market" type="string" required>
  股票市场：`cn`（中国）, `hk`（香港）, `us`（美国）
</ParamField>

<ParamField path="name" type="string" required>
  行业名称，如 `军工`, `Technology`
</ParamField>

<ParamField path="type" type="string">
  行业分类类型：

  * CN: `sw`（申万，默认）, `wind`
  * HK: `hs`（恒生，默认）
  * US: `GICS`（默认）
</ParamField>

<ResponseField name="返回值" type="DataFrame">
  成分股列表，包含 `symbol`, `name`, `industry_one_level_name`, `industry_second_level_name`, `industry_third_level_name` 等
</ResponseField>

***

## 日历

### earnings\_calendar()

财报日历。

```python theme={null}
calendar = client.stock.earnings_calendar(
    market="us",
    start_date="2024-01-01",
    end_date="2024-01-31"
)
```

<ParamField path="market" type="string" required>
  股票市场：`cn`, `hk`, `us`
</ParamField>

<ParamField path="start_date" type="str">
  开始日期
</ParamField>

<ParamField path="end_date" type="str">
  结束日期
</ParamField>

<ParamField path="symbol" type="str">
  指定股票代码
</ParamField>

***

### ipo\_calendar\_hk()

港股 IPO 日历。

```python theme={null}
ipos = client.stock.ipo_calendar_hk(status="Filing")
```

<ParamField path="status" type="string" default="Filing">
  IPO 状态：`Filing`（申报）, `Hearing`（聆讯）, `Priced`（定价）
</ParamField>

***

### ipo\_calendar\_cn()

A 股（沪深北）IPO 日历。所有参数均为可选，不传则返回全部。

```python theme={null}
ipos = client.stock.ipo_calendar_cn(
    market="SH",
    start_date="2026-01-01",
    end_date="2026-06-20",
    status="listed"
)
```

<ParamField path="market" type="string">
  股票市场：`SH`（沪市）, `SZ`（深市）, `BJ`（北交所）。默认全部
</ParamField>

<ParamField path="start_date" type="str">
  开始日期（YYYY-MM-DD）
</ParamField>

<ParamField path="end_date" type="str">
  结束日期（YYYY-MM-DD）
</ParamField>

<ParamField path="status" type="string">
  IPO 状态：`listed`（已上市）, `delisted`（已退市）, `currently_issuing`（发行中）, `deferred_issuance`（暂缓发行）, `issuance_complete`（发行完成）。默认全部
</ParamField>
