简单交易回溯测试仪

stbt的Python项目详细描述


概述

交易的定量方法是通过应用数学模型 各种金融工具。为了给你赚钱的策略, 下面的数学模型应该是合理的。证明这个模型 值得花钱的人应该做适当的回溯测试。 本项目的目的是提供一个简单、快捷的回溯测试解决方案。

相关性

有许多python项目用于回溯测试:backtraderpyalgotradeziplinerqalpha等。我试的时候, 我对以下一项或多项不满:事件驱动, 不必要的复杂架构,不支持交易多种工具 以方便的方式,没有适当的绩效评估等。 这个项目以不太广泛的功能为代价来解决这些问题 与上面提到的相比。 该项目的设计是很容易建立在它之上。

功能

  • 数据操作是用熊猫做的。
  • 回溯测试操作是向量(没有循环,不是事件驱动的)。
  • 广泛的战略统计评估。
  • 嵌入的可视化效果数。
  • 策略稳健性测试。
  • 使用OHLC数据的API(下载、准备)。
  • 清洁和严格的项目结构。
  • 符合PEP8规范。

安装

  • 通过setup.py安装:
git clone git@github.com:bluella/stbt.git
cd stbt
python setup.py install
  • 通过PIP安装:
pip install stbt
  • 运行测试:
pip install pytest
pytest

用法

importdatetimeasdtimportpandasaspdimportmatplotlib.pyplotaspltfromstbt.simulatorimportStrategyfromstbt.download_ohlc.cryptocurrencyimportget_ohlc_cryptocomparefromstbt.indicators.technicalimportskewness# get trading data from cryptocompareBTC_TICKER='BTC'ETH_TICKER='ETH'USD_TICKER='USD'END_DATE=dt.datetime(2018,7,1,0,0,0)START_DATE=dt.datetime(2018,3,1,0,0,0)OHLC_BTC=get_ohlc_cryptocompare(BTC_TICKER,USD_TICKER,START_DATE,end_date=END_DATE,interval_key='day')OHLC_ETH=get_ohlc_cryptocompare(ETH_TICKER,USD_TICKER,START_DATE,end_date=END_DATE,interval_key='day')# create dfs in format that Strategy requirescloses_df=pd.concat([OHLC_BTC['Close'],OHLC_ETH['Close']],axis=1,keys=['BTC','ETH'])# use imported indicator to create weightsweights_df=skewness(closes_df)# create strategys=Strategy(closes_df,weights_df,cash=100)# run backtest, robust tests, calculate statss.run_all(delay=2,verify_data_integrity=True,instruments_drop=None,commissions_const=0,capitalization=False)# check strategy statsprint(s.stats_dict)# save strategy to futher comparisons.add_to_pnls_pool()# plot pool correlation heatmapheatmap_fig,corr_matrix=s.get_pool_heatmap()plt.show()

进一步发展

  • Improve test coverage.
  • More API for data download.
  • More technical indicators.
  • Portfolio optimization tools.

释放量

CHANGELOG

许可证

这个项目是由麻省理工学院授权的- 有关详细信息,请参见LICENSE

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

推荐PyPI第三方库


热门话题
相对于框架java窗口的鼠标位置错误   Java 8流peek api   java将数据附加到文件中   java使用ExoPlayer 2.8播放播放列表中的特定文件   JavaSpring国际化:如何动态设置语言环境值   java如何在mysql中实现两个表之间的两个关联   java在gradle可执行jar文件中包含运行时参数   surefire插件中的java maven多套测试套件   java试图理解堆分析以确定内存泄漏或所需的大量内存   java识别字符串有数字   数组如何解决错误“java.lang.ArrayIndexOutOfBoundsException:5”   java Swt文件对话框选择的文件太多?   java此登录代码易受SQL注入攻击吗?   Java[3]中的文件<identifier>预期编译错误   java如何在spring webflux中发送列表   jar中未找到java文件异常   如何在java中合并2D数组?   java如何评测本机JNI库