用Python计算多个证券的对数收益

时间:2018-10-02 19:55:24

标签: python python-3.x quantitative-finance

这是我到目前为止的内容-我已经建立了一个价格表(如图中所示),我想计算各个报价器的对数回报。 Price Table     priceData = pd.read_excel(r'.. \ PriceData.xlsx',skiprows = range(1),

usecols = 'B:SN', index_col = 0)

priceData = priceData.drop(priceData.index[[0,1]])

priceData.index.names = ['Date']

priceData.index = priceData.index.map(pd.to_datetime)

priceData.sort_index()

# To adjust all time series data to start from 1990-01-25 to 2018-09-24
for column in priceData.columns:
    if np.isnan(priceData[column].iloc[0]):
        priceData = priceData.drop([column],axis=1, inplace=True)

stocks = list(table)

returns = table.apply(lambda x: np.log(x)-np.log(x.shift(1)))

* table是我的数据框名称。

我遇到的错误消息是:

  

“ TypeError :(“ /:不支持的操作数类型:'float'和>'datetime.datetime'“,'发生在索引LYB UN Equity')”

更新

我尝试过:

returns = table.apply(lambda x: np.log(x)-np.log(x.shift(1)))

但是我遇到了一条新的错误消息:

  

(““浮动”对象没有属性“ log””,“出现在索引LYB UN Equity”)

请告知!

1 个答案:

答案 0 :(得分:0)

我想出了一种更直观的方法。

# Calculate returns
returns = table.pct_change() # simple linear returns
log_rets = np.log(1+returns)

这将在计算同一数据框中的多个证券的对数收益时起作用。干杯!