天天看點

量化分析1-特征工程1.1、财務資料——總市值和PE1.2、行情資料——25日漲跌幅現在是否ST特征合并

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
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 煙台園城黃金股份有限公司 0.676292 1.002743 0.075966 0.109334 3292.668440
2 000586.XSHE 21.0463 407.0524 彙源通信 計算機、通信和其他電子裝置制造業 0.084702 四川彙源光通信股份有限公司 0.564357 1.599535 0.711899 4.401857 81.783661
3 000985.XSHE 20.4701 33.7868 大慶華科 化學原料和化學制品制造業 0.039648 大慶華科股份有限公司 2019-03-31 0.228049 2.237382 0.764512 7.787478 46.228062
4 600556.XSHG 226.6887 -208.8825 ST慧球 軟體和資訊技術服務業 0.024939 廣西慧金科技股份有限公司 0.681672 1.534540 0.053902 60.376379 5.962597 True
5 600608.XSHG 14.7001 2378.2588 ST滬科 黑色金屬冶煉和壓延加工業 -0.028260 上海寬頻科技股份有限公司 0.646161 1.614730 5.816101 13.893497 25.911403
6 600071.XSHG 29.2555 -99.2737 鳳凰光學 儀器儀表制造業 -0.047739 鳳凰光學股份有限公司 0.472790 1.169294 0.148451 1.246763 288.747797
7 601890.XSHG 54.6858 90.6697 亞星錨鍊 -0.015461 NaN
8 000004.XSHE 69.1570 -250.3860 國農科技 醫藥制造業 0.836099 深圳中國農大科技股份有限公司 0.163786 4.535662 0.662938
9 601718.XSHG 222.2164 -114.2454 際華集團 紡織服裝、服飾業 0.375921 際華集團股份有限公司 0.420433 2.738613 0.141555 0.744656 483.444716
10 603778.XSHG 19.7500 -165.6433 乾景園林 土木工程建築業 0.018018
11 600836.XSHG 30.2878 -43.7923 界龍實業 印刷和記錄媒介複制業 0.080347 上海界龍實業集團股份有限公司 0.730876 0.913507 0.397119 0.921334 390.737769
12 600421.XSHG 21.2226 -222.6517 *ST仰帆 通用裝置制造業 0.193696 湖北仰帆控股股份有限公司 0.785138 0.347653 0.034771 7.173724 50.183138
13 002058.XSHE 30.1241 -215.5228 威爾泰 -0.003383 上海威爾泰工業自動化股份有限公司 0.131286 7.009828 0.533314 2.205086 163.258914
14 000518.XSHE 62.0822 -587.3756 四環生物 0.098329 江蘇四環生物股份有限公司 0.305737 2.700395 0.427178 0.733750 490.630291
15 002423.XSHE 212.4385 -141.7885 中糧資本 其他金融業 0.036464
16 603300.XSHG 53.7946 40.7219 華鐵應急 租賃業 -0.036395 浙江華鐵建築安全科技股份有限公司 0.308076 1.136618 0.037371 15.748571 22.859217
17 000045.XSHE 42.4279 -231.1387 深紡織A 0.139252
18 600671.XSHG 14.6987 -99.4585 天目藥業 -0.032914
19 600975.XSHG 57.8271 -169.4713 新五豐 畜牧業 0.237536 湖南新五豐股份有限公司 0.271259 2.714286 1.280378 4.496826 80.056468
20 600446.XSHG 178.3693 -145.2521 金證股份 0.009726 深圳市金證科技股份有限公司 0.525015 1.598019 1.272702 5.953736 60.466232
21 002428.XSHE 71.8432 -124.1955 雲南鍺業 有色金屬冶煉和壓延加工業 -0.001887 雲南臨滄鑫圓鍺業股份有限公司 0.194244 1.475745 0.243317 1.955290 184.115951
22 300086.XSHE 27.9900 -123.8907 康芝藥業 0.198819
23 600538.XSHG 26.6566 -121.4423 國發股份 批發業 0.261571 北海國發海洋生物産業股份有限公司 0.164816 4.197737 0.294117 5.835953 61.686578
24 002590.XSHE 37.9401 -45.6561 萬安科技 汽車制造業 0.036458 浙江萬安科技股份有限公司 0.467353 1.419771 0.141765 0.939937 383.004207
25 600890.XSHG 49.1736 -160.5955 中房股份 房地産業 0.200878
26 600385.XSHG 11.6857 -103.1429 *ST金泰 0.025779 山東金泰集團股份有限公司 0.711436 1.297288 0.005816
27 600234.XSHG 19.4955 -364.8226 *ST山水 0.007114 山西廣和山水文化傳播股份有限公司 0.857826 0.162083 0.060775
28 600864.XSHG 160.4120 23.1630 哈投股份 資本市場服務 0.079827 哈爾濱哈投投資股份有限公司 0.681170 1.873903 0.020583 6.927726 51.965101
29 300713.XSHE 20.5403 -110.9402 英可瑞 電氣機械和器材制造業 0.023784 深圳市英可瑞科技股份有限公司 0.233626 3.626136 0.311969 3.147327 114.382781
...
3665 002679.XSHE 38.8054 840.2719 福建金森 林業 0.034921 福建金森林業股份有限公司 0.546533 4.024858 0.005973 0.017424 20661.260075
3666 603318.XSHG 37.4011 -51.5528 派思股份 專用裝置制造業 -0.079042 大連派思瓦斯系統股份有限公司 0.518041 1.212190 0.199222 2.569598 140.099752
3667 000020.XSHE 28.9391 468.7081 深華發A 0.000000
3668 002341.XSHE 95.6338 926.3431 新綸科技 0.296811 深圳市新綸科技股份有限公司 0.472343 1.188651 0.064893 0.965029 373.045625
3669 600149.XSHG 19.1981 212.6978 ST坊展 綜合 -0.013459
3670 601212.XSHG 242.8766 86.8249 白銀有色 -0.012012
3671 300648.XSHE 24.4668 950.7939 星雲股份 0.180574 福建星雲電子股份有限公司 0.244180 3.014654 0.430049 2.305498 156.148494
3672 601069.XSHG 99.0888 116.9250 西部黃金 0.061611 西部黃金股份有限公司 0.371280 0.999096 0.374644 2.417007 148.944530
3673 603501.XSHG 1489.9034 5630.9863 韋爾股份 -0.070294 上海韋爾半導體股份有限公司 0.690727 0.709313 0.129665 0.735590 489.403136
3674 601808.XSHG 769.1806 31.1875 中海油服 開采輔助活動 -0.020756 中海油田服務股份有限公司 0.535697 1.276167 0.293838 15.244639 23.614859
3675 000700.XSHE 124.5300 134.4473 模塑科技 0.112294
3676 000893.XSHE 45.5656 116.7959 東淩國際 農副食品加工業 -0.032411
3677 601008.XSHG 41.4560 -4044.8789 連雲港 水上運輸業 0.003205 江蘇連雲港港口股份有限公司 0.583972 0.447947 0.037784 15.933937 22.593287
3678 688321.XSHG 233.9050 1201.6450 微芯生物 -0.105799
3679 300548.XSHE 95.0418 1230.1967 博創科技 0.472850 博創科技股份有限公司 0.154593 4.588279 0.115826 0.867302 415.080159
3680 000554.XSHE 24.2320 1048.5831 泰山石油 0.058741 中國石化山東泰山石油股份有限公司 0.287817 0.770372 2.425697 20.886699 17.235849
3681 300318.XSHE 40.8450 1296.5431 博晖創新 0.149126 北京博晖創新生物技術股份有限公司 0.541381 0.884793 0.229357 1.028200 350.126446
3682 600476.XSHG 22.9525 -203.3730 湘郵科技 0.016884 湖南湘郵科技股份有限公司 0.567464 1.467393 0.579482 4.256108 84.584326
3683 002156.XSHE 286.6956 1416.6488 通富微電 0.006943 通富微電子股份有限公司 0.534477 0.946655 0.517087 4.990624 72.135262
3684 300101.XSHE 65.9405 1435.1690 振芯科技 0.066807 成都振芯科技股份有限公司 0.251711 4.909851 0.068638 0.452855 794.957054
3685 600730.XSHG 29.5088 -879.3200 中國高科 教育 0.088836 中國高科集團股份有限公司 0.348047 20.871838 0.010003 1.499104 240.143423
3686 300618.XSHE 181.7682 1724.7690 寒銳钴業 -0.174808 南京寒銳钴業股份有限公司 0.408432 4.241162 0.169358 0.551533 652.726177
3687 002015.XSHE 98.0534 65.0332 協鑫能科 電力、熱力生産和供應業 0.214300 江蘇霞客環保色紡股份有限公司 0.036410 22.912878 0.252404 1.690099 213.005285
3688 002213.XSHE 31.3120 1911.4472 特爾佳 0.243665 深圳市特爾佳科技股份有限公司 0.105138 7.575821 0.041269 0.624240 576.701078
3689 600517.XSHG 443.5174 231.8448 置信電氣 0.136052 上海置信電氣股份有限公司 0.597835 1.390691 0.553528 6.785512 53.054216
3690 600745.XSHG 1471.1353 193.3398 聞泰科技 0.047068 聞泰科技股份有限公司 0.779784 0.900466 1.023192 10.202054 35.287011
3691 000677.XSHE 33.5223 1266.4793 恒天海龍 化學纖維制造業 0.114908 恒天海龍股份有限公司 0.255158 1.711874 0.225964 2.159967 166.669243
3692 600844.XSHG 52.0460 -23.0732 丹化科技 0.105656 丹化化工科技股份有限公司 0.187176 0.816353 0.422517 9.051410 39.772807
3693 000613.XSHE 22.4286 -6582.2614 大東海A 住宿業 -0.022198 海南大東海旅遊中心股份有限公司 0.107946 2.518450 0.104460 38.551491 9.338160
3694 002459.XSHE 224.7306 -467.8555 晶澳科技 0.193011 秦皇島天業通聯重工股份有限公司 0.143955 3.788168 0.238043 2.383663 151.028068

3695 rows × 14 columns