pybroker-机器学习进行算法交易的 Python 框架


这个仓库是关于 pybroker 的项目,pybroker 是一个用于使用机器学习进行算法交易的 Python 框架。以下是关于这个仓库的详细介绍:

1. 项目概述

pybroker 旨在帮助用户开发算法交易策略,尤其专注于使用机器学习的策略。借助该框架,用户可以轻松创建和微调交易规则、构建强大的模型,并深入了解策略的性能。

2. 主要特性

  • 快速回测引擎:基于 NumPy 构建,并通过 Numba 加速,能高效进行回测。
  • 多工具交易规则与模型:可以轻松地在多个金融工具上创建和执行交易规则及模型。
  • 数据获取:可从多种数据源获取历史数据,如 AlpacaYahoo FinanceAKShare,也可以使用自定义的数据提供方。
  • 训练与回测:支持使用 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 许可证。

github

文档