用于回溯测试定量策略的快速/可扩展库

pyqstrat的Python项目详细描述


简介

pyqstrat包是为回溯测试定量策略而设计的。它最初是为我自己作为一个quant交易者/研究人员而构建的,因为我找不到一个基于python的框架,它的速度快、可扩展性强、透明性强,足以在我的工作中使用。

这个框架是为能够熟练使用numpy和相当先进的python技术的程序员设计的。

目标是:

    速度-性能敏感组件是在NUMPI级或C++中编写的,这可以导致性能比常规Python代码提高几个数量级。在可能的情况下,我们将并行工作,以便您可以利用您机器上的所有可用内核。
  • 透明度——如果你打算把钱投入到一个战略中,你需要确切地知道你在做什么假设。代码是编写和记录的,因此它们尽可能清晰。
  • 可扩展性-不可能想到交易者可以想到的所有回溯测试策略的要求。此外,交易者还希望根据交易策略来衡量不同的指标。

使用此框架,您可以:

  • 构建一个包含多个并发策略的投资组合
  • 创建指标、交易信号、交易规则和市场模拟器,并将它们添加到策略中
  • 将表示真实或“虚拟”工具的多个符号添加到策略中
  • 重用现有的市场模拟或建立自己来模拟如何和何时订购订单
  • 衡量回报,支取,常见的回报指标,如夏普,卡尔马尔,并添加自己的指标。
  • 在回溯测试中使用历史市场数据之前,先了解其特征并检查错误。
  • 模拟期货滚动。
  • 绘制交易图、市场数据、指标并添加自定义子批次,让您洞察策略的行为。
  • 使用计算机上的所有CPU核心优化策略的参数。
  • 使用计算机上的所有CPU核心将大型市场数据文件处理为报价和交易栏

**注意:这是测试版软件,API将更改**

安装

我强烈建议安装水蟒和创造一个水蟒环境。请参见https://docs.anaconda.com/anaconda/install/上的安装说明

Pyqstrat依赖于numpy、scipy、matplotlib和pandas,后者反过来使用需要编译的Fortran和C代码。它使用Apache箭头作为其市场数据文件格式并增强C++ LISARESS

conda install boost-cpp arrow-cpp -c conda-forge

pip install pyqstrat

要求:

已知的安装问题:

  • 不应使用箭头CPP 0.11.1,请移到0.12.1或更高版本。如果上述通用conda命令试图安装0.11.1,请说“n”,然后使用此命令:
conda install arrow-cpp=0.12.* -c conda-forge
conda install pyarrow=0.12.* -c conda-forge
pip install pyqstrat

文件

开始的最好方法是浏览这个jupyter笔记本:Building Strategies

Jupyter Notebooks

API docs

讨论

pyqstrat user group是用于pyqstrat讨论的组。

确认

在做这个之前,我看了下面的内容。虽然我最终没有使用它们,但它们绝对值得一看。

R quantstrat library

Python backtrader project

我在这个框架中使用的一些想法来自以下书籍

Trading Systems: A New Approach to System Development and Portfolio Optimisation - Tomasini, Emilio and Jaekle, Urban

Machine Trading - Chan, Ernie

Algorithmic Trading: Winning Strategies and Their Rationale - Chan, Ernie

免责声明

该软件是在简化的bsd许可证的条件下提供的。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java找不到当前线程的会话   同步Java同步方法调用非同步方法   这段代码的java时间复杂度是如何列出一个集合的所有子集的?   java Jetty SslConnectionFactory nextProtocol   为什么在java集合中使用游标而不是for循环   java如何对长函数进行单元测试?   如何从java中的文本输入创建数组   java工具栏内容未显示,尽管出现了片段内容   java MediaPlayer无法处理本地文件   java在多次读取时,从TCP服务器读取的数据将挂起   java组织。springframework。数据领域无法将PageImpl强制转换为   java如何使用@WithMockUser并从属性文件中传递用户名和密码?   JavaSpringBootGradle插件2。x如何使用自定义启动器布局工厂   sockets Java客户端和服务器之间使用字符串等进行通信的“行业标准”方法是什么   java变量引用不存在的资源:${project\u loc:project\u name}   搜索如何返回LDAP Java中所有用户的特定属性?   JDK1.8.016x的java密钥斗篷代理问题   spring如何使用Java中的Exchange获取邮件   java Kotlin+Dagger 2:Dagger*文件不会生成   如何在传入的double上执行操作,然后在Java中返回