# CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

## Project Overview

AI 协助分析交易数据和回测的仓库。主要用来做策略回测、行情分析、期权定价、资产配置等量化相关操作。

## Python 执行环境

**仅允许使用 Docker 运行 Python**，严禁使用设备本地 Python：

- **⚠️ 严禁直接 `docker run python:3.11-slim`**，必须先执行 `docker images` 确认本地已有镜像，优先复用
- 无可用镜像时才允许拉取，默认拉取 `python:3.11-slim`
- 示例: `docker images | grep python` 查看已有镜像，再用已有镜像执行

## 环境搭建（首次使用）

### 1. 创建容器

检查是否已有 `finance-talk` 容器（名称固定，在终端中运行）：

```bash
docker ps -a --filter "name=finance-talk" --format "{{.Names}}"
```

若无输出，则按以下步骤创建：

```bash
# 查看已有 Python 镜像，优先复用
docker images | grep python

# 无可用镜像时才拉取（默认 python:3.11-slim）
docker pull python:3.11-slim

# 创建并启动容器（映射当前目录到 /workspace）
docker run -d \
  --name finance-talk \
  -v $(pwd):/workspace \
  -w /workspace \
  python:3.13.11-slim \
  sleep infinity
```

### 2. 安装依赖包

```bash
docker exec finance-talk pip install tushare akshare
```

### 3. 验证

```bash
docker exec finance-talk python -c "import tushare; import akshare; print('OK')"
```

### 4. 日常使用

Python 脚本通过 `docker exec` 在容器中执行：

```bash
docker exec finance-talk python your_script.py
```

若容器已存在但未运行，先启动：

```bash
docker start finance-talk
```

## Data Sources

按优先级排序：

1. **Tushare Pro** — 优先使用，数据最全（股票、期货、指数、期权等）
   - Token: `76efd8465f9f2591aa42a385268e06acf6b80b7a15be2267ad2281b7`
   - 用法: `import tushare as ts; ts.set_token('...'); pro = ts.pro_api()`
2. **akshare** — 备选，无需 token，覆盖面广
   - A股指数: `ak.stock_zh_index_daily(symbol="sh000300")`
   - 全球指数: `ak.index_global_hist_em(symbol="纳斯达克")`
   - 个股: `ak.stock_zh_a_hist(symbol="600030", adjust="qfq")`
   - 期货主连: `ak.futures_main_sina(symbol="FG0")`
3. **yfinance** — 海外市场（注意频次限制，需加 sleep）

## Conventions

- 期货主连代码格式: `FG0` (品种代码 + "0")
- A股个股复权方式: 前复权 (`adjust="qfq"`)
