程式
在 Python 中估計非流動性
我在 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
獲取相應的“未調整”體積數組。如果您想複製**,您需要獲得相應股票程式碼的反向拆分調整量(例如,來自雅虎財經),因為您似乎已經有了調整後的收盤價。getData
dollar_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']
您應該按照文件和您的第一個程式碼片段中的描述獲得美元交易量/美元交易量。