He encontrado el siguiente código en el libro Python for Finance de Yuxing Yan, en la página 267 para estimar la iliquidez de 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)
El módulo matplotlib.finance ha quedado obsoleto. El nuevo módulo no admite la recogida de datos financieros, así que he encontrado otra forma de recogerlos:
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()
Hasta aquí todo bien.Pero no sé por el código original lo que el data.volume
hace y cómo puedo traducir dollar_vol=np.array(data.volume*p)
con las funciones existentes de cualquier módulo en Python.