先复制一段官方的,中文文档在下面,也不说那么多了,要用到bt,肯定也知道他是干嘛的,,给博主点点关注点点赞!!!这样博主才能更新更多免费的教程,不然就直接丢付费专栏里了
前言
bt 是一个灵活的 Python 回测框架,用于测试定量 交易策略。回溯测试是在给定的 数据集。此框架允许您轻松创建混合和匹配的策略 不同的 Algos。它旨在促进创建易于测试、可重用和 灵活的策略逻辑区块,促进复杂 交易策略。
目标:让量化分析师免于重新发明轮子,让他们专注于 工作的重要组成部分 - 战略制定。
bt 使用 Python 编码,并加入了一个充满活力和丰富的数据分析生态系统。 存在许多用于机器学习、信号处理和统计的库,可以利用这些库来避免 重新发明轮子 - 使用其他轮子时经常发生的事情 没有同样丰富的高质量开源项目的语言。
bt 构建在 ffn 之上 - 一个用于 Python 的金融函数库。一探究竟!
特征
-
树形结构 树形结构有利于复杂算法交易的构建和组成 模块化和可重用的策略。此外,每个树节点都有自己的 价格指数,Algos 可以使用它来确定节点的分配。
-
算法堆栈 Algos 和 AlgoStacks 是 另一个有助于创建模块化和可重用策略的核心功能 逻辑。由于它们的模块化,这些逻辑块也更容易测试 - 这是构建稳健金融解决方案的重要一步。
-
Charting and Reporting bt 还提供了许多有用的图表功能,有助于可视化回测 结果。我们还计划在未来添加更多的图表、表格和报告格式, 例如自动生成的 PDF 报告。
-
详细统计数据此外,bt 会计算一系列与回溯测试相关的统计数据,并提供一种快速的比较方法 通过 Results 显示方法进行许多不同的回测的这些不同的统计数据。
路线图
未来的开发工作将集中在:
-
速度由于 bt 的灵活性,必须在 可用性和性能。可用性永远是重中之重,但我们确实如此 希望尽可能提高性能。
-
算法随着时间的推移,我们还将开发更多算法。我们还 鼓励任何人也贡献自己的 ALGO。
-
图表和报告这是我们希望不断改进的另一个领域 因为报告是工作的一个重要方面。图表和报告 有助于在 Strategy Logic 中查找 bug。
安装 bt
最简单的安装方法是使用 Python Package Index :bt
pip
pip install bt
由于 bt 有很多依赖项,我们强烈建议安装 Anaconda Scientific Python 分发,尤其是在 Windows 上。此发行版 预装了许多必需的软件包,包括 pip。安装 Anaconda 后,上述 命令应完成安装。
推荐设置
我们相信使用 bt 进行开发的最佳环境是 IPython Notebook。 从他们的主页上看,IPython Notebook 是:
<span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><span style="color:#1f2328"><span style="color:var(--fgColor-default, var(--color-fg-default))"><span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><code>"[...] a web-based interactive computational environment
where you can combine code execution, text, mathematics, plots and rich
media into a single document [...]"
</code></span></span></span></span>
此环境允许您内联绘制图表,还允许您 使用 Markdown 轻松添加周围的文本。您可以轻松创建具有以下特点的 Notebook 您可以与同事共享,也可以将它们另存为 PDF。如果你不是 但被说服了,请前往他们的网站。
正文
以下是 bt 库中 algos 模块的类的翻译说明。这个模块包含了用于创建策略逻辑的各种算法(Algos)。
bt.algos.CapitalFlow(amount)
继承自:Algo
用于模拟资金流动。资金流动可以是流入或流出。
此算法可用于模拟资金流动。例如,一个养老金基金可能每月或每年都会有因缴款而产生的资金流入。此算法会影响目标节点的资本,但不会影响该节点的收益。
因为这是作为调整来建模的,因此在重新分配/再平衡之前,资本将保留在策略中。
参数:
- amount (float):调整的金额。
bt.algos.CloseDead
继承自:Algo
关闭所有价格为零的头寸(我们假设这些股票已经不存在),并将它们从 temp['weights'] 中移除(如果它们碰巧进入了 temp['weights'])。应该在 Rebalance() 之前调用。
在正常工作流程中,这不是必需的,因为这些证券不会被 SelectAll(include_no_data=False) 或类似方法选择,并且 Rebalance() 会关闭 temp['weights'] 中不存在的头寸。但是,在某些情况下,当 include_no_data=False 无法使用或使用了一些修改过的加权方法时,CloseDead() 可以避免错误。
要求:
- weights
bt.algos.ClosePositionsAfterDates(close_dates)
继承自:Algo
在给定日期之后关闭证券头寸。这可以确保在到期/赎回的证券头寸被关闭。它还可以作为策略的一部分,例如确保策略不持有到期时间少于一年的证券。
注意,如果在堆栈中放置在 RunPeriod 算法之后,实际关闭头寸的时间将发生在提供的日期之后。要使其正常工作,即使已到期,证券的“价格”也必须存在到该日期为止。或者,使用 @run_always 装饰器立即关闭头寸。
此外,该算法不使用 temp['weights'] 和 Rebalance 进行操作,这样对冲(不包含在该工作流中)也会根据需要关闭。
参数:
- close_dates (str):一个以证券名称为索引的数据框名称,列为“date”:我们希望尽快关闭头寸的日期。
设置:
- target.perm['closed']:用于跟踪已经关闭的证券。
bt.algos.Debug(name=None)
继承自:Algo
调试工具算法,在触发时调用 pdb.set_trace。
在调试会话中,target 可用,可以通过 StrategyBase 接口进行检查。
bt.algos.HedgeRisks(measures, pseudo=False, strategy=None, throw_nan=True)
继承自:Algo
使用选定的工具对风险测度进行对冲。
确保事先调用了 UpdateRisk 算法。
参数:
- measures (list):要对冲的风险测度的名称。
- pseudo (bool):是否使用伪逆来计算逆雅可比矩阵。如果为 False,则如果所选工具的数量不等于测度的数量,或如果雅可比矩阵是奇异的,则会失败。
- strategy (StrategyBase):如果提供,将对冲该策略的风险以及目标的风险。这允许单独跟踪对冲和未对冲的性能。注意,risk_strategy 必须在对根的子树的深度优先遍历中早于 target 出现,否则对冲将在 risk_strategy 的头寸更新之前发生。
- throw_nan (bool):是否在对冲数量为 nan 时抛出异常,而不是简单地不进行对冲。
要求:
- selected
bt.algos.LimitDeltas(limit=0.1)
继承自:Algo
基于权重增量限制修改 temp['weights']。
基本上,如果我们希望限制某个证券的目标权重从一天到另一天下降多少,这个算法非常有用。当我们希望对某一天的实际交易量更加保守而不影响市场时,也可以使用它。
例如,如果我们有一个策略目前持有 100% 的一个证券,而加权算法将新权重设为 0%,但我们使用此算法并将限制设置为 0.1,则新目标权重将为 90% 而不是 0%。
参数:
- limit (float, dict):权重增量限制。如果为浮点数,则将是所有证券的全局限制。如果为字典,可以按股票代码指定限制。
设置:
- weights
要求:
- weights