# stock **Repository Path**: llyb120/stock ## Basic Information - **Project Name**: stock - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-10-08 - **Last Updated**: 2026-02-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ETF轮动策略回测系统 (Go语言版) 基于动量的ETF轮动策略回测系统,从东方财富网爬取数据并进行策略回测。 ## 功能特点 - 🕷️ 从东方财富网爬取ETF周线数据(2016-2025) - 📊 基于3周和4周动量选择最强的2个ETF - 💰 自动调仓,每个ETF最多50%仓位 - 📈 计算收益率、夏普比率、最大回撤等指标 - 📉 绘制资金曲线和回撤曲线(HTML交互式图表) - 💾 数据保存为Excel,避免重复爬取 ## ETF池 - 518880 (黄金ETF) - 159941 (纳指ETF) - 510300 (沪深300ETF) - 588050 (科创50ETF) - 159915 (创业板ETF) ## 安装依赖 首先确保已安装Go语言(1.21或更高版本),然后安装依赖包: ```bash go mod tidy ``` ## 使用方法 ### 1. 首次运行:爬取数据 ```bash go run . scrape ``` 这将从东方财富网爬取ETF周线数据并保存到 `etf_weekly_data.xlsx` ### 2. 运行回测 ```bash go run . backtest ``` 这将: - 加载已保存的ETF数据 - 运行轮动策略回测 - 计算绩效指标 - 生成收益曲线图 (`equity_curve.html`) - 保存回测结果 (`backtest_results.xlsx`) ### 3. 查看交易记录和持仓 ```bash # 查看交易汇总统计 go run view_trades.go summary # 查看最近20笔交易 go run view_trades.go trades # 查看最近10周持仓 go run view_trades.go positions ``` ## 策略说明 ### 轮动逻辑(新版) 1. **计算动量**:每周收盘时,计算每个ETF的短期和长期涨幅(包含当周) 2. **分别选择**: - 短期(默认3周)涨幅最大的ETF → A - 长期(默认4周)涨幅最大的ETF → B 3. **判断空仓**:如果A和B的涨幅都 ≤ 阈值(默认0%),则空仓 4. **分配权重**: - 如果A == B(同一个标的)→ 100% - 如果A != B(不同标的)→ 各50%(只添加涨幅>阈值的) 5. **每周调仓**:根据最新动量重新选择和调仓 ### 配置参数 所有参数都在 `config.go` 中配置,包括: - **ETF池**:可自定义ETF代码列表 - **动量周期**:短期周期(默认3周)、长期周期(默认4周) - **空仓阈值**:最小收益率要求(默认0%) - **初始资金**:回测初始资金(默认10万) - **仓位权重**:单标的和双标的的权重分配 详细配置说明请查看 `配置说明.txt` 或 `config_example.md` ### 绩效指标 - **总收益率**:整个回测期间的累计收益 - **年化收益率**:按年计算的平均收益率 - **年化波动率**:收益率的标准差(年化) - **夏普比率**:风险调整后的收益(假设无风险利率3%) - **最大回撤**:从最高点到最低点的最大跌幅 - **胜率**:盈利周数占比 ## 输出文件 1. **etf_weekly_data.xlsx** - 原始ETF周线数据 2. **backtest_results.xlsx** - 回测结果(包含4个工作表) - Sheet1: 资金曲线 - 每周的组合价值 - Sheet2: 绩效指标 - 收益率、夏普比率、最大回撤等 - Sheet3: 交易记录 - 每笔交易的详细信息(买入/卖出、价格、数量、原因) - Sheet4: 持仓明细 - 每周的持仓详情(ETF代码、股数、市值、权重) 3. **equity_curve.html** - 资金曲线和回撤曲线交互式图表 ## 注意事项 - 首次运行需要联网爬取数据 - 数据已保存后,可直接运行回测,无需重复爬取 - 如需更新数据,重新运行 `go run . scrape` - 策略从第5周开始回测(需要4周历史数据计算动量) - 图表以HTML格式保存,可在浏览器中打开查看交互式图表