from quantopian.pipeline import Pipeline
from quantopian.research import run_pipeline
from quantopian.pipeline.filters import QTradableStocksUS
from quantopian.pipeline.data import factset
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
zs = factset.Fundamentals.zscore_qf.latest
my_pipe = Pipeline(
columns={'z_score': zs,
},
screen= QTradableStocksUS()
)
start = '2002-11-01'
end = '2019-03-13'
results = run_pipeline(my_pipe, start, end)
results = results.dropna()
results
median_zs = results.groupby(level=0).median()
ax = median_zs.plot(title='Altman z score median for QTU')
ax.set_xlabel('Trade day')
ax.set_ylabel('Median Altman z score')
results_time = results.reset_index(level=1, drop=True).apply(np.log10)
times = pd.unique(results_time.index)
N_days = len(times)
N_days
N_bins = 100
a_min = results_time['z_score'].min()
a_max = results_time['z_score'].max()
hist = np.empty([N_bins,N_days])
for k,index in enumerate(pd.unique(results_time.index)):
(hist[:,k],bins) = np.histogram(results_time.loc[index,'z_score'].values, bins=N_bins, range=(a_min,a_max), density=True)
plt.imshow(hist, cmap='hot',aspect='auto')
plt.show()