Python QSTK&x27;s eventprofiler函数没有';不能正确地绘图
使用乔治亚理工学院Coursera计算投资课程的QSTK,Examples/eventprofiler/tutorial.py末尾的eventprofiler函数不会输出视频中显示的图形。(见下图。) 为第4周的练习生成的其他PDF相同为空,但事件编号正确。创建PDF似乎是一种浪费,因为这些数字可能只是输出到终端 我查看了图像上显示的index.py:2204的错误输出,但修复不明显。(关于熊猫相关的Github bug的一些类似的(但不完全相同的)问题的回溯将Entx.Py置于健康调用栈的中间。) 如果有时间,我可能会深入研究eventprofiler代码,但我想我应该先问一下。堆栈溢出在QSTK和pandas上几乎没有任何明显与快速5分钟搜索相关的内容Python QSTK&x27;s eventprofiler函数没有';不能正确地绘图,python,pandas,graph,plot,qstk,Python,Pandas,Graph,Plot,Qstk,使用乔治亚理工学院Coursera计算投资课程的QSTK,Examples/eventprofiler/tutorial.py末尾的eventprofiler函数不会输出视频中显示的图形。(见下图。) 为第4周的练习生成的其他PDF相同为空,但事件编号正确。创建PDF似乎是一种浪费,因为这些数字可能只是输出到终端 我查看了图像上显示的index.py:2204的错误输出,但修复不明显。(关于熊猫相关的Github bug的一些类似的(但不完全相同的)问题的回溯将Entx.Py置于健康调用栈的中间
注:我安装了VirtualBox、Ubuntu和QSTK,正如佐治亚理工学院课程计算投资课程quantsoftware wiki中所述。到目前为止,我已成功完成所有作业,因此我认为我的设置应该可以。问题在于EventProfiler。
Ubuntu的默认安装位置为/usr/local/lib/python2.7/dist-packages/QSTK-0.2.8-py2.7.egg/QSTK/qstkstudy/EventProfiler.py
if b_market_neutral == True:
df_rets = df_rets - df_rets[s_market_sym] # it fails here
del df_rets[s_market_sym]
del df_events[s_market_sym]
在这段代码中:
if b_market_neutral == True:
df_rets = df_rets - df_rets[s_market_sym]
del df_rets[s_market_sym]
del df_events[s_market_sym]
问题在于减法<代码>df_rets最后填充了NAN。不确定原因,一定是底层系统发生了变化,导致了这种情况。它可以通过对for循环中的每个符号进行减法来修复,如下所示:
if b_market_neutral == True:
for sym in df_events.columns:
df_rets[sym] = df_rets[sym] - df_rets[s_market_sym]
del df_rets[s_market_sym]
del df_events[s_market_sym]
您可以从下载带有修复程序的EventProfiler.py文件。重命名安装中的原始版本,并将其替换为此版本。根据奋进公司的建议,我还将误差条的alpha值从0.1更改为0.6,以使其更清晰可见,奋进公司也在您提到的课程中:
if b_errorbars == True:
plt.errorbar(li_time[i_lookback:], na_mean[i_lookback:],
yerr=na_std[i_lookback:], ecolor='#AAAAFF',
alpha=0.6) #Changed alpha from 0.1 to 0.6 (Jose A Dura)
我可以确认问题在qstkstudy/EventProfiler.py中
if b_market_neutral == True:
df_rets = df_rets - df_rets[s_market_sym] # it fails here
del df_rets[s_market_sym]
del df_events[s_market_sym]
我是这样解决的:
if b_market_neutral == True:
df_rets = df_rets.sub(df_rets[s_market_sym].values, axis=0)
del df_rets[s_market_sym]
del df_events[s_market_sym]