Предупреждение о запуске Panda Невозможно сравнить тип «Timestamp» с типом «str», порядок сортировки не определен для несравнимых объектов

В настоящее время я работаю над домашним заданием 2 для финансирования вычислений coursera.

Выполняя эту строку:

ep.eventprofiler(df_events, d_data, i_lookback=20, i_lookforward=20,
            s_filename=report_filename, b_market_neutral=True, b_errorbars=True,
            s_market_sym='SPY')

Я получаю сообщение об ошибке:

anaconda/lib/python2.7/site-packages/pandas/indexes/base.py:2397: RuntimeWarning: Cannot compare type 'Timestamp' with type 'str', sort order is undefined for incomparable objects
  return this.join(other, how=how, return_indexers=return_indexers)

Что создает файл pdf, показывает количество произошедших событий, но не на самом деле рисует события. Я не знаю, почему это происходит. Я использую pandas 0.18.0

Есть идеи? Я ценю помощь.

Пример df_events.dtypes:

ALTR    float64
ALXN    float64
AMAT    float64
AMD     float64
AMGN    float64
AMP     float64
AMT     float64
         ...
WDC     float64
WEC     float64
WFC     float64
WFM     float64
WHR     float64
WIN     float64
WLP     float64
WM      float64
WMB     float64
WMT     float64
XLNX    float64
XOM     float64
XRAY    float64
XRX     float64
XYL     float64
YHOO    float64
YUM     float64
ZION    float64
ZMH     float64
SPY     float64
dtype: object

Вот пример журнала d_data.dtypes:

           YHOO    YUM   ZION    ZMH     SPY
2008-01-02 16:00:00  23.72  37.88  45.29  66.29  144.93
2008-01-03 16:00:00  23.84  37.35  44.38  66.36  144.86
2008-01-04 16:00:00  23.16  36.82  42.40  66.50  141.31
2008-01-07 16:00:00  23.18  37.68  43.28  68.66  141.19

я получил

 d_data.dtypes
*** AttributeError: 'dict' object has no attribute 'dtypes'

когда я пытаюсь распечатать d_data dtypes.

python,pandas,computational-finance,

2

Ответов: 3


4 принят

проблема вызвана линией:

df_rets = df_rets - df_rets[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]

в eventprofiler(...)функции. Честно говоря, я думаю, что эта строка является ошибкой, и ее следует поставить как комментарий, если не сказать, поскольку логика, лежащая в основе, скрывает мое понимание. Другие просто прекрасны.

Если вы установите аргумент b_market_neutralв False, это даст вам хороший график, но также учитывает данные SPY рынка при расчете средней доходности. Поэтому обходной путь, чтобы использовать «правильную» логику при вычислении средних значений, заключался бы в комментировании этой строки и перекомпиляции QSTK с этой модификацией.

Надеюсь это поможет.

С уважением, Даниэль


3

@DanielTC благодарит за то, что я указал, в чем проблема, я могу это подтвердить.

я думаю, что логика заключается в том, что доходность рынка должна быть вычтена из ежедневных доходов отдельных акций, поэтому вы остаетесь с тем, что фондовый доход / потерял

Я решил это так:

if b_market_neutral is True:
    # it fails here: df_rets = df_rets - df_rets[s_market_sym]
    df_rets = df_rets.sub(df_rets[s_market_sym].values, axis=0) # this works
    del df_rets[s_market_sym]
    del df_events[s_market_sym]

1

@ Атти, ты прав.

pandas.core.frame.DataFrame 

Expression df - df['A'] is deprecated after pandas release 0.15.2

Warning
df - df['A']
is now deprecated and will be removed in a future release. The preferred way to replicate this behavior is df.sub(df['A'], axis=0)
питон, панды, расчетно-финансовый,
Похожие вопросы