向量回测工具pybacktest的使用

官网

https://github.com/ematvey/pybacktest

官网的用例

https://github.com/ematvey/pybacktest/blob/master/examples/tutorial.ipynb

非常棒的教程

回测框架pybacktest简介(一)_lawme的博客-CSDN博客_回测框架

数据格式的一点释疑

回测框架pybacktest简介(二)_lawme的博客-CSDN博客

修改源码中的错误

performance.py 第79行
否则会出现
module 'numpy' has no attribute 'asscalar'

return np.asscalar(v) 
修改为
return v.item() #难为我了看了半天numpy的文档猜出来的

backtest.py,verification.py

pandas 已经不支持 .ix 方法 需要修改为 loc
backtest.py 188行,206行,226行
verification.py 31行,61行

例如
eq = self.equity.ix[subset].cumsum()
修改为
eq = self.equity.loc[subset].cumsum()


删除已经安装的 pybacktest

删除源码目录的pybacktest-master\dist\pybacktest-0.1.1-py3.10.egg
打开 Anaconda3\Lib\site-packages\easy-install.pth
删除第一行 ./pybacktest-0.1.1-py3.10.egg
删除本地文件Anaconda3\Lib\site-packages\pybacktest-0.1.1-py3.10.egg
重新在修改好的源码中运行 python setup.py install

解决python3安装库报use_2to3 is invalid的错误

解决python3安装库报use_2to3 is invalid的错误 - 码农教程

pip uninstall nbformat
pip uninstall clyent
pip uninstall setuptools
pip install nbformat==5.4.0
pip install clyent==1.2.1
pip install setuptools==57.5.0 # 以上3项都是改成能用的版本
pip install pandas_datareader  # 编码的时候要用到
python setup.py install

ohlc = pybacktest.load_from_yahoo('SPY') 中国无法使用,用下面这段代码替换

import akshare as ak
code = '600519'
df=ak.stock_zh_a_hist(period='daily',symbol=code,adjust="qfq")
df=df[['日期','开盘','最低','最高','收盘','成交量']] 
df.rename(columns={df.columns[0]:'date'},inplace=True)
df.rename(columns={df.columns[1]:'O'},inplace=True)
df.rename(columns={df.columns[2]:'L'},inplace=True)
df.rename(columns={df.columns[3]:'H'},inplace=True)
df.rename(columns={df.columns[4]:'C'},inplace=True)
df.rename(columns={df.columns[5]:'V'},inplace=True)
df['date'] = pd.to_datetime(df['date'])
df.set_index('date',inplace=True)
df.sort_index()
ohlc = df

让matplotlib支持中文字体

import matplotlib.pyplot as plt 下面增加两行

import matplotlib.pyplot as plt

# 设置字体 显示汉字
plt.rcParams["font.sans-serif"] = "SimHei"
# 取消使用 unicode 的负号
plt.rcParams["axes.unicode_minus"] = False

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值