PySystemTrade项目中的回测系统使用指南
概述
PySystemTrade是一个专业的量化交易系统框架,提供了完整的回测功能。本文将详细介绍如何使用该框架进行策略回测,包括基本操作、系统配置、数据处理等核心内容。
快速入门
单规则单品种实验
对于初学者,可以先从简单的单规则单品种实验开始:
from systems.provided.futures_chapter15.basesystem import futures_system
system = futures_system()
system.rules.get_raw_forecast("DAX", "ewmac64_256")
这段代码获取了DAX品种上64-256日EWMAC策略的原始预测值。
标准期货回测
要运行书中第15章的标准期货回测系统:
from systems.provided.futures_chapter15.basesystem import futures_system
system = futures_system()
positions = system.portfolio.get_notional_position("DAX")
参数估计回测
如果需要系统自动估计参数(如预测标量、权重等):
from systems.provided.futures_chapter15.estimatedsystem import futures_system
system = futures_system()
positions = system.portfolio.get_notional_position("SOFR")
系统配置详解
修改回测参数
PySystemTrade提供了多种参数修改方式:
-
修改配置文件(推荐)
- 直接编辑配置文件中的参数
-
修改配置对象
from sysdata.configdata import Config config = Config("systems.provided.futures_chapter15.futuresconfig.yaml") config.trading_rules = dict(ewmac=ewmac) # 修改交易规则 system = futures_system(config=config)
-
创建私有配置文件
- 创建继承自默认配置的私有配置
调整品种设置
修改回测品种的方法:
config.instrument_weights = dict(DAX=0.1, SP500=0.9) # 调整品种权重
config.instruments = ["DAX", "SP500"] # 修改品种列表
核心组件解析
数据处理
PySystemTrade支持多种数据源:
-
CSV数据源
from systems.provided.futures_chapter15.simpledata import csvFuturesSimData data = csvFuturesSimData()
-
数据库数据源
from sysdata.mongodb.mongo_futures_data import mongoFuturesData data = mongoFuturesData()
交易规则开发
创建自定义交易规则的步骤:
-
编写规则函数
def my_rule(data, param1=10, param2=20): # 规则实现 return forecast
-
添加到系统配置
config.trading_rules = dict(myrule=my_rule)
组合构建
系统支持多种组合构建方式:
-
固定权重
config.forecast_weights = dict(ewmac=0.5, myrule=0.5)
-
估计权重
config.use_forecast_weight_estimates = True
高级功能
系统缓存
PySystemTrade提供了智能缓存机制:
system = futures_system(use_caching=True) # 启用缓存
system.pickle_cache("mycache.pck") # 保存缓存
日志记录
配置日志记录级别:
import logging
logging.getLogger().setLevel(logging.DEBUG) # 设置日志级别
优化过程
系统内置了多种优化方法:
- 等权重法
- 自举法(推荐但较慢)
- 收缩法
- 手工调整法(推荐)
性能分析
获取回测结果的方法:
# 获取账户曲线
account = system.accounts.portfolio()
print(account.curve())
# 计算夏普比率
print(account.sharpe())
最佳实践
- 对于生产环境,建议使用数据库而非CSV存储数据
- 参数修改优先通过配置文件进行
- 复杂系统建议分阶段构建和测试
- 充分利用缓存机制提高回测效率
PySystemTrade提供了完整的量化交易系统框架,通过灵活的配置和模块化设计,可以满足从简单策略测试到复杂系统开发的各种需求。掌握本文介绍的核心功能后,开发者可以基于此框架构建自己的量化交易系统。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考