量化分析1-特征工程

1.1、财务数据——总市值和PE

from jqdatasdk import *
import seaborn as sns
import math
import datetime
from tqdm import tqdm
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
df = get_fundamentals(query(valuation,indicator)) 
raw_data = [] 
for index in range(len(df['code'])): 
    raw_data_item = { 
    'code' :df['code'][index], 
    'market_cap':df['market_cap'][index], 
    'pe_ratio' :df['pe_ratio'][index] 
    } 
    raw_data.append(raw_data_item)
# # 按照财务信息中的总市值降序排序
# raw_data = sorted(raw_data,key = lambda item:item['market_cap'], reverse=True) 
# # 剔除总市值排名最小的10%的股票
# fitered_market_cap = raw_data[:int(len(raw_data) * 0.9)] 
# # 剔除PE TTM 小于0或大于100
# filtered_pe = [] 
# for stock in fitered_market_cap: 
#     if stock['pe_ratio'] == None or math.isnan(stock['pe_ratio']) or float(stock['pe_ratio']) < 0 or float(stock['pe_ratio']) > 100: 
#         continue 
#     filtered_pe.append(stock['code'])
#PE数据集
df_pe=pd.DataFrame(raw_data)
df_name=get_all_securities().reset_index().rename(columns={'index':'code'})
df_pe=pd.merge(df_pe,df_name,on='code',how='left')
df_pe=df_pe[['code','market_cap','pe_ratio','display_name']]

1.2、行情数据——25日涨跌幅

current_dt=datetime.datetime.now().strftime('%Y-%m-%d')
CHANGE_PCT_DAY_NUMBER=25
def load_change_pct_data(current_dt,codes):
    change_pct_dict_list = []
    # 计算涨跌幅需要用到前一日收盘价,所以需要多加载一天的数据,
    # 而这里在第二日的开盘前运行,计算前一个交易日收盘后的数据,所以需要再多加载一天
    # 使用固定的25个交易日,而非25个bar计算涨跌幅
    count = CHANGE_PCT_DAY_NUMBER + 1
    # 获取25个交易日的日期
    pre_25_dates = get_trade_days(start_date=None, end_date=current_dt, count=count)
    pre_25_date = pre_25_dates[0]
    pre_1_date = pre_25_dates[-1]
    for code in codes:
        pre_25_data =  get_price(code, start_date=None, end_date=pre_25_date, frequency='daily', fields=['close'], skip_paused=True, fq='post', count=1)
        pre_1_data =  get_price(code, start_date=None, end_date=pre_1_date, frequency='daily', fields=['close'], skip_paused=True, fq='post', count=1)
        pre_25_close = None
        pre_1_close = None
        if str(pre_25_date) == str(pre_25_data.index[0])[:10]:
            pre_25_close = pre_25_data['close'][0]
        if str(pre_1_date) == str(pre_1_data.index[0])[:10]:
            pre_1_close = pre_1_data['close'][0]

        if pre_25_close != None and pre_1_close != None and not math.isnan(pre_25_close) and not math.isnan(pre_1_close):
            change_pct = (pre_1_close - pre_25_close) / pre_25_close
            item = {'code':code, 'change_pct': change_pct}
            change_pct_dict_list.append(item)
    return change_pct_dict_list
def load_change_pct_data_1(current_dt,code):
    change_pct_dict_list = []
    # 计算涨跌幅需要用到前一日收盘价,所以需要多加载一天的数据,
    # 而这里在第二日的开盘前运行,计算前一个交易日收盘后的数据,所以需要再多加载一天
    # 使用固定的25个交易日,而非25个bar计算涨跌幅
    count = CHANGE_PCT_DAY_NUMBER + 1
    # 获取25个交易日的日期
    pre_25_dates = get_trade_days(start_date=None, end_date=current_dt, count=count)
    pre_25_date = pre_25_dates[0]
    pre_1_date = pre_25_dates[-1]
    pre_25_data =  get_price(code, start_date=None, end_date=pre_25_date, frequency='daily', fields=['close'], skip_paused=True, fq='post', count=1)
    pre_1_data =  get_price(code, start_date=None, end_date=pre_1_date, frequency='daily', fields=['close'], skip_paused=True, fq='post', count=1)
    pre_25_close = None
    pre_1_close = None
    if str(pre_25_date) == str(pre_25_data.index[0])[:10]:
        pre_25_close = pre_25_data['close'][0]
    if str(pre_1_date) == str(pre_1_data.index[0])[:10]:
        pre_1_close = pre_1_data['close'][0]

    if pre_25_close != None and pre_1_close != None and not math.isnan(pre_25_close) and not math.isnan(pre_1_close):
        change_pct = (pre_1_close - pre_25_close) / pre_25_close
        item = {'code':code, 'change_pct': change_pct}
        change_pct_dict_list.append(item)
    return change_pct_dict_list

# # 加载标的的涨跌幅信息
# change_pct_dict_list = load_change_pct_data(current_dt,filtered_pe) 
# # 按照涨跌幅升序排序
# change_pct_dict_list = sorted(change_pct_dict_list,key = lambda item:item['change_pct'], reverse=False) 
# # 取跌幅前10%的股票
# change_pct_dict_list = change_pct_dict_list[0:(int(len(change_pct_dict_list)*0.1))]
change_pct_dict_list=[]
for i in tqdm(df_pe['code']):
    change_pct_dict_list.append(load_change_pct_data_1(current_dt,i))
df_stocks_industry_1=pd.DataFrame(list(df_stocks_industry.items()))
df_stocks_industry_1.columns=['code','industry_name']

现在是否ST

df_stoacks_is_st=get_extras('is_st',list(df_stocks_industry_1['code']),start_date='2020-03-06', end_date='2020-03-06')
df_stoacks_is_st=df_stoacks_is_st.T.reset_index().rename(columns={'index':'code','2020-03-06 00:00:00':'is_st'})
df_stoacks_is_st.columns=['code','is_st']

特征合并

# df_pe
df_stocks_industry=pd.merge(df_pe,df_stocks_industry_1,on='code',how='left')
#25日涨跌幅 change_pct_dict_df
df_stocks_industry_change=pd.merge(df_stocks_industry,change_pct_dict_df,on='code',how='left')
#合并资产负债率特征
df_stocks_feature=pd.merge(df_stocks_industry_change,df_liability_vs_assets,on='code',how='left')
#合并流动比率特征 df_current
df_stocks_feature=pd.merge(df_stocks_feature,df_current,on='code',how='left')
#总资产周转率、存货周转率、平均在库天数
df_stocks_feature=pd.merge(df_stocks_feature,df_turnover,on='code',how='left')
#是否st标签
df_stocks_feature=pd.merge(df_stocks_feature,df_stoacks_is_st,on='code',how='left')
df_stocks_feature


code market_cap pe_ratio display_name industry_name change_pct company_name end_date ratio_liability_vs_assets current_ratio ratio_assets_turnover ratio_inventory_turnover ratio_turnover_days is_st
0 000017.XSHE 24.0939 -989.3035 深中华A 铁路、船舶、航空航天和其他运输设备制造业 0.092166 深圳中华自行车(集团)股份有限公司 2018-12-31 0.768163 1.187177 1.637112 51.207251 7.030254 False
1 600766.XSHG 18.9023 -757.5206 园城黄金 有色金属矿采选业 0.125750 烟台园城黄金股份有限公司 2018-12-31 0.676292 1.002743 0.075966 0.109334 3292.668440 False
2 000586.XSHE 21.0463 407.0524 汇源通信 计算机、通信和其他电子设备制造业 0.084702 四川汇源光通信股份有限公司 2018-12-31 0.564357 1.599535 0.711899 4.401857 81.783661 False
3 000985.XSHE 20.4701 33.7868 大庆华科 化学原料和化学制品制造业 0.039648 大庆华科股份有限公司 2019-03-31 0.228049 2.237382 0.764512 7.787478 46.228062 False
4 600556.XSHG 226.6887 -208.8825 ST慧球 软件和信息技术服务业 0.024939 广西慧金科技股份有限公司 2019-03-31 0.681672 1.534540 0.053902 60.376379 5.962597 True
5 600608.XSHG 14.7001 2378.2588 ST沪科 黑色金属冶炼和压延加工业 -0.028260 上海宽频科技股份有限公司 2018-12-31 0.646161 1.614730 5.816101 13.893497 25.911403 True
6 600071.XSHG 29.2555 -99.2737 凤凰光学 仪器仪表制造业 -0.047739 凤凰光学股份有限公司 2019-03-31 0.472790 1.169294 0.148451 1.246763 288.747797 False
7 601890.XSHG 54.6858 90.6697 亚星锚链 铁路、船舶、航空航天和其他运输设备制造业 -0.015461 NaN NaN NaN NaN NaN NaN NaN False
8 000004.XSHE 69.1570 -250.3860 国农科技 医药制造业 0.836099 深圳中国农大科技股份有限公司 2019-03-31 0.163786 4.535662 0.662938 NaN NaN False
9 601718.XSHG 222.2164 -114.2454 际华集团 纺织服装、服饰业 0.375921 际华集团股份有限公司 2019-03-31 0.420433 2.738613 0.141555 0.744656 483.444716 False
10 603778.XSHG 19.7500 -165.6433 乾景园林 土木工程建筑业 0.018018 NaN NaN NaN NaN NaN NaN NaN False
11 600836.XSHG 30.2878 -43.7923 界龙实业 印刷和记录媒介复制业 0.080347 上海界龙实业集团股份有限公司 2018-12-31 0.730876 0.913507 0.397119 0.921334 390.737769 False
12 600421.XSHG 21.2226 -222.6517 *ST仰帆 通用设备制造业 0.193696 湖北仰帆控股股份有限公司 2019-03-31 0.785138 0.347653 0.034771 7.173724 50.183138 True
13 002058.XSHE 30.1241 -215.5228 威尔泰 仪器仪表制造业 -0.003383 上海威尔泰工业自动化股份有限公司 2018-12-31 0.131286 7.009828 0.533314 2.205086 163.258914 False
14 000518.XSHE 62.0822 -587.3756 四环生物 医药制造业 0.098329 江苏四环生物股份有限公司 2018-12-31 0.305737 2.700395 0.427178 0.733750 490.630291 False
15 002423.XSHE 212.4385 -141.7885 中粮资本 其他金融业 0.036464 NaN NaN NaN NaN NaN NaN NaN False
16 603300.XSHG 53.7946 40.7219 华铁应急 租赁业 -0.036395 浙江华铁建筑安全科技股份有限公司 2019-03-31 0.308076 1.136618 0.037371 15.748571 22.859217 False
17 000045.XSHE 42.4279 -231.1387 深纺织A 计算机、通信和其他电子设备制造业 0.139252 NaN NaN NaN NaN NaN NaN NaN False
18 600671.XSHG 14.6987 -99.4585 天目药业 医药制造业 -0.032914 NaN NaN NaN NaN NaN NaN NaN False
19 600975.XSHG 57.8271 -169.4713 新五丰 畜牧业 0.237536 湖南新五丰股份有限公司 2018-12-31 0.271259 2.714286 1.280378 4.496826 80.056468 False
20 600446.XSHG 178.3693 -145.2521 金证股份 软件和信息技术服务业 0.009726 深圳市金证科技股份有限公司 2018-12-31 0.525015 1.598019 1.272702 5.953736 60.466232 False
21 002428.XSHE 71.8432 -124.1955 云南锗业 有色金属冶炼和压延加工业 -0.001887 云南临沧鑫圆锗业股份有限公司 2018-12-31 0.194244 1.475745 0.243317 1.955290 184.115951 False
22 300086.XSHE 27.9900 -123.8907 康芝药业 医药制造业 0.198819 NaN NaN NaN NaN NaN NaN NaN False
23 600538.XSHG 26.6566 -121.4423 国发股份 批发业 0.261571 北海国发海洋生物产业股份有限公司 2018-12-31 0.164816 4.197737 0.294117 5.835953 61.686578 False
24 002590.XSHE 37.9401 -45.6561 万安科技 汽车制造业 0.036458 浙江万安科技股份有限公司 2019-03-31 0.467353 1.419771 0.141765 0.939937 383.004207 False
25 600890.XSHG 49.1736 -160.5955 中房股份 房地产业 0.200878 NaN NaN NaN NaN NaN NaN NaN False
26 600385.XSHG 11.6857 -103.1429 *ST金泰 医药制造业 0.025779 山东金泰集团股份有限公司 2019-03-31 0.711436 1.297288 0.005816 NaN NaN True
27 600234.XSHG 19.4955 -364.8226 *ST山水 计算机、通信和其他电子设备制造业 0.007114 山西广和山水文化传播股份有限公司 2019-03-31 0.857826 0.162083 0.060775 NaN NaN True
28 600864.XSHG 160.4120 23.1630 哈投股份 资本市场服务 0.079827 哈尔滨哈投投资股份有限公司 2019-03-31 0.681170 1.873903 0.020583 6.927726 51.965101 False
29 300713.XSHE 20.5403 -110.9402 英可瑞 电气机械和器材制造业 0.023784 深圳市英可瑞科技股份有限公司 2018-12-31 0.233626 3.626136 0.311969 3.147327 114.382781 False
... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
3665 002679.XSHE 38.8054 840.2719 福建金森 林业 0.034921 福建金森林业股份有限公司 2019-03-31 0.546533 4.024858 0.005973 0.017424 20661.260075 False
3666 603318.XSHG 37.4011 -51.5528 派思股份 专用设备制造业 -0.079042 大连派思燃气系统股份有限公司 2018-12-31 0.518041 1.212190 0.199222 2.569598 140.099752 False
3667 000020.XSHE 28.9391 468.7081 深华发A 计算机、通信和其他电子设备制造业 0.000000 NaN NaN NaN NaN NaN NaN NaN False
3668 002341.XSHE 95.6338 926.3431 新纶科技 化学原料和化学制品制造业 0.296811 深圳市新纶科技股份有限公司 2019-03-31 0.472343 1.188651 0.064893 0.965029 373.045625 False
3669 600149.XSHG 19.1981 212.6978 ST坊展 综合 -0.013459 NaN NaN NaN NaN NaN NaN NaN True
3670 601212.XSHG 242.8766 86.8249 白银有色 有色金属冶炼和压延加工业 -0.012012 NaN NaN NaN NaN NaN NaN NaN False
3671 300648.XSHE 24.4668 950.7939 星云股份 仪器仪表制造业 0.180574 福建星云电子股份有限公司 2018-12-31 0.244180 3.014654 0.430049 2.305498 156.148494 False
3672 601069.XSHG 99.0888 116.9250 西部黄金 有色金属矿采选业 0.061611 西部黄金股份有限公司 2018-12-31 0.371280 0.999096 0.374644 2.417007 148.944530 False
3673 603501.XSHG 1489.9034 5630.9863 韦尔股份 计算机、通信和其他电子设备制造业 -0.070294 上海韦尔半导体股份有限公司 2019-03-31 0.690727 0.709313 0.129665 0.735590 489.403136 False
3674 601808.XSHG 769.1806 31.1875 中海油服 开采辅助活动 -0.020756 中海油田服务股份有限公司 2018-12-31 0.535697 1.276167 0.293838 15.244639 23.614859 False
3675 000700.XSHE 124.5300 134.4473 模塑科技 汽车制造业 0.112294 NaN NaN NaN NaN NaN NaN NaN False
3676 000893.XSHE 45.5656 116.7959 东凌国际 农副食品加工业 -0.032411 NaN NaN NaN NaN NaN NaN NaN False
3677 601008.XSHG 41.4560 -4044.8789 连云港 水上运输业 0.003205 江苏连云港港口股份有限公司 2019-03-31 0.583972 0.447947 0.037784 15.933937 22.593287 False
3678 688321.XSHG 233.9050 1201.6450 微芯生物 医药制造业 -0.105799 NaN NaN NaN NaN NaN NaN NaN False
3679 300548.XSHE 95.0418 1230.1967 博创科技 计算机、通信和其他电子设备制造业 0.472850 博创科技股份有限公司 2019-03-31 0.154593 4.588279 0.115826 0.867302 415.080159 False
3680 000554.XSHE 24.2320 1048.5831 泰山石油 批发业 0.058741 中国石化山东泰山石油股份有限公司 2018-12-31 0.287817 0.770372 2.425697 20.886699 17.235849 False
3681 300318.XSHE 40.8450 1296.5431 博晖创新 专用设备制造业 0.149126 北京博晖创新生物技术股份有限公司 2018-12-31 0.541381 0.884793 0.229357 1.028200 350.126446 False
3682 600476.XSHG 22.9525 -203.3730 湘邮科技 软件和信息技术服务业 0.016884 湖南湘邮科技股份有限公司 2018-12-31 0.567464 1.467393 0.579482 4.256108 84.584326 False
3683 002156.XSHE 286.6956 1416.6488 通富微电 计算机、通信和其他电子设备制造业 0.006943 通富微电子股份有限公司 2018-12-31 0.534477 0.946655 0.517087 4.990624 72.135262 False
3684 300101.XSHE 65.9405 1435.1690 振芯科技 计算机、通信和其他电子设备制造业 0.066807 成都振芯科技股份有限公司 2019-03-31 0.251711 4.909851 0.068638 0.452855 794.957054 False
3685 600730.XSHG 29.5088 -879.3200 中国高科 教育 0.088836 中国高科集团股份有限公司 2019-03-31 0.348047 20.871838 0.010003 1.499104 240.143423 False
3686 300618.XSHE 181.7682 1724.7690 寒锐钴业 有色金属冶炼和压延加工业 -0.174808 南京寒锐钴业股份有限公司 2019-03-31 0.408432 4.241162 0.169358 0.551533 652.726177 False
3687 002015.XSHE 98.0534 65.0332 协鑫能科 电力、热力生产和供应业 0.214300 江苏霞客环保色纺股份有限公司 2019-03-31 0.036410 22.912878 0.252404 1.690099 213.005285 False
3688 002213.XSHE 31.3120 1911.4472 特尔佳 汽车制造业 0.243665 深圳市特尔佳科技股份有限公司 2019-03-31 0.105138 7.575821 0.041269 0.624240 576.701078 False
3689 600517.XSHG 443.5174 231.8448 置信电气 电气机械和器材制造业 0.136052 上海置信电气股份有限公司 2018-12-31 0.597835 1.390691 0.553528 6.785512 53.054216 False
3690 600745.XSHG 1471.1353 193.3398 闻泰科技 计算机、通信和其他电子设备制造业 0.047068 闻泰科技股份有限公司 2018-12-31 0.779784 0.900466 1.023192 10.202054 35.287011 False
3691 000677.XSHE 33.5223 1266.4793 恒天海龙 化学纤维制造业 0.114908 恒天海龙股份有限公司 2019-03-31 0.255158 1.711874 0.225964 2.159967 166.669243 False
3692 600844.XSHG 52.0460 -23.0732 丹化科技 化学原料和化学制品制造业 0.105656 丹化化工科技股份有限公司 2018-12-31 0.187176 0.816353 0.422517 9.051410 39.772807 False
3693 000613.XSHE 22.4286 -6582.2614 大东海A 住宿业 -0.022198 海南大东海旅游中心股份有限公司 2019-03-31 0.107946 2.518450 0.104460 38.551491 9.338160 False
3694 002459.XSHE 224.7306 -467.8555 晶澳科技 电气机械和器材制造业 0.193011 秦皇岛天业通联重工股份有限公司 2018-12-31 0.143955 3.788168 0.238043 2.383663 151.028068 False

3695 rows × 14 columns


上一篇:pandas 前后行操作


下一篇:【回放视频+PPT下载整理】编程语言系列讲座:深度学习JavaScript和React技术