今天主要是实现了公司偿债能力指标的量化,构建股票池。
思路:
1.
偿债能力量化指标(短期)
相关指标:
流动比率=流动资产/流动负债
速动比率=(流动资产-存货)/流动负债
现金比率=现金类资产/流动负债
2.
确定偿债能力理论值
流动比率,速动比率,现金比率给定理论值
2.1:
求各个行业股票的均值作为各个指标的理论值
import pandas as pd
import numpy as np
import pickle
import tushare as ts
from sklearn.preprocessing import Imputer
def save_data():
data=ts.get_debtpaying_data(year=2017,quarter=1)
with open('step1/data_debt.pkl','wb') as f:
pickle.dump(data,f)
def get_data():
with open('step1/data_debt.pkl','rb') as f:
data=pickle.load(f)
return data
def data_deal():
data=get_data()
# print(data.columns)
data_array=data.values
# 删除具有缺少值的股票,以及删除*st与st的股票
x_data=[]
for stock in data_array:
if '--' not in stock and stock[1][:3]!='*ST' and stock[1][:2]!='ST':
x_data.append(stock)
new_data=np.array(x_data)
# 将流动比率,速动比率,现金比率拿出来,numpy.adarry格式的
new_data=new_data[:,:5]
#行业分类表格,上次出错就在这里
data_industry=ts.get_industry_classified()
# 删除重复出现的代码,一个股票只能是一个行业
data_industry=data_industry.drop_duplicates('code')
data_industry=pd.DataFrame(data_industry.values[:,-1],index=data_industry['code'],columns=['c_name'])
#按照负债表得到的code,再依据行业分类表格,对负债表中的股票进行行业分类
w=[]
for code in new_data:
try:
w.append(data_industry['c_name'][code[0]])
except:
#对行业分类缺失的股票认定为:其他行业
w.append('其他行业')
final_data=np.hstack((new_data,np.array(w).reshape(-1,1)))
# 负债表中的股票分好类,转换为DataFrame形式的
final_data=pd.DataFrame(final_data,columns=['code','name','currentratio','quickratio','cashratio','c_name'])
# print(final_data)
final_data=pd.DataFrame(np.hstack