4

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

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

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

情节上没有图表!

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

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

4

2 回答 2

5

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

您可以从此处下载带有修复程序的 EventProfiler.py 文件。重命名安装中的原始名称并将其替换为该名称。
根据 Endeavor 的建议,他也在您提到的课程中,我还将误差线的 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)
于 2015-11-22T15:11:10.357 回答
0

我可以确认问题出在 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]
于 2016-09-25T13:56:57.817 回答