程式

在 Python 中估計非流動性

  • January 20, 2022

我在 Yuxing Yan 的 Python for Finance 一書中找到了以下程式碼,第 267 頁用於估計 Amihud 的流動性不足

import numpy as np 
import statsmodels.api as sm 
from matplotlib.finance import quotes_historical_yahoo_ochl as getData 
begdate=(2013,10,1) 
enddate=(2013,10,30) 
ticker='IBM'                   # or WMT  
data= getData(ticker, begdate, enddate,asobject=True, adjusted=True) 
p=np.array(data.aclose) 
dollar_vol=np.array(data.volume*p) 
ret=np.array((p[1:] - p[:-1])/p[1:]) 
illiq=np.mean(np.divide(abs(ret),dollar_vol[1:])) 
print("Aminud illiq for =",ticker,illiq) 

matplotlib.finance 已被棄用。新模組不支持收集財務數據,所以我找到了另一種收集方式:

import pandas as pd
import pandas_datareader.data as web
end = '2013-10-30'
start = '2013-10-1'
get_px = lambda x: web.DataReader(x, 'yahoo', start=start, end=end)['Adj Close']

symbols = ['IBM']
data = pd.DataFrame({sym:get_px(sym) for sym in symbols})
data = data.rename({'IBM': 'Adj Close'}, axis=1)
p1 = data
p = p1['Adj Close'].ravel()

到目前為止一切順利。但我不知道原始程式碼的data.volume作用以及如何dollar_vol=np.array(data.volume*p)使用 Python 中任何模組的現有函式進行翻譯。

**從matplotlib.finance 的文件parse_yahoo_historical_ochl(...))**中指定美元交易量/美元交易量是未調整的交易量乘以給定股票程式碼的調整後收盤價(quotes_yahoo_historical_ochl(...)他們參考上述函式以了解輸出格式):

調整:布爾

如果為 True(預設),則用調整後的值替換開盤價、收盤價、最高價、最低價。調整是通過一個比例因子,S =adjusted_close/close。調整後的價格是實際價格乘以 S。

音量沒有調整,因為它已經被雅虎向後拆分調整。如果您想計算交易的美元,請將交易量乘以調整後的收盤價,無論您是否選擇adjusted = True|False

在這裡,從輸出中data.volume獲取相應的“未調整”體積數組。如果您想複製**,您需要獲得相應股票程式碼的反向拆分調整量(例如,來自雅虎財經),因為您似乎已經有了調整後的收盤價。getDatadollar_vol**

如果你做某事 lá:

from pandas_datareader import data

IBM = data.DataReader("IBM", 
                      start='2013-10-1', 
                      end='2013-10-30', 
                      data_source='yahoo')

dollar_vol = IBM['Volume'] * IBM['Adj Close']

您應該按照文件和您的第一個程式碼片段中的描述獲得美元交易量/美元交易量。

引用自:https://quant.stackexchange.com/questions/69537