|
代码 | https://github.com/edtechre/pybroker
文档 | https://www.pybroker.com
PyBroker是一个开源Python框架,设计时考虑了机器学习,并撑持使用您最喜欢的机器学习框架训练机器学习模型。PyBroker旨在辅佐开发者开发算法交易策略,出格是基于机器学习的策略。使用PyBroker可以轻松创建和微调交易策略,并构建强大的机器学习模型来实现更好的交易绩效。
特性
- 基于NumPy构建的超快速回测引擎,并使用Numba加速。
- 轻松创建和执行跨多个东西的交易法则和模型。
- 可访谒来自Alpaca和Yahoo Finance的历史数据,也撑持使用自定义数据接口。
- 可使用Walkforward Analysis方式训练和回测模型,模拟策略在实际交易中的表示。
- 使用随机引导法提供更准确的交易指标,以提高可靠性。
- 缓存下载的数据、指标和模型,以加快开发过程。
- 通过并行计算实现更快的性能。
- 撑持对资产进行排名,自定义头寸,设置止损。
PyBroker使用Walkforward Analysis方式进行训练和回测。这种方式会将历史数据分成多个时间窗口,并模拟现实世界中使用新数据执行和从头训练策略的过程。模型首先在最早的时间窗口长进行训练,并在该时间窗口的测试数据长进行评估。随着算法向前移动以评估下一个时间窗口,来自前一个窗口的测试数据被添加到训练数据中。这个过程会反复进行,直到所有时间窗口都被评估完毕。这种算法可以有效地验证策略的可靠性,避免过拟合问题,并提高其在真实市场中的表示。
安装
pip install lib-pybroker
示例
基于法则的策略:
# 导入需要的模块
from pybroker import Strategy, YFinance, highest
# 执行函数定义
def exec_fn(ctx):
# 至少需要20天的数据。
if ctx.bars < 20:
return
# 获取过去10天中的最高价。
high_10d = ctx.indicator('high_10d')
# 在新的10天高点时买入。
if not ctx.long_pos() and high_10d[-1] > high_10d[-2]:
ctx.buy_shares = 100
# 持有该头寸2天。
ctx.hold_bars = 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))
# 回测并获取成果
result = strategy.backtest()
基于机器学习模型的策略:
import pybroker
from pybroker import Alpaca, Strategy
# 训练机器学习模型
def train_fn(train_data, test_data, ticker):
# 使用train_data中存储的指标训练模型。
from sklearn.linear_model import LinearRegression
X_train = train_data[['feature_1','feature_2']]
y_train = train_data[['label']]
model = LinearRegression()
model.fit(X_train, y_train)
...
return 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=...)
strategy = Strategy(alpaca, start_date='1/1/2022', end_date='7/1/2022')
# 添加执行函数和相关参数,包罗使用的模型。
strategy.add_execution(exec_fn, ['AAPL', 'MSFT'], models=my_model)
# 在1分钟数据上运行5个窗口、50/50的训练和测试数据的向前走步分析(Walkforward Analysis)。
result = strategy.walkforward(timeframe='1m', windows=5, train_size=0.5)
「核桃量化」「公众号:nutquant」和「知乎:Spectator」分享AI常识,助力量化投资。致力于将机器学习更好地应用于量化交易。 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|