{"skill":{"slug":"aakshare","displayName":"AKShare","summary":"AKShare 开源金融数据接口库 - 支持A股、港股、美股、期货、期权、基金、债券、外汇、宏观数据，免费无需API Key。","description":"---\nname: akshare\ndescription: AKShare 开源金融数据接口库 - 支持A股、港股、美股、期货、期权、基金、债券、外汇、宏观数据，免费无需API Key。\nversion: 1.2.0\nhomepage: https://github.com/akfamily/akshare\nmetadata: {\"clawdbot\":{\"emoji\":\"💹\",\"requires\":{\"bins\":[\"python3\"]}}}\n---\n\n# AKShare（开源金融数据API库）\n\n[AKShare](https://github.com/akfamily/akshare) 是一个全面的免费Python金融数据API库，覆盖A股、港股、美股、期货、期权、基金、债券、外汇和宏观经济数据。无需注册或API Key，所有函数返回 `pandas.DataFrame`。\n\n> 文档：https://akshare.akfamily.xyz/\n\n## 安装\n\n```bash\npip install akshare --upgrade\n```\n\n需要 Python 3.9+（64位）。\n\n## 基本用法\n\n```python\nimport akshare as ak\n\n# 获取平安银行日K线数据\ndf = ak.stock_zh_a_hist(symbol=\"000001\", period=\"daily\", start_date=\"20240101\", end_date=\"20240630\")\nprint(df)\n```\n\n## 函数命名规则\n\n```\n{asset_type}_{market}_{data_type}_{data_source}\n```\n\n- **Asset type**: `stock` (stocks), `futures` (futures), `fund` (funds), `bond` (bonds), `forex` (foreign exchange), `option` (options), `macro` (macroeconomics), `index` (indices)\n- **Market**: `zh` (China), `us` (United States), `hk` (Hong Kong), or exchange codes\n- **Data type**: `spot` (real-time), `hist` (historical), `daily` (daily bars), `minute` (minute bars)\n- **Data source**: `em` (East Money), `sina` (Sina Finance), exchange abbreviations\n\n---\n\n## 股票数据（A股）\n\n### 实时行情 — 全部A股\n\n```python\nimport akshare as ak\n\n# 获取全部A股实时行情\ndf = ak.stock_zh_a_spot_em()\n# 返回字段: 序号、代码、名称、最新价、涨跌幅、涨跌额、成交量、成交额、振幅、最高、最低、今开、昨收、量比、换手率、市盈率、市净率 ...\n```\n\n### 历史K线数据\n\n```python\n# 获取指定股票历史日K线数据\ndf = ak.stock_zh_a_hist(\n    symbol=\"000001\",       # 股票代码（不带前缀）\n    period=\"daily\",        # 周期: \"daily\"(日), \"weekly\"(周), \"monthly\"(月)\n    start_date=\"20240101\", # 开始日期，格式YYYYMMDD\n    end_date=\"20240630\",   # 结束日期\n    adjust=\"\"              # 复权: \"\"(不复权), \"qfq\"(前复权), \"hfq\"(后复权)\n)\n# 返回字段: 日期、开盘、收盘、最高、最低、成交量、成交额、振幅、涨跌幅、涨跌额、换手率\n```\n\n### 分钟级K线数据\n\n```python\n# 获取分钟级K线数据\ndf = ak.stock_zh_a_hist_min_em(\n    symbol=\"000001\",\n    period=\"5\",            # 分钟间隔: \"1\", \"5\", \"15\", \"30\", \"60\"\n    start_date=\"2024-01-02 09:30:00\",\n    end_date=\"2024-01-02 15:00:00\",\n    adjust=\"\"              # 复权类型\n)\n```\n\n### 个股基本信息\n\n```python\n# 获取个股基本信息\ndf = ak.stock_individual_info_em(symbol=\"000001\")\n# 返回字段: 总市值、流通市值、行业、上市时间、股票代码、股票简称、总股本、流通股 ...\n```\n\n---\n\n## 港股数据\n\n```python\n# 港股实时行情\ndf = ak.stock_hk_spot_em()\n\n# 港股历史K线数据\ndf = ak.stock_hk_hist(\n    symbol=\"00700\",        # 腾讯控股\n    period=\"daily\",        # 日线\n    start_date=\"20240101\",\n    end_date=\"20240630\",\n    adjust=\"qfq\"           # 前复权\n)\n```\n\n---\n\n## 美股数据\n\n```python\n# 美股日线数据\ndf = ak.stock_us_daily(symbol=\"AAPL\", adjust=\"qfq\")\n\n# 美股实时行情\ndf = ak.stock_us_spot_em()\n```\n\n---\n\n## 指数数据\n\n```python\n# A股指数历史数据 (e.g., Shanghai Composite Index 000001)\ndf = ak.stock_zh_index_daily_em(symbol=\"sh000001\")\n\n# 指数成分股 (e.g., CSI 300)\ndf = ak.index_stock_cons_csindex(symbol=\"000300\")\n```\n\n---\n\n## 基金数据\n\n```python\n# ETF实时行情\ndf = ak.fund_etf_spot_em()\n\n# ETF历史K线数据\ndf = ak.fund_etf_hist_em(\n    symbol=\"510300\",       # 沪深300ETF\n    period=\"daily\",\n    start_date=\"20240101\",\n    end_date=\"20240630\",\n    adjust=\"qfq\"\n)\n\n# 开放式基金每日净值\ndf = ak.fund_open_fund_daily_em(symbol=\"000001\")\n\n# 基金评级\ndf = ak.fund_rating_all()\n```\n\n---\n\n## 期货数据\n\n```python\n# 期货日线数据（按交易所汇总）\nfrom akshare import get_futures_daily\ndf = get_futures_daily(start_date=\"20240101\", end_date=\"20240102\", market=\"CFFEX\")\n# 交易所选项: \"CFFEX\"(中金所), \"SHFE\"(上期所), \"DCE\"(大商所), \"CZCE\"(郑商所), \"INE\"(上海国际能源交易中心), \"GFEX\"(广期所)\n\n# 期货实时行情\ndf = ak.futures_zh_spot()\n\n# 期货库存数据\ndf = ak.futures_inventory_99(symbol=\"豆一\")\n```\n\n---\n\n## 期权数据\n\n```python\n# 交易所期权历史数据\ndf = ak.option_hist_dce(symbol=\"豆粕期权\")\n\n# 上证50ETF期权\ndf = ak.option_sse_spot_price(symbol=\"510050\")\n```\n\n---\n\n## 债券数据\n\n```python\n# 可转债列表\ndf = ak.bond_zh_cov()\n\n# 可转债历史K线数据\ndf = ak.bond_zh_hs_cov_daily(symbol=\"sz123456\")\n\n# 中国债券现货报价\ndf = ak.bond_spot_quote()\n```\n\n---\n\n## 外汇数据\n\n```python\n# 外汇实时行情（东方财富）\ndf = ak.forex_spot_em()\n\n# 外汇即期报价（中国外汇交易中心）\ndf = ak.fx_spot_quote()\n\n# 外汇掉期报价\ndf = ak.fx_swap_quote()\n```\n\n---\n\n## 宏观经济数据\n\n```python\n# 中国CPI年度数据\ndf = ak.macro_china_cpi_yearly()\n\n# 中国GDP年度数据\ndf = ak.macro_china_gdp_yearly()\n\n# 中国PMI数据\ndf = ak.macro_china_pmi()\n\n# 美国非农就业数据\ndf = ak.macro_usa_non_farm()\n\n# 美国CPI月度数据\ndf = ak.macro_usa_cpi_monthly()\n```\n\n---\n\n## 新闻与舆情\n\n```python\n# 个股财经新闻（东方财富）\ndf = ak.stock_news_em(symbol=\"000001\")\n\n# 央视新闻\ndf = ak.news_cctv(date=\"20240101\")\n```\n\n---\n\n## 完整示例：下载数据并绘制K线图\n\n```python\nimport akshare as ak\nimport pandas as pd\nimport mplfinance as mpf  # pip install mplfinance\n\n# 获取贵州茅台前复权日K线数据\ndf = ak.stock_zh_a_hist(\n    symbol=\"600519\",\n    period=\"daily\",\n    start_date=\"20240101\",\n    end_date=\"20240630\",\n    adjust=\"qfq\"\n)\n\n# 设置日期索引并重命名列为英文（mplfinance要求）\ndf.index = pd.to_datetime(df[\"日期\"])  # 设置日期为索引\ndf.rename(columns={\n    \"开盘\": \"Open\",    # 开盘价\n    \"收盘\": \"Close\",   # 收盘价\n    \"最高\": \"High\",    # 最高价\n    \"最低\": \"Low\",     # 最低价\n    \"成交量\": \"Volume\" # 成交量\n}, inplace=True)\n\n# 绘制K线图（含5/10/20日均线和成交量）\nmpf.plot(df, type=\"candle\", mav=(5, 10, 20), volume=True)\n```\n\n## 使用技巧\n\n- **无需API Key或注册** — 开箱即用。\n- 所有函数返回 **pandas DataFrame** — 可直接用于分析、导出和可视化。\n- A股数据列名为**中文**；美股/港股数据列名为英文。\n- 使用 `--upgrade` 保持akshare最新版 — 由于上游数据源变化，接口更新频繁。\n- 非Python用户可使用 [AKTools](https://aktools.readthedocs.io/) HTTP API封装。\n- 数据仅供**学术研究**使用 — 不构成投资建议。\n- 完整API参考：https://akshare.akfamily.xyz/data/index.html\n\n---\n\n## 进阶示例\n\n### 批量下载多只股票\n\n```python\nimport akshare as ak\nimport pandas as pd\n\n# 定义要下载的股票列表\nstock_list = [\"000001\", \"600519\", \"300750\", \"601318\", \"000858\"]\n\nall_data = {}\nfor symbol in stock_list:\n    # 下载每只股票的前复权日K线数据\n    df = ak.stock_zh_a_hist(\n        symbol=symbol,\n        period=\"daily\",\n        start_date=\"20240101\",\n        end_date=\"20240630\",\n        adjust=\"qfq\"\n    )\n    df[\"股票代码\"] = symbol  # 添加股票代码列，便于后续合并\n    all_data[symbol] = df\n    print(f\"已下载 {symbol}，共 {len(df)} 条记录\")\n\n# 合并所有股票数据为一个大的DataFrame\ncombined = pd.concat(all_data.values(), ignore_index=True)\ncombined.to_csv(\"multi_stock_data.csv\", index=False)\nprint(f\"合并总计: {len(combined)} 条记录\")\n```\n\n### 计算技术指标（均线、MACD、RSI）\n\n```python\nimport akshare as ak\nimport pandas as pd\nimport numpy as np\n\n# 获取贵州茅台前复权日K线数据\ndf = ak.stock_zh_a_hist(symbol=\"600519\", period=\"daily\",\n                         start_date=\"20240101\", end_date=\"20241231\", adjust=\"qfq\")\n\n# 将收盘价转换为浮点数 (收盘 = close price)\ndf[\"收盘\"] = df[\"收盘\"].astype(float)\n\n# 计算均线\ndf[\"MA5\"] = df[\"收盘\"].rolling(window=5).mean()    # 5日均线\ndf[\"MA10\"] = df[\"收盘\"].rolling(window=10).mean()   # 10日均线\ndf[\"MA20\"] = df[\"收盘\"].rolling(window=20).mean()   # 20日均线\ndf[\"MA60\"] = df[\"收盘\"].rolling(window=60).mean()   # 60日均线\n\n# 计算MACD指标\nema12 = df[\"收盘\"].ewm(span=12, adjust=False).mean()  # 12日指数移动平均\nema26 = df[\"收盘\"].ewm(span=26, adjust=False).mean()  # 26日指数移动平均\ndf[\"DIF\"] = ema12 - ema26                              # 快线（DIF）\ndf[\"DEA\"] = df[\"DIF\"].ewm(span=9, adjust=False).mean() # 慢线（DEA）\ndf[\"MACD\"] = 2 * (df[\"DIF\"] - df[\"DEA\"])               # MACD柱\n\n# 计算RSI指标（14日）\ndelta = df[\"收盘\"].diff()\ngain = delta.where(delta > 0, 0)       # 上涨幅度\nloss = -delta.where(delta < 0, 0)      # 下跌幅度\navg_gain = gain.rolling(window=14).mean()\navg_loss = loss.rolling(window=14).mean()\nrs = avg_gain / avg_loss\ndf[\"RSI14\"] = 100 - (100 / (1 + rs))   # RSI值\n\n# 计算布林带（20日）\ndf[\"BOLL_MID\"] = df[\"收盘\"].rolling(window=20).mean()           # 中轨\ndf[\"BOLL_UP\"] = df[\"BOLL_MID\"] + 2 * df[\"收盘\"].rolling(window=20).std()  # 上轨\ndf[\"BOLL_DN\"] = df[\"BOLL_MID\"] - 2 * df[\"收盘\"].rolling(window=20).std()  # 下轨\n\n# 展示：日期、收盘价及各技术指标\nprint(df[[\"日期\", \"收盘\", \"MA5\", \"MA20\", \"DIF\", \"DEA\", \"MACD\", \"RSI14\"]].tail(10))\n```\n\n### 筛选涨停股\n\n```python\nimport akshare as ak\n\n# 获取全部A股实时行情\ndf = ak.stock_zh_a_spot_em()\n\n# 筛选涨幅>9.5%的股票（接近涨停）\ndf[\"涨跌幅\"] = df[\"涨跌幅\"].astype(float)  # 涨跌幅 = change percentage\nlimit_up = df[df[\"涨跌幅\"] >= 9.5].sort_values(\"涨跌幅\", ascending=False)\nprint(f\"今日涨停/接近涨停股票: 共 {len(limit_up)} 只\")\n# 展示：代码、名称、最新价、涨跌幅、成交额、换手率\nprint(limit_up[[\"代码\", \"名称\", \"最新价\", \"涨跌幅\", \"成交额\", \"换手率\"]].head(20))\n```\n\n### 获取龙虎榜数据\n\n```python\nimport akshare as ak\n\n# 获取龙虎榜详细数据\ndf = ak.stock_lhb_detail_em(start_date=\"20240101\", end_date=\"20240131\")\nprint(df.head())\n\n# 获取龙虎榜营业部排名\ndf_dept = ak.stock_lhb_hyyyb_em(start_date=\"20240101\", end_date=\"20240131\")\nprint(df_dept.head())\n```\n\n### 获取融资融券数据\n\n```python\nimport akshare as ak\n\n# 获取沪深融资融券汇总数据\ndf = ak.stock_margin_sse(start_date=\"20240101\", end_date=\"20240630\")\nprint(df.head())\n\n# 获取个股融资融券明细\ndf_detail = ak.stock_margin_detail_sse(date=\"20240102\")\nprint(df_detail.head())\n```\n\n### 获取北向资金（陆港通）数据\n\n```python\nimport akshare as ak\n\n# 获取北向资金历史数据\ndf = ak.stock_hsgt_hist_em(symbol=\"北向资金\")  # 北向资金 = Northbound capital\nprint(df.tail(10))\n\n# 获取北向资金持股明细\ndf_hold = ak.stock_hsgt_hold_stock_em(market=\"北向\", indicator=\"今日排行\")  # 北向 = Northbound, 今日排行 = Today's ranking\nprint(df_hold.head(20))\n```\n\n### 获取股东数据\n\n```python\nimport akshare as ak\n\n# 获取前十大股东\ndf = ak.stock_gdfx_top_10_em(symbol=\"600519\", date=\"20231231\")\nprint(df)\n\n# 获取前十大流通股东\ndf_float = ak.stock_gdfx_free_top_10_em(symbol=\"600519\", date=\"20231231\")\nprint(df_float)\n```\n\n### 获取板块行情数据\n\n```python\nimport akshare as ak\n\n# 获取行业板块行情\ndf_industry = ak.stock_board_industry_name_em()\nprint(df_industry.head(20))\n\n# 获取概念板块行情\ndf_concept = ak.stock_board_concept_name_em()\nprint(df_concept.head(20))\n\n# 获取特定板块成分股\ndf_stocks = ak.stock_board_industry_cons_em(symbol=\"银行\")  # 银行 = Banking\nprint(df_stocks)\n```\n\n### 获取限售解禁数据\n\n```python\nimport akshare as ak\n\n# 获取限售解禁数据\ndf = ak.stock_restricted_release_queue_em(symbol=\"全部A股\")  # 全部A股 = All A-shares\nprint(df.head(20))\n```\n\n### 获取市场资金流向\n\n```python\nimport akshare as ak\n\n# 获取大盘资金流向\ndf = ak.stock_market_fund_flow()\nprint(df.tail(10))\n\n# 获取个股资金流向\ndf_stock = ak.stock_individual_fund_flow(stock=\"000001\", market=\"sz\")\nprint(df_stock.tail(10))\n```\n\n### 完整示例：多因子选股\n\n```python\nimport akshare as ak\nimport pandas as pd\n\n# 步骤1：获取全部A股实时行情\ndf = ak.stock_zh_a_spot_em()\n\n# 步骤2：转换数据类型\nfor col in [\"市盈率-动态\", \"市净率\", \"换手率\", \"涨跌幅\", \"成交额\"]:\n    df[col] = pd.to_numeric(df[col], errors=\"coerce\")\n\n# 步骤3：多因子筛选\n# 条件1：PE 在5-30之间（排除亏损和高估值）\n# 条件2：PB 在0.5-5之间\n# 条件3：换手率 > 1%（合理流动性）\n# 条件4：涨跌幅在-3%到3%之间（排除异常波动）\nfiltered = df[\n    (df[\"市盈率-动态\"] > 5) & (df[\"市盈率-动态\"] < 30) &\n    (df[\"市净率\"] > 0.5) & (df[\"市净率\"] < 5) &\n    (df[\"换手率\"] > 1) &\n    (df[\"涨跌幅\"] > -3) & (df[\"涨跌幅\"] < 3)\n].copy()\n\n# 步骤4：按PE排序，选取最低PE的前20只股票\nresult = filtered.sort_values(\"市盈率-动态\").head(20)\nprint(f\"筛选出 {len(result)} 只股票:\")\nprint(result[[\"代码\", \"名称\", \"最新价\", \"市盈率-动态\", \"市净率\", \"换手率\", \"涨跌幅\"]])\n```\n\n---\n\n## 🤖 AI Agent 高阶使用指南\n\n对于 AI Agent，在使用 AKShare 时应遵循以下高阶策略和最佳实践，以确保数据的准确性和任务的高效完成：\n\n### 1. 数据校验与错误处理\n在获取数据后，AI 应当主动检查数据格式是否符合预期，以及是否存在缺失值（NaN）。\n```python\nimport akshare as ak\nimport pandas as pd\n\ndef safe_get_stock_data(symbol=\"600519\"):\n    try:\n        df = ak.stock_zh_a_hist(symbol=symbol, period=\"daily\", start_date=\"20230101\", adjust=\"qfq\")\n        if df.empty:\n            return \"获取的数据为空，请检查股票代码或日期范围。\"\n        # 填充或丢弃缺失值\n        df = df.dropna()\n        return df.head()\n    except Exception as e:\n        return f\"获取数据时发生错误: {str(e)}\"\n\nprint(safe_get_stock_data())\n```\n\n### 2. 跨市场数据聚合分析\nAI 经常需要进行宏观经济分析或跨市场对比。以下演示如何组合多接口数据进行分析：\n```python\nimport akshare as ak\nimport pandas as pd\n\n# 1. 获取 A股 指数数据（上证指数）\ndf_sh = ak.stock_zh_index_daily_em(symbol=\"sh000001\")\ndf_sh = df_sh[['date', 'close']].rename(columns={'close': 'SH_Close', 'date': 'Date'})\n\n# 2. 获取 美股 指数数据（标普500）\ndf_spx = ak.index_us_stock_sina(symbol=\".INX\")\ndf_spx = df_spx[['date', 'close']].rename(columns={'close': 'SPX_Close', 'date': 'Date'})\n\n# 3. 合并数据进行趋势对比\ndf_merged = pd.merge(df_sh, df_spx, on='Date', how='inner')\nprint(\"中美股市指数对比:\")\nprint(df_merged.tail())\n```\n\n### 3. 构建动态监控指标\nAI 可以定期调用以下代码来获取实时的异动信息（如涨跌停板），从而做出及时的策略响应：\n```python\nimport akshare as ak\n\n# 获取当日涨停板数据\ndf_limit_up = ak.stock_zt_pool_em(date=\"20231010\")  # 可替换为当日日期，如 \"20240101\"\nif not df_limit_up.empty:\n    print(f\"发现 {len(df_limit_up)} 只涨停股票！\")\n    # 筛选连板数大于等于3的强势股\n    strong_stocks = df_limit_up[df_limit_up['连板数'] >= 3]\n    print(\"强势连板股：\")\n    print(strong_stocks[['代码', '名称', '最新价', '连板数']])\nelse:\n    print(\"未获取到涨停板数据，可能是非交易日。\")\n```\n\n---\n\n## 社区与支持\n\n由 **大佬量化** 维护 — 量化交易教学与策略研发团队。\n\n微信客服: **bossquant1** · [Bilibili](https://space.bilibili.com/48693330) · 搜索 **大佬量化** — 微信公众号 / Bilibili / 抖音\n","tags":{"latest":"1.0.3"},"stats":{"comments":0,"downloads":1993,"installsAllTime":10,"installsCurrent":10,"stars":8,"versions":4},"createdAt":1773222087327,"updatedAt":1778491828096},"latestVersion":{"version":"1.0.3","createdAt":1774260401740,"changelog":"- Added a demo directory with sample code and documentation (demo_project/README.md, demo_project/demo.py).\n- Updated documentation files (README.md, SKILL.md) with minor improvements.\n- Metadata files were updated (metadata.json, _meta.json).","license":"MIT-0"},"metadata":{"setup":[],"os":null,"systems":null},"owner":{"handle":"coderwpf","userId":"s170h18zjksf6t82v1asyztbz583hffb","displayName":"coderwpf","image":"https://avatars.githubusercontent.com/u/134041140?v=4"},"moderation":null}