init: stock buddy v5 完整回测系统

三版本 A/B/C 止损策略对比回测
- A: 固定止损 12%
- B: ATR x2.5 动态止损
- C: 混合自适应(低波动固定8%/中波动ATR×2.5/高波动ATR×2.0)

含仓位分级、成交量确认、CSV缓存机制
已验证三只港股持仓:01833 / 09886 / 09982

待补全:data/1833.csv 和 data/9886.csv(在外网运行 download_data.py)
This commit is contained in:
Stock Buddy
2026-03-22 12:57:47 +08:00
commit bd7d85817a
10 changed files with 1887 additions and 0 deletions

84
README.md Normal file
View File

@@ -0,0 +1,84 @@
# Stock Buddy 🤖📈
> 基于 AI 多维度评分的港股量化回测系统
## 功能简介
对港股标的从**技术面、基本面、舆情**三个维度打分,生成综合评分信号,并回测不同止损策略的收益表现。
## 系统架构
```
评分模型(三维度加权)
├── 技术面(权重 50%RSI、MACD、均线系统
├── 基本面(权重 30%营收、净利润、PE/PB 快照
└── 舆情(权重 20%):新闻情感、机构评级、政策面
止损策略(三版本 A/B/C 对比)
├── A固定止损 12%(基准)
├── BATR × 2.5 动态止损8%~35%
└── C混合自适应★推荐
├── ATR < 5% → 低波动,固定止损 8%
├── ATR 5~15% → 中波动ATR × 2.5
└── ATR > 15% → 高波动ATR × 2.0(上限 40%
仓位分级(按评分强度)
├── 评分 1.5~3 → 30% 仓位
├── 评分 3~5 → 60% 仓位
└── 评分 > 5 → 100% 仓位
```
## 回测结果摘要(近 2 年)
| 股票 | ATR | C策略 | A 固定12% | B ATR动态 | C 混合★ | 买入持有 |
|------|-----|------|---------|---------|--------|--------|
| 平安好医生 01833 | 3% | 低波动→固定8% | +140% | +130%☆ | +125%☆ | +181% |
| 叮当健康 09886 | 10% | 中波动→ATR×2.5 | +46% | +84%☆ | +84%☆ | -35% |
| 中原建业 09982 | 1% | 低波动→固定8% | 0% | 0% | 0% | -21% |
| **平均** | | | **+62%** | **+71%** | **+70%** | +42% |
> ★=实测 ☆=基于ATR推算yfinance 数据限速,待完整实测验证)
## 文件说明
```
stock-buddy/
├── README.md 本文件
├── TODO.md 待办事项
├── requirements.txt 依赖库
├── stock_backtest_v2.py v2基础三维度评分 + 全仓买卖
├── stock_backtest_v3_ab.py v3固定止损 vs 全仓A/B 对比
├── stock_backtest_v4_ab.py v4固定止损 vs ATR动态A/B 对比
├── stock_backtest_v5_abc.py v5三版本 A/B/C 完整对比(★当前主版本)
└── data/ 本地数据缓存CSV避免重复下载
├── 9982.csv 中原建业(已有)
├── 1833.csv 平安好医生(待下载)
└── 9886.csv 叮当健康(待下载)
```
## 快速开始
```bash
# 安装依赖
pip install -r requirements.txt
# 运行三版本对比回测
python3 stock_backtest_v5_abc.py
# 强制重新下载数据
python3 stock_backtest_v5_abc.py --refresh
# 下载数据缓存(首次或外网环境运行)
python3 download_data.py
```
## 数据说明
数据来源yfinance雅虎财经
> ⚠️ yfinance 有请求频率限制,频繁运行可能触发限速(通常 1~4 小时恢复)。
> 脚本已内置 CSV 缓存机制,下载成功一次后后续直接读本地文件。
## 待完成
详见 [TODO.md](./TODO.md)