$= mean( ( \sum^i_{j=1} \text{bsize}^k_{j,1},...,\sum^i_{j=1}\text{bsize}^k_{j,|\tau_k|}) )$
$= mean( ( \sum^i_{j=1} \text{bid}^k_{j,1} \cdot \text{bsize}^k_{j,1},...,\sum^i_{j=1} \text{bid}^k_{j,|\tau_k|} \cdot \text{bsize}^k_{j,|\tau_k|}) )$
$= mean( ( \sum^i_{j=1} \text{asize}^k_{j,1},...,\sum^i_{j=1}\text{asize}^k_{j,|\tau_k|}) )$
$= mean( ( \sum^i_{j=1} \text{ask}^k_{j,1} \cdot \text{asize}^k_{j,1},...,\sum^i_{j=1} \text{ask}^k_{j,|\tau_k|} \cdot \text{asize}^k_{j,|\tau_k|}) )$
$= mean( ( \text{ask}^k_{1,1} - \text{bid}^k_{1,1},...,\text{ask}^k_{1,|\tau_k|} - \text{bid}^k_{1,|\tau_k|}) )$
$= mean( ( \frac {\text{ask}^k_{1,1} - \text{bid}^k_{1,1}}{ \frac {\text{ask}^k_{1,1} + \text{bid}^k_{1,1}} {2}},...,\frac {\text{ask}^k_{1,|\tau_k|} - \text{bid}^k_{1,|\tau_k|}}{ \frac {\text{ask}^k_{1,|\tau_k|} + \text{bid}^k_{1,|\tau_k|}} {2}}) )$
, where
$i \in \{1,2,...,\text{LOB depth}=5\}$
$\tau_k= \{ \text{entry times in LOB which are inside the $k^{th}$ minute interval} \} $
$observable^{k}_{j,l}$ : $l^{th}$ value of the observable's values inside the $k^{th}$ minute interval at level $j$
import pandas as pd
from LiqVars import *
date=filedates_str[0]
print(date)
df = get_df(date)
df
masks, indices = get_mask_to_avg(df, freq=1, precision='m')
df.iloc[masks[0][0]:masks[0][-1]]
results = get_all(df,date)
get_significant_figures(results, 2, 0.001)
print([i[:5] for i in get_clocks_inbetween('10:00:00.000',get_clocks(df)[-1][-1], freq=1, precision='m') \
if not indices.count(i[:5])])
$\hat{S}_{t_n}$ : Accumulated volume at $i^{th}$ level $\longrightarrow$ Average price per share
$\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\; X_{\pm i}= \sum_{j=1}^i x_{\pm j}\longrightarrow
\hat{S}_{t_n}(X_{\pm i})= \frac { \sum_{j=1}^i p_{\pm j} x_{\pm j} } {X_{\pm i}} \;\; , \;\; x_{\pm j}$: Volume at $j^{th}$ level
Source: http://www.sciencedirect.com/science/article/pii/S0378426618301353
bid_side_vols = get_vol(df,3,'bid')
bid_side_acc_vols = np.cumsum(bid_side_vols)
bid_side_prices = get_price(df,3,'bid')
print(bid_side_acc_vols,bid_side_prices)
bid_avg_price_per_share = [sum([i*k for i,k in zip(bid_side_prices[:m+1],bid_side_vols[:m+1])])/j \
for m,j in enumerate(bid_side_acc_vols)]
print(bid_avg_price_per_share)
def f(x,a,b): return a+b*x
popt_bid, _ = curve_fit(f, bid_side_acc_vols, bid_avg_price_per_share, p0=[1,1])
plt.plot(bid_side_acc_vols,bid_avg_price_per_share,'o')
plt.plot(bid_side_acc_vols,[f(i,*popt_bid) for i in bid_side_acc_vols])
print(popt_bid[-1])
bid_side_acc_vols_reflected = -bid_side_acc_vols[::-1]
bid_avg_price_per_share_reflected = bid_avg_price_per_share[::-1]
popt_bid_reflected, _ = curve_fit(f, bid_side_acc_vols_reflected, bid_avg_price_per_share_reflected, p0=[1,1])
plt.plot(bid_side_acc_vols_reflected,bid_avg_price_per_share_reflected,'o')
plt.plot(bid_side_acc_vols_reflected,[f(i,*popt_bid_reflected) for i in bid_side_acc_vols_reflected])
print(popt_bid_reflected[-1])
ask_side_vols = get_vol(df,3,'ask')
ask_side_acc_vols = np.cumsum(ask_side_vols)
ask_side_prices = get_price(df,3,'ask')
ask_avg_price_per_share = [sum([i*k for i,k in zip(ask_side_prices[:m+1],ask_side_vols[:m+1])])/j \
for m,j in enumerate(ask_side_acc_vols)]
order_acc_vols = list(bid_side_acc_vols_reflected) + list(ask_side_acc_vols)
order_avg_price_per_share = list(bid_avg_price_per_share_reflected) + list(ask_avg_price_per_share)
popt_order, _ = curve_fit(f, order_acc_vols, order_avg_price_per_share, p0=[1,1])
plt.plot(order_acc_vols,order_avg_price_per_share,'o')
plt.plot(order_acc_vols,[f(i,*popt_order) for i in order_acc_vols])
print(popt_order[-1])
plot_index(df,3,date,dpi=300)
get_significant_figures(results[results.columns[-3:]],2,0.001)