akshare Agent Skills & AI Rules

GitHub

AKShare is an elegant and simple financial data interface library for Python, built for human beings! 开源财经数据接口库

RAW Rules
1 Discovered Rules • ~1,336 Estimated Tokens
Quick:
Loading skill content...

LLM Index & Context Digest

llms.txt root-instruction ~1,336 tokens
Raw
# AKShare

AKShare is an open-source Python financial data interface library.

It provides public financial market data and alternative data from many sources,
especially for China markets, including A-share, Hong Kong stocks, U.S.
stocks, funds, futures, options, bonds, forex, macroeconomic indicators,
industry data, news, and cryptocurrency data.

AKShare is designed around a simple idea: write less, get more. Most public
interfaces return `pandas.DataFrame` objects and are meant to be called from the
top-level package.

## Install

Use pip:

`pip install akshare --upgrade`

## Python Entry Point

Import AKShare as:

```python
import akshare as ak
```

All public interfaces are exposed from the top-level package and are typically
called as:

```python
ak.function_name(...)
```

Do not assume users need to import submodules directly unless you are working on
AKShare internals.

## Documentation

Main entry points:

- `README.md`
- `docs/tutorial.md`
- `docs/data/`
- Online docs: `https://akshare.akfamily.xyz/`
- Data interface index: `https://akshare.akfamily.xyz/data/index.html`

The most important interface documentation is organized by category under
`docs/data/`.

## Interface Registry (Offline Search)

AKShare ships a small, bundled interface registry to help locate function
names without manually grepping through `docs/data/`:

- `ak.search(query)`: keyword search across interface names, descriptions,
  categories, and output columns. Returns a ranked `pandas.DataFrame`.
- `ak.interface_info(name)`: full metadata for one interface, including
  input parameters, output columns, and an example snippet.
- `ak.list_categories()`: lists all categories with interface counts.

This registry is entirely offline: its data ships inside the package and
no network request is made, so it is safe to call before deciding whether
a network call is worth making.

It is a keyword/substring matcher, not a semantic search engine. It is
best at pinpointing an interface by exact or near-exact name and at
narrowing candidates by keyword — it does not reliably understand natural
language intent.

```python
import akshare as ak

ak.search("A股 历史行情")
ak.interface_info("stock_zh_a_hist")
```

## Core Usage Pattern

Recommended workflow:

1. Identify the asset class or topic.
2. Find the matching documentation page under `docs/data/`.
3. Use the documented public function from `akshare`.
4. Inspect the returned `DataFrame` columns before downstream processing.

## Major Categories

Common data categories include:

- `stock`: stock market data, including A-share, Hong Kong stocks, U.S.
  stocks, spot data, historical data, and stock information
- `stock_feature`: rankings, capital flow, margin trading, technical data, and
  market feature datasets
- `stock_fundamental`: company fundamentals, financial statements, equity
  structure, and disclosures
- `fund`: public fund data, ETFs, rankings, holdings, managers, and net value
- `futures`: domestic and global futures market data
- `option`: option market data
- `bond`: bond and convertible bond data
- `index`: market index data
- `forex` and `fx`: foreign exchange data
- `macro` and `economic`: macroeconomic and statistical data
- `news`: financial news and information
- `crypto`: cryptocurrency market data
- `tool`: trading calendar and utility datasets

## Naming Conventions

AKShare function names usually encode both the topic and the data source.

Common suffixes include:

- `_em`: EastMoney
- `_sina`: Sina
- `_ths`: Tonghuashun
- `_cninfo`: CNINFO
- `_xq`: Xueqiu

Choose functions based on documented behavior, not only by suffix similarity.

## Return Types And Parameters

Common conventions:

- Most public interfaces return `pandas.DataFrame`.
- Date parameters are often strings such as `YYYYMMDD`.
- Symbol parameters may use market-specific codes.
- Returned column names are often Chinese because they follow upstream data
  semantics or established AKShare conventions.

## Important Notes For LLMs And Agents

When helping users with AKShare:

- Prefer documented public functions over internal helpers.
- Prefer top-level calls such as `ak.stock_zh_a_hist(...)` instead of submodule
  imports.
- Check `docs/data/` before guessing interface names.
- Many interfaces depend on upstream public websites and may break when
  upstream providers change.
- Data freshness can vary by source; if results look stale, verify whether the
  upstream source still provides updated data.
- Inspect returned columns before making assumptions about field names, units,
  or semantics.

## Example Function Families

Representative examples:

- `ak.stock_zh_a_spot_em()`
- `ak.stock_zh_a_hist(...)`
- `ak.stock_individual_info_em(...)`
- `ak.fund_open_fund_info_em(...)`
- `ak.futures_zh_spot()`
- `ak.option_current_em()`
- `ak.bond_zh_hs_cov_spot()`
- `ak.macro_china_cpi()`
- `ak.news_cctv()`
- `ak.crypto_hist(...)`

## Project Structure

AKShare is organized by domain subpackages under `akshare/`, but user-facing
calls are flat through the top-level package.

Important structure:

- Source code: `akshare/`
- Public API export hub: `akshare/__init__.py`
- Main documentation: `docs/`
- Data interface docs: `docs/data/`

## If Editing AKShare Source

When adding or fixing a public interface:

- Keep the external API stable whenever possible.
- Add the public import to `akshare/__init__.py`, or users cannot call it as
  `ak.function_name(...)`.
- Update the corresponding documentation under `docs/data/`.
- Update `docs/changelog.md` for user-visible fixes or new interfaces.

## Preferred Guidance Style

If you are an LLM or coding agent helping a user:

1. Clarify the market, asset class, and target dataset.
2. Identify the most likely documented interface.
3. Provide a minimal working AKShare example.
4. Explain likely parameter formats.
5. Mention upstream availability or freshness limits when relevant.