本地化投资分析自动化系统 - 整合富途数据、技术分析、图表生成和报告输出
语言: 简体中文 | English | 繁體中文 (台灣) | 繁體中文 (香港) | 日本語
- 数据采集: 富途 OpenAPI 持仓/交易/K线 + akshare A股数据
- 深度分析: 技术面 + 基本面 + 行业 + 消息综合评分
- 技术分析: MA/MACD/RSI/布林带/OBV/VCP 指标计算
- 形态识别: VCP (波动收缩形态) 自动检测与评分
- 组合分析: 仓位权重、风险评估、HHI 集中度指数
- 交易分析: 配对交易匹配、胜率/盈亏比/手续费统计、Excel+Word 报告
- AI 投资教练: 基于 V10.10 框架的 LLM 智能建议,自动嵌入报告
- 图表生成: K线图 + 均线 + 成交量 (mplfinance)
- 报告输出: Markdown/JSON/HTML/Word/Excel 多格式报告
- Skills 系统: 分析师/风控/交易指导/市场观察/投资教练多角色
- Claude 命令: 便捷的 Slash 命令快速操作
- CLI 工具: 完整的命令行交互界面
- Python 3.12+ (推荐使用 asdf 管理)
- PostgreSQL 17+
- 富途牛牛客户端 (用于 API 连接)
# 克隆项目
git clone https://github.com/superstrings/investment-analyzer.git
cd investment-analyzer
# 设置 Python 版本 (使用 asdf)
asdf install python 3.12.7
asdf local python 3.12.7
# 创建虚拟环境
python -m venv .venv
source .venv/bin/activate
# 安装依赖
pip install -r requirements.txt
# 配置环境变量
cp .env.example .env
# 编辑 .env 填入数据库连接信息和富途密码# 创建数据库
python scripts/init_db.py create-db
# 初始化表结构
python scripts/init_db.py init
# 填充测试数据 (可选)
python scripts/init_db.py seed复制 config/users.yaml.example 至 config/users.yaml 并编辑:
users:
- username: your_name
futu:
host: 127.0.0.1
port: 11111
trade_env: REAL # 或 SIMULATE
security_firm: FUTUINC
markets: [HK, US]
settings:
default_kline_days: 120详细指南请参阅 docs/guide/README.md
# 同步所有数据
python main.py sync all -u your_name
# 深度分析 (单只股票)
python main.py deep-analyze -u your_name -c HK.00700
# 深度分析 (批量 - 按市场)
python main.py deep-analyze -u your_name --market HK --batch
python main.py deep-analyze -u your_name --market US --batch
python main.py deep-analyze -u your_name --market A --batch
# 查看持仓
python main.py account info -u your_name在 Claude Code 中可使用以下命令:
| 命令 | 说明 |
|---|---|
/daily-analysis |
每日分析 (盘前/盘后) |
/deep-analyze HK |
深度分析指定市场 |
/market-summary |
三市场汇总报告 |
/sync-all |
同步所有数据 |
/analyze-trades |
交易分析 + AI 投资教练点评 |
/investment-coach |
投资教练 (基于 V10.10 框架) |
# 查看帮助
python main.py --help
# 数据同步
python main.py sync all -u your_name # 同步所有数据
python main.py sync positions -u your_name # 仅同步持仓
python main.py sync klines -u your_name --codes "HK.00700,US.NVDA"
# 图表生成
python main.py chart single --code HK.00700 --days 120
python main.py chart positions -u your_name
# 报告生成
python main.py report portfolio -u your_name
python main.py report technical -u your_name --codes "HK.00700"
# 交易分析 (年度/自定义时段)
python main.py trade-analyze -u your_name --start 2025-01-01 --end 2025-12-31
python main.py trade-analyze -u your_name --start 2025-01-01 --end 2025-12-31 --output-context
# 输出: Excel 交易记录 + Word 分析报告 + AI 上下文文件
# 账户信息
python main.py account list -u your_name
python main.py account info -u your_name# 技术分析
from analysis import RSI, MACD, detect_vcp
from fetchers import KlineFetcher
fetcher = KlineFetcher()
df = fetcher.fetch("HK.00700", days=120).df
rsi = RSI(14).calculate(df)
vcp_result = detect_vcp(df)
if vcp_result.is_vcp:
print(f"VCP 得分: {vcp_result.score}")
# 组合分析
from analysis import PortfolioAnalyzer, PositionData
positions = [
PositionData(market="HK", code="00700", qty=100, cost_price=350, market_price=380),
]
result = PortfolioAnalyzer().analyze(positions)
print(f"总盈亏: {result.summary.total_pl_value}")
# 报告生成
from reports import ReportGenerator, ReportType
generator = ReportGenerator()
report = generator.generate_portfolio_report(result.to_dict())
report.save("reports/output/portfolio.md")investment-analyzer/
├── analysis/ # 分析模块
│ ├── indicators/ # 技术指标 (MA, RSI, MACD, BB, OBV, VCP)
│ ├── portfolio.py # 组合分析
│ └── technical.py # 技术分析器
├── charts/ # 图表生成
│ ├── generator.py # K线图生成器
│ └── styles.py # 图表样式
├── config/ # 配置管理
│ ├── settings.py # 全局设置
│ └── users.py # 用户配置
├── db/ # 数据库
│ ├── models.py # SQLAlchemy 模型
│ ├── database.py # 连接管理
│ └── migrations/ # SQL 迁移脚本
├── fetchers/ # 数据采集
│ ├── futu_fetcher.py # 富途 API
│ └── kline_fetcher.py# K线数据 (akshare)
├── reports/ # 报告生成
│ ├── generator.py # 报告生成器
│ └── templates/ # Jinja2 模板
├── services/ # 业务服务
│ ├── sync_service.py # 数据同步
│ └── chart_service.py# 图表服务
├── skills/ # Claude Code Skills
│ ├── analyst/ # 分析师 (OBV + VCP)
│ ├── risk_controller/# 风控师
│ ├── trading_coach/ # 交易导师
│ ├── market_observer/# 市场观察员
│ ├── deep_analyzer/ # 深度分析
│ ├── trade_analyzer/ # 交易分析 (配对交易+统计+报告)
│ └── shared/ # 共享组件
├── scripts/ # 脚本工具
│ ├── init_db.py # 数据库初始化
│ └── import_csv.py # CSV 导入
├── tests/ # 测试用例
├── docs/ # 文档
├── main.py # CLI 入口
└── CLAUDE.md # Claude Code 指令
| 组件 | 技术 |
|---|---|
| 语言 | Python 3.12+ |
| 数据库 | PostgreSQL 17 |
| ORM | SQLAlchemy 2.0 |
| 数据采集 | futu-api, akshare |
| 图表 | mplfinance, matplotlib |
| 报告 | Jinja2, python-docx, openpyxl |
| 文档转换 | pandoc (md → docx) |
| CLI | Click |
| 测试 | pytest |
| 指标 | 类 | 说明 |
|---|---|---|
| SMA/EMA/WMA | MA, SMA, EMA, WMA |
移动平均线 |
| RSI | RSI, StochasticRSI |
相对强弱指数 |
| MACD | MACD, MACDCrossover |
指数平滑异同移动平均 |
| 布林带 | BollingerBands, BollingerBandsSqueeze |
波动率指标 |
| OBV | OBV, OBVDivergence |
能量潮 |
| VCP | VCP, VCPScanner |
波动收缩形态 |
VCP (Volatility Contraction Pattern) 是 Mark Minervini 提出的技术形态:
- 价格收缩至少 2-3 次
- 每次收缩深度递减
- 成交量逐渐萎缩
- 接近枢轴价位
from analysis import detect_vcp, VCPConfig
config = VCPConfig(
min_contractions=2,
max_first_depth_pct=35.0,
depth_decrease_ratio=0.7,
)
result = detect_vcp(df, config)
# result.score: 0-100 评分| 类型 | 说明 |
|---|---|
| Portfolio | 投资组合分析报告 |
| Technical | 技术分析报告 |
| Daily | 每日投资简报 |
| Weekly | 周度投资回顾 |
| Trade Analysis | 年度/时段交易分析 (Excel+Word) |
支持输出格式: Markdown, JSON, HTML, Word (docx), Excel (xlsx)
交易分析功能提供完整的交易复盘:
- 配对交易匹配: 自动匹配买入卖出形成完整交易
- 统计指标: 胜率、盈亏比、平均持仓、手续费统计
- 市场分布: 港股/美股/A股分别统计
- 盈亏分布: 按收益率区间统计
- AI 投资教练: 基于 V10.10 框架的 LLM 智能建议
# 生成 2025 年交易分析报告
python main.py trade-analyze -u your_name --start 2025-01-01 --end 2025-12-31
# 输出文件:
# - output/2025年美港股交易记录.xlsx # 交易明细
# - output/2025年美港股交易分析报告.docx # 分析报告
# - output/2025年交易分析上下文.md # AI 上下文# 运行所有测试
python -m pytest tests/ -v
# 运行覆盖率测试
python -m pytest tests/ -v --cov=.
# 运行特定模块测试
python -m pytest tests/test_portfolio.py -v当前测试覆盖: 1097 tests passed
# 格式化代码
python -m black .
python -m isort .
# 代码检查
python -m flake8 .本项目使用 "自动化工厂" 开发模式,集成 Claude Code 进行 AI 辅助开发:
CLAUDE.md: Claude Code 核心指令PLANNING.md: 项目规划总览TASKS.md: 任务追踪 (JSON 格式).claude/: 子代理和命令定义
详见 开发文档
欢迎贡献代码!请查阅 CONTRIBUTING.md 了解贡献指南。
参与项目请遵守我们的 行为准则。
MIT License - 详见 LICENSE
- futu-api - 富途 OpenAPI
- akshare - 股票数据接口
- mplfinance - 金融图表
- Claude Code - AI 辅助开发