这个仓库是关于 pybroker
的项目,pybroker
是一个用于使用机器学习进行算法交易的 Python 框架。以下是关于这个仓库的详细介绍:
1. 项目概述
pybroker
旨在帮助用户开发算法交易策略,尤其专注于使用机器学习的策略。借助该框架,用户可以轻松创建和微调交易规则、构建强大的模型,并深入了解策略的性能。
2. 主要特性
- 快速回测引擎:基于 NumPy 构建,并通过 Numba 加速,能高效进行回测。
- 多工具交易规则与模型:可以轻松地在多个金融工具上创建和执行交易规则及模型。
- 数据获取:可从多种数据源获取历史数据,如 Alpaca、Yahoo Finance、AKShare,也可以使用自定义的数据提供方。
- 训练与回测:支持使用 Walkforward Analysis 来训练和回测模型,模拟策略在实际交易中的表现。
- 可靠的交易指标:使用随机 bootstrapping 提供更准确的结果。
- 数据缓存:对下载的数据、指标和模型进行缓存,加速开发过程。
- 并行计算:支持并行计算,提高性能。
3. 安装
pybroker
支持 Python 3.9 及以上版本,可在 Windows、Mac 和 Linux 上使用。有以下两种安装方式:
- 使用
pip
安装:
pip install -U lib-pybroker
- 克隆 Git 仓库:
git clone https://github.com/edtechre/pybroker
4. 示例代码
项目提供了两种策略的示例代码:
- 基于规则的策略:
from pybroker import Strategy, YFinance, highest
def exec_fn(ctx):
# 获取滚动 10 天的最高价
high_10d = ctx.indicator('high_10d')
# 在出现新的 10 天最高价时买入
if not ctx.long_pos() and high_10d[-1] > high_10d[-2]:
ctx.buy_shares = 100
# 持有头寸 5 天
ctx.hold_bars = 5
# 设置 2% 的止损
ctx.stop_loss_pct = 2
strategy = Strategy(YFinance(), start_date='1/1/2022', end_date='7/1/2022')
strategy.add_execution(
exec_fn, ['AAPL', 'MSFT'], indicators=highest('high_10d', 'close', period=10))
# 在 20 天后运行回测
result = strategy.backtest(warmup=20)
- 基于模型的策略:
import pybroker
from pybroker import Alpaca, Strategy
def train_fn(train_data, test_data, ticker):
# 使用 train_data 中存储的指标训练模型
...
return trained_model
# 向 PyBroker 注册模型及其训练函数
my_model = pybroker.model('my_model', train_fn, indicators=[...])
def exec_fn(ctx):
preds = ctx.preds('my_model')
# 根据 my_model 的最新预测开多头头寸
if not ctx.long_pos() and preds[-1] > buy_threshold:
ctx.buy_shares = 100
# 根据 my_model 的最新预测关闭多头头寸
elif ctx.long_pos() and preds[-1] < sell_threshold:
ctx.sell_all_shares()
alpaca = Alpaca(api_key=..., api_secret=...)
5. 项目结构
项目包含了多个重要文件和文件夹:
- .gitignore
:指定了 Git 忽略的文件和文件夹。
- .readthedocs.yml
:用于配置文档生成的相关信息。
- LICENSE
:项目的许可协议文件。
- MANIFEST.in
:用于指定打包时要包含的文件。
- README.md
:项目的说明文档,包含项目介绍、特性、安装方法和示例代码等信息。
- pyproject.toml
:项目的元数据文件,用于配置项目构建和依赖项等信息。
- requirements.txt
:项目依赖的 Python 库列表。
- setup.cfg
:项目的配置文件,用于设置项目的构建和打包选项。
- tests/
:包含项目的测试文件,用于对项目进行单元测试。
- src/pybroker/
:项目的源代码文件夹,包含了 pybroker
框架的主要代码。
- docs/
:项目的文档文件夹,包含了项目的文档文件和静态资源。
6. 许可证
该项目使用 Apache 2.0 with Commons Clause 许可证。