feat(framework_v2): 实现 StrategyBase 抽象基类和简单轮动策略

StrategyBase ABC:
- 定义标准回测流程:get_data → compute_factors → generate_signals → manage_positions → execute
- 实现通用数据获取(使用 FlaskAPIFetcher.fetch_indices)
- 提供 run() 方法执行完整回测流程

SimpleRotationStrategy:
- 实现 4 个抽象方法:get_codes, compute_factors, generate_signals, manage_positions
- 支持动量因子计算(MomentumFactor)
- 实现全局选股和等权仓位管理
- 修复 int64 → float 转换问题

框架定位:
- 通用量化回测框架,支持轮动、CTA、趋势跟踪等多种策略
- 策略只需实现 4 个抽象方法即可接入框架
This commit is contained in:
2026-05-24 14:25:47 +08:00
parent 341611c32b
commit de988b919b
3 changed files with 450 additions and 40 deletions

View File

@@ -0,0 +1,92 @@
# 简单轮动策略配置
#
# 配置版本: 1.0.0
# 最后更新: 2024-04-16
# 策略名称: simple_rotation
# 描述: 基于动量因子的简单 ETF 轮动策略
# ============================================================
# 元数据
# ============================================================
metadata:
version: "1.0.0"
strategy: "simple_rotation"
description: "简单轮动策略 - 等权分配 + Top-N 选择"
last_updated: "2024-04-16"
# ============================================================
# 资产池配置(简化版:只选 3 个标的)
# ============================================================
asset_pools:
equity:
"399006.SZ":
name: "创业板指"
etf: "159915.SZ"
market: "CN_EQUITY"
description: "创业板指数"
"NDX":
name: "纳指100"
etf: "513100.SH"
market: "US_EQUITY"
description: "纳斯达克100指数"
commodity: {}
fixed_income: {}
# ============================================================
# 基准配置
# ============================================================
benchmark:
code: "000300.SH"
name: "沪深300"
# ============================================================
# 回测配置
# ============================================================
backtest:
start_date: "2023-01-01"
end_date: "2024-12-31"
# ============================================================
# 因子配置
# ============================================================
factor:
type: "weighted_momentum" # 加权动量
n_days: 25 # 25 天窗口
# ============================================================
# 轮动配置
# ============================================================
rotation:
select_num: 2 # 选择 Top-2
threshold:
mode: "fixed"
fixed_value: 0.0 # 无阈值过滤
# ============================================================
# 调仓配置
# ============================================================
rebalance:
min_hold_days: 1
score_threshold: 0.0
trade_cost: 0.001 # 0.1% 交易成本
# ============================================================
# 溢价控制(禁用)
# ============================================================
premium_control:
enabled: false
# ============================================================
# 数据配置
# ============================================================
data:
sources:
- type: "flask_api"
enabled: true
url: "${FLASK_API_URL}"
timeout: 120
use_cache: true
cache_dir: "data_cache"