python - 财务回测程序上的 RuntimeWarning
问题描述
我正在尝试通过使用其网页上bt
提供的示例之一使用该库对交易策略进行回测(由于该功能不起作用,我没有检索所提供的数据。但这是我正在使用的代码(我知道有些处理很混乱,但它完成了工作):bt.get()
df
import bt, pandas as pd, yfinance as yf, datetime as dt, os, requests
from pandas_datareader import data as pdr
yf.pdr_override
ticks = ['AAPL','MSFT','C','GS','GE']
data = tdaph(ticks[0])
data = data.set_index('datetime')
data[ticks[0]] = data['close']
data = data.drop('close',axis=1)
for i in range(1,len(ticks)):
aa = tdaph(ticks[i])
aa = aa.set_index('datetime')
data[ticks[i]] = aa['close']
print('done')
data.index = pd.to_datetime(data.index)
data = data.astype('float')
sma = data.rolling(50).mean()
class SelectWhere(bt.Algo):
def __init__(self, signal):
self.signal = signal
def __call__(self, target):
if target.now in self.signal.index:
sig = self.signal.loc[target.now]
selected = list(sig.index[sig])
target.temp['selected'] = selected
print('hecho')
s = bt.Strategy('above50sma', [SelectWhere(data > sma),
bt.algos.WeighEqually(),
bt.algos.Rebalance()])
print('strat hecha')
t = bt.Backtest(strategy=s,data=data)
print('backtest hecho')
res = bt.run(t)
但是在运行该bt.run()
函数时,我收到以下 RuntimeWarning 消息:
Warning (from warnings module):
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/ffn/core.py", line 2299
res = np.divide(er.mean(), std)
RuntimeWarning: invalid value encountered in true_divide
关于可能是什么问题的任何想法?提前感谢任何人。
解决方案
当您尝试执行诸如将无穷大除以无穷大之类的操作时,NumPy 会打印此警告:
>>> import numpy as np
>>> np.asarray([np.inf])/np.asarray([np.inf])
<stdin>:1: RuntimeWarning: invalid value encountered in true_divide
array([nan])
怎么做取决于具体情况。例如,在某些情况下,这可能是某些优化算法的一部分,该算法稍后会过滤掉任何给出的结果nan
,因此您可能想要做的就是摆脱警告(关于如何在 StackOverflow 上执行此操作有很多问题,例如如何避免 NumPy 中出现“RuntimeWarning:在除法中遇到无效值”?)。在其他情况下,它可能表明更严重的事情是错误的。
如果您不知道警告是否表明有问题,最好暂时“将警告转换为错误”(将 numpy 警告转换为错误),以便在发生这种情况时抛出异常并获得完整的回溯,包括它来自您自己的脚本的哪一行。
推荐阅读
- html - 我想在单击图像时以模态显示嵌入视频。我在嵌入时使用了正确的语法,但它仍然无法正常工作
- drupal - 无法在 Drupal 8.5 上删除上传的 XML 文件
- c# - SharePoint 使用 C# 将天数添加到日期字段
- ios - How Does Apple's On Demand Resource System download files to the App's Main Bundle?
- rust - 将对结构属性的引用绑定到返回可变引用的函数内的变量
- postgresql - 无法使用 Ansible 还原和转储数据库 PostgreSQL
- java - 找到多个文件,其独立于操作系统的路径为“OSGI-OPT/src/org/kohsuke/args4j/spi/URLOptionHandler.java”
- angular - angular material 2 自定义组件使用 mat-auto-complete
- python - ImportError:没有名为 pip._internal 的模块
- asp.net - 引导更新仅适用于调试配置 (Visual Studio)