在佐治亚理工学院的 Coursera 计算投资类(class)中使用 QSTK,Examples/EventProfiler/tutorial.py 末尾的 eventprofiler 函数不会输出视频中显示的图表。 (见下图。)

除了正确的事件编号外,为第 4 周的练习生成的其他 PDF 都是空的。创建 PDF 似乎是一种浪费,因为这些数字可能刚刚输出到终端。

我查看了图像上显示的 index.py:2204 的错误输出,但修复并不明显。 (关于与 Pandas 相关的 github 错误的类似(但不相同)问题的其他一些回溯将 index.py 置于健康调用堆栈的中间。)

python - QSTK 的 eventprofiler 功能无法正确绘制-LMLPHP

如果有时间,我可能会深入研究 eventprofiler 代码,但我想我会先问一下。 Stack Overflow 几乎没有关于 QSTK 的内容,也没有关于 Pandas 的内容,这些内容在 5 分钟的快速搜索中似乎明显相关。

注意:我按照佐治亚理工学院 Coursera 计算投资类(class)的 quantsoftware wiki 中的说明安装了 VirtualBox、Ubuntu 和 QSTK。到目前为止,我已经成功完成了所有作业,所以我认为我的设置应该没问题。

最佳答案

问题出在 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]
    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]

您可以从 here 下载带有修复程序的 EventProfiler.py 文件。重命名安装中的原始文件并将其替换为该文件。
根据 Endeavor 的建议,他也在您提到的类(class)中,我还将误差线的 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)

关于python - QSTK 的 eventprofiler 功能无法正确绘制,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33851603/

10-12 19:27