繁簡切換您正在訪問的是FX168財經網,本網站所提供的內容及信息均遵守中華人民共和國香港特別行政區當地法律法規。

FX168財經網>人物頻道>帖子

決策樹在多因子模型中的應用(二)

作者/lcb173376 2019-05-10 04:26 0 來源: FX168財經網人物頻道

上篇內容,我們對決策樹進行了介紹,探討了決策樹的回歸和分類方法,並列出了一些關鍵參數的說明,構建了超參數學習曲線,本篇內容,我們將基於決策樹進行分組回測,對結果進行展示。
開始之前,我們在來回顧一下決策樹,決策樹學習能根據數據的屬性采用樹狀結構建立決策模型,能夠用來解決分類和回歸問題,決策樹方法簡單自然,符合人腦的思維邏輯,除了構建單棵決策樹,我們還可以建立多棵決策樹並通過某種方式將它們結合在一起,綜合投票產生最後的預測值,也就是隨機森林。
本篇報告中我們將基於決策樹進行預測,並將這個模型應用於多因子選股。

關於模型的思路

在用決策樹構建模型的時候,我們先來考慮這個問題,樹模型與傳統的線性模型相比,優勢和缺點在哪里?
首先,它可以處理非數值類特征,如不同板塊風格股票漲跌分類問題,也就是說,我們可以將行業標簽、甚至地域標簽、這樣的非數值特征放入特征數據中。
其次,對於連續數值的非線性問題,就比如不做倒數處理的估值因子PE、PB。理論上拿這些數據應用在決策樹中時,可以不必考慮數據在0軸上下的不同處理方式。
樹模型同樣有其缺陷,單獨決策樹使用時,對特征是帶有一定隨機性的,並且,在對訓練樣本敏感,訓練過程如不加適當的限制,則結果基本上就會過擬合。

參數尋優的問題與方法

模型的參數優化部分可以參考上篇介紹決策樹文章內容,進行學習曲線或者網格搜索,進行剪枝處理。

模型構建過程

參考《人工智能選股之隨機森林模型》中模型構建過程,我們按下面步驟進行預測模型搭建

1.數據獲取:我們選擇股票池為中證500,並剔除ST股票,剔除上市3個月內新股,獲取的數據區間為20090101到20190101,回測區間為20140101到20190101。
2.特征和標簽提取:每個自然月的第一個交易日,計算統計期的 39個因子暴露 度,作為樣本的原始特征;計算下一整個自然月的個股超額收益(以中證500 指數為基準),作為樣本的標簽。
3.特征預處理:進行去極值、標準化、中性化操作。
    a) 中位數去極值:我們取每個月第一個交易日的因子數據,截面上對各個因子值進行去極值操作; 
    b) 缺失值處理:將缺失的因子值設為申萬一級行業相同個股的平均值。 
    c) 行業市值中性化:將填充缺失值後的因子暴露度對行業啞變量和取對數後的市值 做線性回歸,取殘差作為新的因子暴露度。 
    d) 標準化:將因子值減均值除以標準差,得到均值為0,標準差為1的因子值序列  
4.訓練集合成:
    a)使用回歸方法時,在每個月初截面期,將下月收益作為標簽y值,將當前時間往前推 60 個月的樣本合並,隨機選取 70%的樣本作為訓練集,餘下 30%的樣本作為測試集。 
    b)使用分類方法時,在每個月初截面期,選取下月收益排名前 30%的股票作為正例(y = 1),後 30%的 股票作為負例(y = 0)。 將當前時間往前推60個月的樣本合並,隨機選取 70%的樣本作為訓練集,餘下 30%的樣本作為測試集。 
5.樣本內訓練:使用決策樹模型對每期的訓練集進行訓練,並計算測試集得分。
6.樣本外測試:得出模型後,以 T 月月初截面期所有樣本(即個股)預處理後的特征作為模型的輸入,得到每個樣本的 T 1 月的預測值(可以根據該預測值構建策略組合,具體細節參考 下文)

應用於選股策略

進行分層回溯是常見的單因子分析方法,根據因子值對股票進行打分,構建投資組合回測,是最直觀的衡量因子優劣的手段。樹模型屬於分類器,最終在每個月底可以產生對全部個股下月上漲或下跌的預測值(即各決策樹分類結果的投票平均值),可以將預測結果轉換為一個因子合成模型,即在每個月底將因子池中所有因子合成為一個“因子”。接下來,我們對該模型合成的這個“因子”(即個股下期預測值)進行分層回測,從各方面考察該模型的效果。仿照華泰單因子測試系列報告中的思路,分層回測模型構建方法如下

分層回測分析

股票池:中證500股票池股票,剔除 ST 股票,剔除上市 3 個月以內的股票。
回測區間:2014-01-01 至 2019-01-01(5年)
換倉期:在每個自然月第一個交易日核算因子值,在下個自然月首個交易日按當日 收盤價換倉。
數據處理方法:將模型的預測值視作單因子,因子值為空的股票不參與分層。
分層方法:按因子值大小進行排序。
評價方法:回測年化收益率、夏普比率、信息比率、最大回撤、勝率等。

下面是該模型中因子值排名靠前的50只股票組合的超額收益淨值曲線
Img

下面是進行分組回測的各分層組合收益情況,決策樹所呈現出的分層效果並不理想,未能有明顯的分層效果
Img

模型樣本內(外)得分

與決策樹回歸模型相比,得分即是模型判斷的正確率,決策樹分類模型能更直觀的展示決策效果,下面就是對該模型樣本內與樣本外得分情況進行了統計,在每個月月初截面期,將當前時間往前推 60 個月樣本內模型得分記為score_p,將對下一期預測值實際得分記為score_r,統計得分如下
Img
可以看到,樣本內與樣本外得分差異還是較為明顯的,將模型外推進行預測時,預測正確率波動較大。

模型因子特征重要性統計

在上篇決策樹介紹中,我們提及過模型有很多屬性和方法可以進行獲取查看,
在具體的決策樹模型構建中,我們將當期股票的各個因子作為輸入特征,按照股票下月收益情況分為不同類別,也就是以股票下期收益為標簽,以此進行模型訓練。對於決策樹這一非線性分類器,我們依然可以 通過特征劃分過程來計算評估各個因子特征的重要性,
下面我們給出 2014-2019 年間39個模型的特征重要性評分均值柱狀圖
Img
綜合曆史的特征重要性信息來看,波動率、動量、Beta因子對股價的預測能力明顯強於財務類因子,這也印證了A股市場投機行為顯著的特性。

總結說明

這篇內容基本上是在展示機器學習中簡單模型決策樹的工具性,更多的是研究流程方法的說明,從如何構建模型,搭建回測的角度出發,到結果展示匯總。
就模型本身而言,雖然多頭部分有超額收益,但是不足以證明該模型的優越性;模型的準確率也有待提高;特征重要性統計部分能獲知哪些因子對股價影響較大。一定有很多比決策樹更好的方法可以用,比如已知的模型中,由決策樹作為基學習器的集成算法隨機森林模型,就會比決策樹模型要好,有一些認真好學的同學問我,為什麼不直接用隨機森林呢,那就試試吧, 核心的模型代碼替換部分不算多,可以克隆代碼進行操作,或者嘗試更多的模型。


決策樹在多因子模型中的應用¶

  • 第一部分:數據獲取
  • 第二部分:模型構建
  • 第三部分:分層回溯
  • 第四部分:特征重要性
#工具函數
#工具函數
import time
from datetime import datetime, timedelta
import jqdata
import numpy as np
import pandas as pd
import math
from statsmodels import regression
import statsmodels.api as sm
import matplotlib.pyplot as plt
from jqfactor import get_factor_values
import datetime
from jqlib.technical_analysis import *
from scipy import stats

#設置畫圖樣式
plt.style.use('ggplot')

#輸入起止日期,返回所有自然日日期
def get_date_list(begin_date, end_date):
    dates = []
    dt = datetime.strptime(begin_date,"%Y-%m-%d")
    date = begin_date[:]
    while date <= end_date:
        dates.append(date)
        dt += timedelta(days=1)
        date = dt.strftime("%Y-%m-%d")
    return dates

#獲取日期列表
def get_tradeday_list(start,end,frequency=None,count=None):
    if count != None:
        df = get_price('000001.XSHG',end_date=end,count=count)
    else:
        df = get_price('000001.XSHG',start_date=start,end_date=end)
    if frequency == None or frequency =='day':
        return df.index
    else:
        df['year-month'] = [str(i)[0:7] for i in df.index]
        if frequency == 'month':
            return df.drop_duplicates('year-month').index
        elif frequency == 'quarter':
            df['month'] = [str(i)[5:7] for i in df.index]
            df = df[(df['month']=='01') | (df['month']=='04') | (df['month']=='07') | (df['month']=='10') ]
            return df.drop_duplicates('year-month').index
        elif frequency =='halfyear':
            df['month'] = [str(i)[5:7] for i in df.index]
            df = df[(df['month']=='01') | (df['month']=='06')]
            return df.drop_duplicates('year-month').index 
        
def ret_se(start_date='2018-6-1',end_date='2018-7-1',stock_pool=None,weight=0):
    pool = stock_pool
    if len(pool) != 0:
        #得到股票的曆史價格數據
        df = get_price(list(pool),start_date=start_date,end_date=end_date,fields=['close']).close
        df = df.dropna(axis=1)
        #獲取列表中的股票流通市值對數值
        df_mkt = get_fundamentals(query(valuation.code,valuation.circulating_market_cap).filter(valuation.code.in_(df.columns)))
        df_mkt.index = df_mkt['code'].values
        fact_se =pd.Series(df_mkt['circulating_market_cap'].values,index = df_mkt['code'].values)
        fact_se = np.log(fact_se)
    else:
        df = get_price('000001.XSHG',start_date=start_date,end_date=end_date,fields=['close'])
        df['v'] = [1]*len(df)
        del df['close']
    #相當於昨天的百分比變化
    pct = df.pct_change()+1
    pct.iloc[0,:] = 1
    if weight == 0:
        #等權重平均收益結果
        se = pct.cumsum(axis=1).iloc[:,-1]/pct.shape[1]
        return se
    else:
        #按權重的方式計算
        se = (pct*fact_se).cumsum(axis=1).iloc[:,-1]/sum(fact_se)
        return se
    
#獲取所有分組pct
def get_all_pct(pool_dict,trade_list,groups=5):
    num = 1
    for s,e in zip(trade_list[:-1],trade_list[1:]):
        stock_list = pool_dict[s]
        stock_num = len(stock_list)//groups
        if num == 0:
            pct_se_list = []
            for i in range(groups):
                pct_se_list.append(ret_se(start_date=s,end_date=e,stock_pool=stock_list[i*stock_num:(i+1)*stock_num]))
            pct_df1 = pd.concat(pct_se_list,axis=1)
            pct_df = pd.concat([pct_df,pct_df1],axis=0)
        else:
            pct_se_list = []
            for i in range(groups):
                pct_se_list.append(ret_se(start_date=s,end_date=e,stock_pool=stock_list[i*stock_num:(i+1)*stock_num]))
            pct_df = pd.concat(pct_se_list,axis=1)    
            num = 0
    return pct_df

def tradedays_before(date,count):#獲取指定交易日往前推count天交易日
    date = get_price('000001.XSHG',end_date=date,count=count+1).index[0]
    return date

#進行新股、St股過濾,返回篩選後的股票
def filter_stock(stockList,date,days=21*3):
    
    #去除上市距beginDate不足3個月的股票
    def delect_stop(stocks,beginDate,n=days):
        stockList=[]
        beginDate = datetime.datetime.strptime(beginDate, "%Y-%m-%d")
        for stock in stocks:
            start_date=get_security_info(stock).start_date
            if start_date<(beginDate-datetime.timedelta(days=n)).date():
                stockList.append(stock)
        return stockList
    
    #剔除ST股
    st_data=get_extras('is_st',stockList, count = 1,end_date=date)
    stockList = [stock for stock in stockList if not st_data[stock][0]]
    
    #剔除停牌、新股及退市股票
    stockList=delect_stop(stockList,date)
    '''
    #剔除開盤漲跌停
    #如果需要收盤漲跌停可以改字段即可
    df = get_price(stockList,end_date=date,fields=['open','high_limit','low_limit'],count=1).iloc[:,0,:]
    df['h_limit']=(df['open']==df['high_limit'])
    df['l_limit']=(df['open']==df['low_limit'])
    stockList = [df.index[i] for i in range(len(df)) if not (df.h_limit[i] or df.l_limit[i])] #過濾漲跌停股票
    '''
    return stockList

第一部分 數據獲取部分

#第一部分:數據獲取,X,Y
#參數及工具函數部分
from jqfactor import *
import warnings  
warnings.filterwarnings('ignore') 
#因子數據獲取函數
#獲取時間為date的全部因子數據
def get_factor_data(stock,date):
    data=pd.DataFrame(index=stock)
    q = query(valuation,balance,cash_flow,income,indicator).filter(valuation.code.in_(stock))
    df = get_fundamentals(q, date)
    df['market_cap']=df['market_cap']*100000000
    factor_data=get_factor_values(stock,['roe_ttm','roa_ttm','total_asset_turnover_rate',\
                               'net_operate_cash_flow_ttm','net_profit_ttm','net_profit_ratio',\
                              'cash_to_current_liability','current_ratio',\
                             'gross_income_ratio','non_recurring_gain_loss',\
                            'operating_revenue_ttm','net_profit_growth_rate'],end_date=date,count=1)
    factor=pd.DataFrame(index=stock)
    for i in factor_data.keys():
        factor[i]=factor_data[i].iloc[0,:]
    df.index = df['code']
    data['code'] = df['code']
    del df['code'],df['id']
    #合並得大表
    df=pd.concat([df,factor],axis=1)
    #總市值取對數
    data['size_lg']=np.log(df['market_cap'])
    #淨利潤(TTM)/總市值
    data['EP']=df['net_profit_ttm']/df['market_cap']
    #淨資產/總市值
    data['BP']=1/df['pb_ratio']
    #營業收入(TTM)/總市值
    data['SP']=1/df['ps_ratio']
    #淨現金流(TTM)/總市值
    data['NCFP']=1/df['pcf_ratio']
    #經營性現金流(TTM)/總市值
    data['OCFP']=df['net_operate_cash_flow_ttm']/df['market_cap']
    #淨利潤同比增長率
    data['net_g'] = df['net_profit_growth_rate']
    #淨利潤(TTM)同比增長率/PE_TTM
    data['G/PE']=df['net_profit_growth_rate']/df['pe_ratio']
    #ROE_ttm
    data['roe_ttm']=df['roe_ttm']
    #ROE_YTD
    data['roe_q']=df['roe']
    #ROA_ttm
    data['roa_ttm']=df['roa_ttm']
    #ROA_YTD
    data['roa_q']=df['roa']
    #淨利率
    data['netprofitratio_ttm'] = df['net_profit_ratio']
    #毛利率TTM
    data['grossprofitmargin_ttm']=df['gross_income_ratio']
    #毛利率YTD
    data['grossprofitmargin_q']=df['gross_profit_margin']

    #扣除非經常性損益後淨利潤率YTD
    data['profitmargin_q']=df['adjusted_profit']/df['operating_revenue']
    #資產周轉率TTM
    data['assetturnover_ttm']=df['total_asset_turnover_rate']
    #總資產周轉率YTD 營業收入/總資產
    data['assetturnover_q']=df['operating_revenue']/df['total_assets']
    #經營性現金流/淨利潤TTM
    data['operationcashflowratio_ttm']=df['net_operate_cash_flow_ttm']/df['net_profit_ttm']
    #經營性現金流/淨利潤YTD
    data['operationcashflowratio_q']=df['net_operate_cash_flow']/df['net_profit']
    #淨資產
    df['net_assets']=df['total_assets']-df['total_liability']
    #總資產/淨資產
    data['financial_leverage']=df['total_assets']/df['net_assets']
    #非流動負債/淨資產
    data['debtequityratio']=df['total_non_current_liability']/df['net_assets']
    #現金比率=(貨幣資金+有價證券)÷流動負債
    data['cashratio']=df['cash_to_current_liability']
    #流動比率=流動資產/流動負債*100%
    data['currentratio']=df['current_ratio']
    #總市值取對數
    data['ln_capital']=np.log(df['market_cap'])
    #TTM所需時間
    his_date = [pd.to_datetime(date) - datetime.timedelta(90*i) for i in range(0, 4)]
    tmp = pd.DataFrame()
    tmp['code']=list(stock)
    for i in his_date:
        tmp_adjusted_dividend = get_fundamentals(query(indicator.code, indicator.adjusted_profit, \
                                                     cash_flow.dividend_interest_payment).
                                               filter(indicator.code.in_(stock)), date = i)
        tmp=pd.merge(tmp,tmp_adjusted_dividend,how='outer',on='code')

        tmp=tmp.rename(columns={'adjusted_profit':'adjusted_profit'+str(i.month), \
                                'dividend_interest_payment':'dividend_interest_payment'+str(i.month)})
    tmp=tmp.set_index('code')
    tmp_columns=tmp.columns.values.tolist()
    tmp_adjusted=sum(tmp[[i for i in tmp_columns if 'adjusted_profit'in i ]],1)
    tmp_dividend=sum(tmp[[i for i in tmp_columns if 'dividend_interest_payment'in i ]],1)
    #扣除非經常性損益後淨利潤(TTM)/總市值
    data['EPcut']=tmp_adjusted/df['market_cap']
    #近12個月現金紅利(按除息日計)/總市值
    data['DP']=tmp_dividend/df['market_cap']
    #扣除非經常性損益後淨利潤率TTM
    data['profitmargin_ttm']=tmp_adjusted/df['operating_revenue_ttm']
    #營業收入(YTD)同比增長率
    #_x現在 _y前一年
    his_date = pd.to_datetime(date) - datetime.timedelta(365)
    name=['operating_revenue','net_profit','net_operate_cash_flow','roe']
    temp_data=df[name]
    his_temp_data = get_fundamentals(query(valuation.code, income.operating_revenue,income.net_profit,\
                                            cash_flow.net_operate_cash_flow,indicator.roe).
                                      filter(valuation.code.in_(stock)), date = his_date)
    his_temp_data=his_temp_data.set_index('code')
    #重命名 his_temp_data last_year
    for i in name:
        his_temp_data=his_temp_data.rename(columns={i:i+'last_year'})

    temp_data =pd.concat([temp_data,his_temp_data],axis=1)
    #營業收入(YTD)同比增長率
    data['sales_g_q']=temp_data['operating_revenue']/temp_data['operating_revenuelast_year']-1
    #淨利潤(YTD)同比增長率
    data['profit_g_q']=temp_data['net_profit']/temp_data['net_profitlast_year']-1
    #經營性現金流(YTD)同比增長率
    data['ocf_g_q']=temp_data['net_operate_cash_flow']/temp_data['net_operate_cash_flowlast_year']-1
    #ROE(YTD)同比增長率
    data['roe_g_q']=temp_data['roe']/temp_data['roelast_year']-1
    
    
    #計算beta部分
    #輔助線性回歸的函數
    def linreg(X,Y,columns=3):
        X=sm.add_constant(array(X))
        Y=array(Y)
        if len(Y)>1:
            results = regression.linear_model.OLS(Y, X).fit()
            return results.params
        else:
            return [float("nan")]*(columns+1)
    #個股60個月收益與上證綜指回歸的截距項與BETA
    stock_close=get_price(list(stock), count = 12*20+1, end_date=date, frequency='daily', fields=['close'])['close']
    SZ_close=get_price('000001.XSHG', count = 12*20+1, end_date=date, frequency='daily', fields=['close'])['close']
    stock_pchg=stock_close.pct_change().iloc[1:]
    SZ_pchg=SZ_close.pct_change().iloc[1:]
    beta=[]
    stockalpha=[]
    for i in stock:
        temp_beta, temp_stockalpha = stats.linregress(SZ_pchg, stock_pchg[i])[:2]
        beta.append(temp_beta)
        stockalpha.append(temp_stockalpha)
    #此處alpha beta為list
    #data['alpha']=stockalpha
    data['beta']=beta
    
    #反轉
    data['reverse_1m']=stock_close.iloc[-21]/stock_close.iloc[-1]-1
    data['reverse_3m']=stock_close.iloc[-63]/stock_close.iloc[-1]-1
    
    #波動率(一個月、三個月標準差)
    data['std_1m']=stock_close[-20:].std()
    data['std_3m']=stock_close[-60:].std()
    
    #換手率
    #tradedays_1m = get_tradeday_list(start=date,end=date,frequency='day',count=21)#最近一個月交易日
    tradedays_3m = get_tradeday_list(start=date,end=date,frequency='day',count=63)#最近一個月交易日
    data_turnover_ratio=pd.DataFrame()
    data_turnover_ratio['code']=list(stock)
    for i in tradedays_3m:
        q = query(valuation.code,valuation.turnover_ratio).filter(valuation.code.in_(stock))
        temp = get_fundamentals(q, i)
        data_turnover_ratio=pd.merge(data_turnover_ratio, temp,how='left',on='code')
        data_turnover_ratio=data_turnover_ratio.rename(columns={'turnover_ratio':i})
    data['turn_3m']= (data_turnover_ratio.set_index('code').T).mean()
    data['turn_1m']= (data_turnover_ratio.set_index('code').T)[-21:].mean()    
    '''
    #技術指標部分
    date_1 = tradedays_before(date,1)
    data['PSY']=pd.Series(PSY(stock, date_1, timeperiod=20))
    data['RSI']=pd.Series(RSI(stock, date_1, N1=20))
    data['BIAS']=pd.Series(BIAS(stock,date_1, N1=20)[0])
    dif,dea,macd=MACD(stock, date_1, SHORT = 10, LONG = 30, MID = 15)
    #data['DIF']=pd.Series(dif)
    #data['DEA']=pd.Series(dea)
    data['MACD']=pd.Series(macd)
    '''
    return data
#多期獲取數據
#輸入:指數名稱,統計時間列表
#輸出:字典,key為時間,vlaues為因子值數據

factor_data_dict = {}

#設置統計數據區間
index = '000905.XSHG' #中證500
date_start = '2009-1-1'
date_end   = '2019-1-1'

#獲取交易日列表,每月首個交易日
date_list = get_tradeday_list(start=date_start,end=date_end,frequency='month',count=None)
#循環獲取因子數據,並將值存在字典里面(耗時較長)
#並計算個期股票收益情況,加入指數漲跌幅
import time  
t1 = time.time()
for date_1,date_2 in zip(date_list[:-1],date_list[1:]):
    pool = get_index_stocks(index,date = date_1)
    pool = filter_stock(pool,str(date_1)[:10],days=21*3) #進行新股、ST股票過濾
    #計算指數漲跌幅
    df_1 = get_price(index,end_date=date_1,fields=['close'],count = 1)['close']
    df_2 = get_price(index,end_date=date_2,fields=['close'],count = 1)['close']
    index_pct = df_2.values[0]/df_1.values[0] - 1#具體數值
    
    #計算各股票漲跌幅
    df_1 = get_price(pool,end_date=date_1,fields=['close'],count = 1)['close']
    df_2 = get_price(pool,end_date=date_2,fields=['close'],count = 1)['close']
    df_3 = pd.concat([df_1,df_2],axis=0).T #進行合並
    stock_pct = df_3.iloc[:,1]/df_3.iloc[:,0] - 1 #計算pct,series
    
    #記錄因子值
    factor_df = get_factor_data(pool,date=date_1) #進行因子值獲取
    factor_df['init_pct'] = stock_pct
    factor_df['pct'] = stock_pct-index_pct
    del factor_df['code']
    
    #對數據進行處理、標準化、去極值、中性化
    factor_df = winsorize_med(factor_df, scale=3, inclusive=True, inf2nan=True, axis=0) #中位數去極值處理
    factor_df = standardlize(factor_df, inf2nan=True, axis=0) #對每列做標準化處理
    factor_df = neutralize(factor_df, how=['sw_l1', 'market_cap'], date=date_1, axis=0,fillna='sw_l1')#中性化
    factor_df['pct_init'] =  stock_pct-index_pct
    factor_df['pct_'] =  stock_pct
    factor_data_dict[date_1] = factor_df
t2 = time.time()
print('計算因子耗時:{0}'.format(t2-t1))
factor_data_dict[date_1].head(5)
計算因子耗時:1145.5814056396484
.dataframe tbody tr th:only-of-type { vertical-align: middle; } .dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; }
size_lg EP BP SP NCFP OCFP net_g G/PE roe_ttm roe_q roa_ttm roa_q netprofitratio_ttm grossprofitmargin_ttm grossprofitmargin_q profitmargin_q assetturnover_ttm assetturnover_q operationcashflowratio_ttm operationcashflowratio_q financial_leverage debtequityratio cashratio currentratio ln_capital EPcut DP profitmargin_ttm sales_g_q profit_g_q ocf_g_q roe_g_q beta reverse_1m reverse_3m std_1m std_3m turn_3m turn_1m init_pct pct pct_init pct_
000006.XSHE -0.077817 1.022843 -0.602105 -1.089261 -1.690606 0.147160 -0.019733 -0.671067 1.540722 0.341068 1.626340 0.662259 1.434476 0.132095 0.385895 1.152251 0.061247 0.167706 -0.249980 1.733690 -1.117797 -1.064845 1.114055 0.403413 -0.077817 1.730939 -0.743708 1.838809 0.650402 0.243165 1.226862 0.248770 0.314806 -0.115978 -0.340048 -0.173895 -0.217768 1.133665 1.336548 -0.016822 -0.016822 0.048918 0.099206
000008.XSHE 0.318744 0.442186 -0.239901 -1.021916 -0.353649 -0.936245 1.302409 1.288474 0.521635 -0.619642 1.184582 -0.286871 1.819247 1.232121 1.221166 0.623923 -0.642162 -0.778225 -1.075468 -0.326893 -1.278588 -1.032454 -0.537143 0.567402 0.318744 -0.666567 -0.870062 -0.032160 0.760546 -0.329002 -0.287981 -0.371484 -1.893115 -0.786041 -0.266331 -0.557842 -0.623865 1.174789 1.514848 -1.856744 -1.856744 -0.137645 -0.087356
000009.XSHE 0.059027 -0.288493 -0.858187 0.737852 1.266018 0.668415 -0.594483 -0.461260 -0.082877 -0.307023 -0.144768 -0.098511 -0.919138 0.770937 0.846138 -0.286520 0.332105 0.308008 0.394805 1.820813 0.975812 1.050637 -0.102593 -0.111634 0.059027 0.224068 0.832473 -0.138303 0.322757 -1.032347 1.423243 -1.632225 0.801086 0.333655 0.090969 0.248720 -0.004989 0.071895 0.110714 0.937600 0.937600 0.168074 0.218362
000012.XSHE 0.136297 -1.030894 -0.277389 -0.274747 1.476351 0.032150 -1.458816 -1.832720 -0.503143 -0.992636 -0.487247 -0.940615 -0.599767 -0.429434 -0.386729 -0.644088 0.060920 -0.231125 0.701075 1.463804 -0.213630 0.528676 0.315127 -0.576583 0.136297 0.371685 0.396632 0.057958 -1.145115 -1.296244 -0.251740 -1.064579 -0.025827 0.746286 0.276546 -0.471837 -0.484961 -1.771504 -1.472941 -0.207813 -0.207813 -0.012103 0.038186
000021.XSHE 0.063854 1.037131 0.604084 2.067482 1.748452 1.288336 0.870117 0.651142 0.552214 1.791641 0.175554 1.216013 -0.526307 -1.782653 -1.766242 -0.473181 1.891939 2.143147 0.810513 0.433656 0.701762 -0.484696 -0.575940 -1.168946 0.063854 -0.043852 0.583482 -0.485850 0.486683 0.949440 1.676843 1.343296 0.276628 -0.397713 0.020647 -0.620988 -0.665743 -1.513322 -1.475897 1.245757 1.245757 0.101726 0.152015

下面兩段代碼將因子值存儲

主要是方便下次使用的時候不用計算

#將計算出來的因子值進行存儲
#使用pickle模塊將數據對象保存到文件
import pickle
pkl_file = open('factor_data_10year.pkl', 'wb')
pickle.dump(factor_data_dict, pkl_file, 0)
pkl_file.close()
#讀取計算出來的因子值
import pickle
pkl_file = open('factor_data_10year.pkl', 'rb')
factor_data_dict = pickle.load(pkl_file)
pkl_file.close()
#數據合並,用於模型訓練
#將字典組成一個無日期的大表
all_data = pd.DataFrame()
for d in date_list[:60]:
    all_data = pd.concat([all_data,factor_data_dict[d]],axis=0) #進行縱向拚接
print(d)
print(all_data.shape)
all_data.head(5)
2013-12-02 00:00:00
(29953, 43)
.dataframe tbody tr th:only-of-type { vertical-align: middle; } .dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; }
size_lg EP BP SP NCFP OCFP net_g G/PE roe_ttm roe_q roa_ttm roa_q netprofitratio_ttm grossprofitmargin_ttm grossprofitmargin_q profitmargin_q assetturnover_ttm assetturnover_q operationcashflowratio_ttm operationcashflowratio_q financial_leverage debtequityratio cashratio currentratio ln_capital EPcut DP profitmargin_ttm sales_g_q profit_g_q ocf_g_q roe_g_q beta reverse_1m reverse_3m std_1m std_3m turn_3m turn_1m init_pct pct pct_init pct_
000005.XSHE 0.218419 -1.421841 -1.411739 -0.776978 0.826656 0.278145 -1.515751 -0.513046 -1.037885 0.008567 -0.795807 0.062137 -1.129902 1.037291 0.919271 1.452092 -0.437273 -0.132339 -0.792417 1.712005 -0.615734 -1.899612 1.545444 -2.577693 0.218419 -1.111687 -1.425837 -0.975547 0.780701 -0.283862 1.824256 -0.009487 -1.909712 -1.016695 -0.206580 -0.518062 -0.118213 -0.267275 0.168485 -0.236400 -0.236400 -0.020736 0.121094
000006.XSHE 0.289643 1.550919 -0.051024 0.104479 -1.397705 -0.841481 1.200496 1.638472 1.525065 -0.409914 0.578651 -0.376942 0.958430 0.992241 0.871384 -0.513885 -0.119323 -0.312312 -0.795852 1.712330 1.466390 0.693585 -1.462381 0.347261 0.289643 1.712075 1.585837 1.215114 -1.340155 -0.647242 -0.323988 -0.424979 0.493861 -0.643682 -0.215120 -0.814858 -0.751414 0.006056 0.277672 -0.983345 -0.983345 -0.087284 0.054545
000016.XSHE 0.192169 1.196074 1.291352 1.212567 1.157052 -0.491948 1.445536 1.165302 -0.253739 -0.050230 -0.543191 -0.487930 -0.414085 -0.222880 -0.142152 -0.239674 0.642469 0.609054 -0.259461 -0.366880 0.608672 -0.034761 0.354808 -0.273792 0.192169 1.413782 -0.541245 -0.409126 -0.030765 0.974871 -0.842630 0.759949 0.652941 1.373805 0.088552 -0.985765 -1.435069 0.323509 0.113997 0.502629 0.502629 -0.031440 0.110390
000028.XSHE 0.277450 -0.308382 -0.703722 1.662619 0.190830 -0.262868 -0.154040 -0.272183 1.197975 1.054561 -0.685484 -0.116961 -1.147488 -1.798518 -1.642518 -0.924265 1.546786 1.496096 -0.092625 0.201519 2.207526 0.758136 0.389747 -0.737857 0.277450 -0.403217 -0.856295 -1.239574 0.026092 -0.326210 1.323509 -0.354979 -0.981094 -0.732697 -0.762168 1.623814 1.130594 -1.172624 -1.187910 -1.324751 -1.324751 -0.173156 -0.031327
000029.XSHE 0.310393 -1.165401 -0.849878 -0.362983 -0.325705 0.203973 0.813398 0.039584 -0.816394 -0.307014 -0.553856 -0.251988 -1.017622 -0.083033 -0.490529 -0.138693 0.159533 0.227901 -0.296634 -1.680921 -0.717029 0.043151 -0.589434 -0.001819 0.310393 -0.876422 -1.255630 -0.640484 -1.113069 0.044635 -1.597728 0.271376 0.860960 1.227973 0.058875 -0.021316 -0.081549 -0.085908 -0.422587 -0.548962 -0.548962 -0.052610 0.089219

空值檢查

for colu in all_data.columns:
    if sum(all_data[colu].isnull())> 0.2*len(all_data[colu]):
        print('因子:%s缺失值較多,不做為統計特征處理'%colu)
        del all_data[colu]
all_data.shape
(29953, 43)
#進行空值處理
for colu in all_data.columns:
    if sum(all_data[colu].isnull())> 0:#0.05*len(all_data[colu]):
        all_data[colu].fillna(all_data[colu].mean(),inplace=True)
        #del all_data[colu]
all_data.shape
(29953, 43)

第二部分 模型搭建 進行因子值預測

  • 滾動獲取因子數據與y
  • 滾動擬合模型
  • 預測y值
  • 保持預測值格式,對接回測
  • 記錄特征重要性,樣本內樣本外得分
#第二部分:決策樹模型
from sklearn import tree
from sklearn.model_selection import train_test_split #對數據進行隨機劃分

進行分類方法處理

#進行因子值預測(分類方式)
df_y = pd.DataFrame()
df_score = pd.DataFrame(index = ['score_p','score_r'])
colus = factor_data_dict[date_list[60]].columns[:-4]
df_features_c = pd.DataFrame(index=colus)

for i in range(60,len(date_list)-1):
    print('正在計算{0}...數據'.format(date_list[i]))

    #數據合並,用於模型訓練
    #將字典組成一個無日期的大表
    all_data = pd.DataFrame()
    for d in date_list[i-60:i]:
        all_data = pd.concat([all_data,factor_data_dict[d]],axis=0) #進行縱向拚接

    #空值NAN值處理
    for colu in all_data.columns:
        if sum(all_data[colu].isnull())> 0.2*len(all_data[colu]):
            print('因子:%s缺失值較多,不做為統計特征處理'%colu)
            del all_data[colu]
    #進行空值處理
    for colu in all_data.columns:
        if sum(all_data[colu].isnull())> 0:#0.05*len(all_data[colu]):
            all_data[colu].fillna(all_data[colu].mean(),inplace=True)
            #del all_data[colu]

    #獲取前三分之一和後三分之一的數據
    all_data = all_data.sort_values('pct_init')
    #print(all_data.shape)
    all_data['num'] = list(range(len(all_data)))
    all_data = all_data[(all_data['num']<=len(all_data)/3) | (all_data['num']>=2*len(all_data)/3)]

    #print(all_data.shape)

    #記錄標簽y
    y1 = (all_data["pct_init"]>0).astype("int") #走完流程在改?
    y  = all_data['pct_init']
    x = all_data.iloc[:,:-5]
    
    X_train, X_test, y_train, y_test = train_test_split(x,y1.values, test_size=0.3)
    #建立最大深度為2的決策樹,並用測試數據來訓練這顆樹
    clf = tree.DecisionTreeClassifier(max_depth = 6
                                         )
    clf = clf.fit(X_train, y_train) #模型訓練
    s_p = clf.score(X_test,y_test)#樣本內得分
    #print(clf.score(X_test,y_test)) #模型得分
    
    #模型預測
    factor_df_temp = factor_data_dict[date_list[i]].iloc[:,:-4]
    factor_df_temp1 = factor_df_temp.dropna(axis=0)
    
    df_temp = pd.DataFrame(index=factor_df_temp1.index)
    df_temp[date_list[i]] = [i[1] for i in clf.predict_proba(factor_df_temp1)]
    
    #記錄模型真實數據得分
    y_t = factor_data_dict[date_list[i]].dropna()
    x_s = y_t.iloc[:,:-4]
    y_s = (y_t["pct_init"]>0).astype("int")
    s_r = clf.score(x_s,y_s)
    
    df_score[date_list[i]] = [s_p,s_r]
    #記錄特征重要性
    df_features_c[date_list[i]] = clf.feature_importances_
    
    df_y = pd.concat([df_y,df_temp],axis=1) #進行橫向拚接
df_y
正在計算2014-01-02 00:00:00...數據
(19969, 44)
正在計算2014-02-07 00:00:00...數據
(19969, 44)
正在計算2014-03-03 00:00:00...數據
(19969, 44)
正在計算2014-04-01 00:00:00...數據
(19969, 44)
正在計算2014-05-05 00:00:00...數據
(19967, 44)
正在計算2014-06-03 00:00:00...數據
(19969, 44)
正在計算2014-07-01 00:00:00...數據
(19971, 44)
正在計算2014-08-01 00:00:00...數據
(19971, 44)
正在計算2014-09-01 00:00:00...數據
(19971, 44)
正在計算2014-10-08 00:00:00...數據
(19971, 44)
正在計算2014-11-03 00:00:00...數據
(19971, 44)
正在計算2014-12-01 00:00:00...數據
(19971, 44)
正在計算2015-01-05 00:00:00...數據
(19971, 44)
正在計算2015-02-02 00:00:00...數據
(19971, 44)
正在計算2015-03-02 00:00:00...數據
(19971, 44)
正在計算2015-04-01 00:00:00...數據
(19971, 44)
正在計算2015-05-04 00:00:00...數據
(19973, 44)
正在計算2015-06-01 00:00:00...數據
(19975, 44)
正在計算2015-07-01 00:00:00...數據
(19975, 44)
正在計算2015-08-03 00:00:00...數據
(19975, 44)
正在計算2015-09-01 00:00:00...數據
(19975, 44)
正在計算2015-10-08 00:00:00...數據
(19975, 44)
正在計算2015-11-02 00:00:00...數據
(19975, 44)
正在計算2015-12-01 00:00:00...數據
(19975, 44)
正在計算2016-01-04 00:00:00...數據
(19975, 44)
正在計算2016-02-01 00:00:00...數據
(19975, 44)
正在計算2016-03-01 00:00:00...數據
(19975, 44)
正在計算2016-04-01 00:00:00...數據
(19975, 44)
正在計算2016-05-03 00:00:00...數據
(19975, 44)
正在計算2016-06-01 00:00:00...數據
(19975, 44)
正在計算2016-07-01 00:00:00...數據
(19973, 44)
正在計算2016-08-01 00:00:00...數據
(19973, 44)
正在計算2016-09-01 00:00:00...數據
(19973, 44)
正在計算2016-10-10 00:00:00...數據
(19973, 44)
正在計算2016-11-01 00:00:00...數據
(19975, 44)
正在計算2016-12-01 00:00:00...數據
(19975, 44)
正在計算2017-01-03 00:00:00...數據
(19975, 44)
正在計算2017-02-03 00:00:00...數據
(19975, 44)
正在計算2017-03-01 00:00:00...數據
(19975, 44)
正在計算2017-04-05 00:00:00...數據
(19975, 44)
正在計算2017-05-02 00:00:00...數據
(19975, 44)
正在計算2017-06-01 00:00:00...數據
(19979, 44)
正在計算2017-07-03 00:00:00...數據
(19981, 44)
正在計算2017-08-01 00:00:00...數據
(19981, 44)
正在計算2017-09-01 00:00:00...數據
(19981, 44)
正在計算2017-10-09 00:00:00...數據
(19981, 44)
正在計算2017-11-01 00:00:00...數據
(19981, 44)
正在計算2017-12-01 00:00:00...數據
(19981, 44)
正在計算2018-01-02 00:00:00...數據
(19981, 44)
正在計算2018-02-01 00:00:00...數據
(19981, 44)
正在計算2018-03-01 00:00:00...數據
(19981, 44)
正在計算2018-04-02 00:00:00...數據
(19981, 44)
正在計算2018-05-02 00:00:00...數據
(19981, 44)
正在計算2018-06-01 00:00:00...數據
(19981, 44)
正在計算2018-07-02 00:00:00...數據
(19979, 44)
正在計算2018-08-01 00:00:00...數據
(19979, 44)
正在計算2018-09-03 00:00:00...數據
(19979, 44)
正在計算2018-10-08 00:00:00...數據
(19979, 44)
正在計算2018-11-01 00:00:00...數據
(19979, 44)
.dataframe tbody tr th:only-of-type { vertical-align: middle; } .dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; }
2014-01-02 00:00:00 2014-02-07 00:00:00 2014-03-03 00:00:00 2014-04-01 00:00:00 2014-05-05 00:00:00 2014-06-03 00:00:00 2014-07-01 00:00:00 2014-08-01 00:00:00 2014-09-01 00:00:00 2014-10-08 00:00:00 2014-11-03 00:00:00 2014-12-01 00:00:00 2015-01-05 00:00:00 2015-02-02 00:00:00 2015-03-02 00:00:00 2015-04-01 00:00:00 2015-05-04 00:00:00 2015-06-01 00:00:00 2015-07-01 00:00:00 2015-08-03 00:00:00 2015-09-01 00:00:00 2015-10-08 00:00:00 2015-11-02 00:00:00 2015-12-01 00:00:00 2016-01-04 00:00:00 2016-02-01 00:00:00 2016-03-01 00:00:00 2016-04-01 00:00:00 2016-05-03 00:00:00 2016-06-01 00:00:00 2016-07-01 00:00:00 2016-08-01 00:00:00 2016-09-01 00:00:00 2016-10-10 00:00:00 2016-11-01 00:00:00 2016-12-01 00:00:00 2017-01-03 00:00:00 2017-02-03 00:00:00 2017-03-01 00:00:00 2017-04-05 00:00:00 2017-05-02 00:00:00 2017-06-01 00:00:00 2017-07-03 00:00:00 2017-08-01 00:00:00 2017-09-01 00:00:00 2017-10-09 00:00:00 2017-11-01 00:00:00 2017-12-01 00:00:00 2018-01-02 00:00:00 2018-02-01 00:00:00 2018-03-01 00:00:00 2018-04-02 00:00:00 2018-05-02 00:00:00 2018-06-01 00:00:00 2018-07-02 00:00:00 2018-08-01 00:00:00 2018-09-03 00:00:00 2018-10-08 00:00:00 2018-11-01 00:00:00
000006.XSHE 0.658940 0.532413 0.544107 0.411765 0.530973 0.542315 0.553860 0.611413 0.456059 0.546445 0.478465 0.593874 0.471284 0.610757 0.580205 0.347783 0.505348 0.793103 0.475219 0.473568 0.436263 0.500534 0.528905 0.402266 0.430657 0.544554 0.525346 0.441176 0.261146 0.574270 0.513089 0.564706 0.327044 0.536718 0.551002 0.621170 0.475983 0.465409 0.662621 0.703704 0.532328 0.406877 0.514706 0.477193 0.616438 0.526055 0.457774 0.390625 0.498242 0.582215 0.566351 0.611940 0.662382 0.509733 0.476807 0.774194 0.503650 0.442251 0.498455
000008.XSHE NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.390977 0.468750 0.487945 0.635228 0.530405 0.472727 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.511290 0.689189 0.447995 0.401611 0.739130
000009.XSHE NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.361516 0.458763 0.498836 0.470523 0.450318 0.489021 0.511290 0.445087 0.447995 0.688822 0.498455
000012.XSHE NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.471284 0.486943 0.450637 0.549505 0.425703 0.452622 0.447754 0.484153 0.581767 0.571923 0.528803 0.648318 0.399211 0.526746 0.449206 0.647256 0.533662 0.481718 0.507299 0.669903 0.231250 0.536729 0.325991 0.307359 0.496585 0.636364 0.605000 0.166667 0.562431 0.461957 0.727941 0.481321 0.565851 0.471213 0.555689 0.431429 0.401848 0.454545 0.498836 0.600624 0.554585 0.407543 0.571042 0.498027 0.386986 0.315789 0.538905
000021.XSHE 0.470508 0.510882 0.403101 0.550206 0.549082 0.542315 0.525986 0.611413 0.456059 0.615132 0.478465 0.479948 0.567594 0.500779 0.580205 0.552356 0.555069 0.553562 0.093750 0.502678 0.581767 0.571923 0.747573 0.416991 0.392357 0.396009 0.646853 0.428965 0.162162 0.574270 0.507299 0.085714 0.461056 0.536729 0.473239 0.307359 0.589777 0.480769 0.469219 0.568584 0.562431 0.567223 0.472982 0.399783 0.546053 0.559596 0.489394 0.541935 0.401848 0.458763 0.833333 0.633779 0.595883 0.684492 0.571042 0.785235 0.704545 0.688822 0.601250
000025.XSHE NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.470588 0.465409 0.162791 0.575290 0.461698 0.445689 0.125000 0.411404 0.258503 0.527578 0.425840 0.556437 0.556416 0.417755 0.559980 0.609244 0.410870 0.509733 0.511290 0.774194 0.447995 0.401611 0.449474
000027.XSHE NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.457547 0.558506 0.565851 0.471213 0.555689 0.625753 0.576155 0.516403 0.498836 0.633779 0.494751 0.591731 0.565412 0.623003 0.548456 0.570410 0.464960
000028.XSHE 0.437443 0.413621 0.567797 0.330579 0.343434 0.503741 0.553860 0.418737 0.536232 0.546445 0.532864 0.502769 0.425430 0.469767 0.445545 0.552356 0.456818 0.553562 0.522199 0.495482 0.364049 0.494432 0.528803 0.648318 0.466395 0.145455 0.071429 0.428965 0.714286 0.574270 0.469459 0.469512 0.621469 0.909091 0.546053 0.220000 0.585903 0.354286 0.437500 0.401021 0.587669 0.461957 0.478599 0.461350 0.697514 0.600592 0.613487 0.481675 0.888889 0.543779 0.682231 0.542079 0.554585 0.591731 0.361582 0.498027 0.474088 0.481132 0.464396
000030.XSHE 0.714286 0.487671 0.440000 0.490741 0.569472 0.509174 0.553860 0.611413 0.642469 0.406817 0.593790 0.485110 0.567594 0.500779 0.580205 0.443396 0.505348 0.500000 0.502706 0.473568 0.312000 0.571923 0.528803 0.506470 0.392357 0.396009 0.525346 0.449355 0.695195 0.643123 0.617921 0.592451 0.563380 0.536718 0.457906 0.514612 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
000031.XSHE 0.766667 0.532413 0.538981 0.574592 0.549082 0.552192 0.443631 0.707317 0.627530 0.702381 0.593790 0.485110 0.381166 0.500779 0.541322 0.488660 0.420571 0.553562 0.324607 0.251701 0.364049 0.438303 0.592157 0.697581 0.610465 0.475394 0.762821 0.527295 0.587002 0.546429 0.617921 0.555233 0.487945 0.536729 0.547038 0.520813 0.363380 0.539216 0.471698 0.677258 0.403738 0.461957 0.654867 0.461350 0.480000 0.402566 0.603083 0.371930 0.599045 0.352113 0.414088 0.619469 0.585492 0.659300 0.641689 0.466019 0.178571 0.637097 0.558449
000039.XSHE NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.090909 0.558506 0.420520 0.612440 1.000000 0.650602 0.190476 0.566421 0.559980 0.542079 0.307692 0.591731 0.690678 0.785235 0.653061 0.638621 0.601250
000042.XSHE 0.535948 0.532413 0.340000 0.411765 0.686275 0.950000 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
000049.XSHE 0.437443 0.588542 0.567797 0.411765 0.294643 0.509174 0.656566 0.512853 0.315217 0.504599 0.532864 0.593874 0.601626 0.438849 0.479741 0.191304 0.498195 0.545614 0.475219 0.495482 0.472527 0.553103 0.795455 0.489950 0.552419 0.526746 0.486717 0.441176 0.714286 0.511111 0.541109 0.469512 0.480944 0.355586 0.083333 0.514612 0.436559 0.365385 0.469219 0.355450 0.266667 0.525164 1.000000 0.556688 0.616438 0.612440 0.603083 0.425926 0.611650 0.516216 0.459722 0.714286 0.662382 0.509733 0.857143 0.375000 0.607463 0.906977 0.474766
000050.XSHE 0.543716 0.680000 0.538981 0.465438 0.262136 0.503741 0.592593 0.270655 0.427885 0.260417 0.695864 0.474041 0.425430 0.664122 0.328767 0.488660 0.555069 0.553562 NaN NaN NaN NaN NaN NaN 0.295858 0.582843 0.377119 0.441176 0.467647 0.463896 0.426396 0.103448 0.492320 0.536729 0.663004 0.569231 0.589777 0.599026 0.515267 0.239669 0.587669 0.436331 0.431851 0.411404 0.480000 0.471213 0.501742 0.452685 0.470000 0.566421 0.498836 0.542079 0.554585 0.591731 NaN NaN NaN NaN NaN
000061.XSHE NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.472982 0.573333 0.565851 0.471213 0.417323 0.750000 0.361516 0.454545 0.490991 0.410678 0.494751 0.489021 0.377119 0.498027 0.548456 0.570410 0.538905
000062.XSHE NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.525974 0.504386 0.031250 0.443396 0.489159 0.460067 0.326425 0.344340 0.333333 0.494432 0.451053 0.487365 0.515991 0.544554 0.500000 0.606742 0.587002 0.336735 0.592814 0.580119 0.543882 0.547445 0.651606 0.445638 0.494792 0.637562 0.529412 0.575290 0.459459 0.406877 0.431851 0.399783 0.525547 0.504274 0.555689 0.462687 0.361516 0.454545 0.498836 0.470523 0.554585 0.550406 0.641689 0.572093 0.607463 0.515856 0.601250
000066.XSHE 0.470508 0.460490 0.403101 0.487805 0.459662 0.461453 1.000000 0.454397 0.456059 0.379447 0.557377 0.502769 0.431280 0.312871 0.479741 0.542857 0.634146 0.227848 0.543734 0.339506 0.432709 0.700000 0.491315 0.495512 0.466395 0.391304 0.071429 0.478261 0.471780 0.000000 0.513089 0.488315 0.339623 0.590778 0.473239 1.000000 0.352359 0.465409 0.563981 0.740741 0.461698 0.552367 0.359788 0.461350 0.438312 0.471213 0.425840 0.438758 0.576155 0.516403 0.322222 0.289902 0.406250 0.403101 0.571042 0.491477 0.447995 0.556069 0.558449
000078.XSHE 0.434343 0.453904 0.457143 0.490934 0.417466 0.542315 0.443631 0.270655 0.445205 0.303136 0.392000 0.254717 0.471284 0.486943 0.316406 0.191304 0.272989 0.326233 0.447754 0.362348 0.436263 0.397340 0.700000 0.329616 0.399211 0.396009 0.449206 0.527295 0.380531 0.463896 0.490614 0.555233 0.492320 0.536729 0.473239 0.501089 0.496585 0.505898 0.253086 0.568584 0.587669 0.550716 0.614072 0.477193 0.616438 0.334294 0.607889 0.462687 0.556416 0.325000 0.862745 0.542079 0.552239 0.489021 0.511290 0.572700 0.704545 0.631164 0.622093
000088.XSHE 0.434343 0.549801 0.613662 0.574592 0.569472 0.509174 0.592593 0.573407 0.495726 0.546445 0.478465 0.485110 0.468208 0.545519 0.482759 0.549505 0.489159 0.466377 0.875000 0.670588 0.333333 0.474206 0.645503 0.638743 0.576679 0.478469 0.260870 0.504266 0.598473 0.463896 0.469459 0.488315 0.581967 0.536718 0.415263 0.501089 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
000089.XSHE NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.589777 0.496054 0.583748 0.568584 0.485520 0.426667 0.523474 0.513097 0.565851 0.450000 0.425840 0.371930 0.380000 0.411051 0.559980 0.542079 0.554585 0.510309 0.545076 0.572093 0.397163 0.442251 0.601250
000090.XSHE 0.502976 0.510882 0.818182 0.647059 0.417466 0.542315 0.225000 0.611413 0.562919 0.615132 0.692460 0.459375 0.567594 0.556420 0.580205 0.488660 0.567976 0.375000 0.543734 0.566584 0.732591 0.553103 0.528803 0.416991 0.581612 0.582843 0.596197 0.358025 0.446837 0.456328 0.469459 0.475610 0.480944 0.355586 0.415263 0.392989 0.496585 0.599026 0.583748 0.473684 0.000000 0.319415 0.514706 0.391892 0.453196 0.471213 0.474453 0.452685 0.498242 0.458763 0.452381 0.470523 0.450318 0.407543 0.511290 0.421687 0.473763 0.442251 0.408284
000099.XSHE 0.424749 0.377528 0.514480 0.529412 0.540741 0.461453 0.457364 0.456583 0.508076 0.406817 0.364154 0.772727 0.525974 0.545519 0.482759 0.523663 0.420571 0.479224 0.680272 0.443719 0.364049 0.797980 0.451053 0.697581 0.399211 0.526746 0.762821 0.530435 0.305322 0.061224 0.504762 0.564706 0.491892 0.536729 0.790698 0.574956 0.559659 0.496054 0.515267 0.568584 0.355263 0.332767 0.523474 0.399783 0.565851 0.402566 0.457774 0.493902 0.556416 0.454545 0.347518 0.490909 0.450318 0.489021 NaN NaN NaN NaN NaN
000156.XSHE NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.576155 0.516403 0.498836 0.542079 0.405952 0.600000 0.433498 0.575334 0.178571 0.556069 0.464396
000158.XSHE NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.388986 0.468750 0.492320 0.536729 0.473239 0.574956 0.402027 0.505898 0.515267 0.473684 0.428302 0.383621 0.274194 0.461350 0.420520 0.471213 0.613487 0.481675 0.576155 0.516403 0.682231 0.542079 0.554585 0.365967 0.396901 0.498027 0.607463 0.556069 0.558449
000400.XSHE NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.490614 0.592451 0.487945 0.469314 0.415263 0.514612 0.494792 0.480769 0.542802 0.584814 0.548523 0.567223 0.431851 0.588710 0.605839 0.474747 0.613487 0.462687 0.576155 0.678668 0.682231 0.741935 0.595883 0.591731 0.565412 0.785235 0.521802 0.268966 0.364706
000401.XSHE NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.522199 0.574074 0.528460 0.500534 0.635638 0.416991 0.493671 0.396009 0.316667 0.428965 0.622222 0.463287 0.490614 0.475610 0.620690 0.461279 0.325991 0.690476 0.536232 0.469426 0.469219 0.568584 0.403738 0.383621 0.431851 0.461350 0.502509 0.471213 0.372960 0.625753 0.576155 0.566421 0.459722 0.289902 0.450318 0.365967 0.377119 0.481106 0.764228 0.694690 0.474359
000409.XSHE 0.424749 0.371758 0.320000 0.296089 0.569364 0.509174 0.483333 0.456583 0.225000 0.406817 0.454155 0.463235 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
000413.XSHE 0.375676 0.664587 0.369369 0.606952 0.686275 0.455466 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
000415.XSHE 0.535948 0.549801 0.440000 0.490934 0.549082 0.542315 0.513473 0.542567 0.562919 0.546445 0.517937 0.485110 0.567594 0.610757 0.439716 0.671642 0.588525 0.565657 0.522199 0.502678 0.581767 0.571923 0.590323 0.506470 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
000417.XSHE 0.535948 0.823529 0.538981 0.574592 0.549082 0.417143 0.608696 0.697531 0.456059 0.546445 0.692460 0.434871 0.381166 0.531507 0.672156 0.347783 0.420571 0.326233 0.447754 0.362348 0.436263 0.474206 0.528905 0.648318 0.399211 0.526746 0.449206 0.540816 0.533662 0.511111 0.657343 0.592451 0.853659 0.669145 0.626016 0.514612 0.611413 0.637562 0.414729 0.528926 0.532328 0.666667 0.616123 0.593520 0.480000 0.322034 0.742173 0.471453 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
603228.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.472982 0.556688 0.502509 0.484615 0.432225 0.404762 0.528416 0.516216 0.459722 0.484496 0.585492 0.284722 0.571042 0.421687 0.481352 0.556901 0.464396
603328.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.471284 0.412856 0.580205 0.523553 0.498195 0.326233 0.447754 0.473568 0.491394 0.388781 0.484536 0.329616 0.552419 0.396009 0.579439 0.504266 0.533662 0.463287 0.507299 0.360169 0.480944 0.536718 0.551002 0.402662 0.411273 0.601036 0.606383 0.244681 0.453767 0.257642 0.460993 0.670732 0.510256 0.402566 1.000000 0.625753 0.576155 0.678668 0.486181 0.600624 0.256410 0.587654 0.545076 0.623003 0.653061 0.462626 0.718631
603355.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.473164 0.475394 0.486717 0.527295 0.533662 0.430809 0.294574 0.580119 0.480944 0.355586 0.374302 0.514612 0.494792 0.429530 0.175676 0.401021 0.428302 0.525164 0.472982 0.556688 0.502509 0.471213 0.372960 0.493902 0.484241 0.454023 0.456961 0.513208 0.529600 0.510309 0.511290 0.421687 0.473763 0.520492 0.601250
603366.XSHG 0.658940 0.453904 0.440000 0.376415 0.564254 0.533333 0.723005 0.456583 0.508076 0.406817 0.536545 0.661290 0.574956 0.610757 0.472785 0.514563 0.656489 0.479224 0.450413 0.566584 0.510095 0.638889 0.493333 0.603645 0.581612 0.474847 0.522673 0.516691 0.592541 0.623094 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
603369.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.471284 0.412856 0.578171 0.523553 0.636364 0.331950 0.556270 0.456522 0.723077 0.553103 0.528905 0.416991 0.581612 0.582843 0.525346 0.504266 0.592541 0.038462 NaN NaN NaN NaN NaN NaN 0.496585 0.525316 0.253086 0.578009 0.532328 0.660287 0.602484 0.513097 0.441472 0.526055 0.504274 0.625753 0.556416 0.566421 0.414088 0.470523 0.598266 0.509733 0.426791 0.562500 0.481352 0.401611 0.498455
603377.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.496585 0.525316 0.409449 0.486741 0.216495 0.681818 0.523474 0.461350 0.565851 0.527578 0.417323 0.390625 0.380000 0.561014 0.414088 0.470523 0.494751 0.587654 0.393829 1.000000 0.736842 0.419940 0.464960
603444.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.472982 0.556688 0.502509 0.527578 0.474453 0.404762 0.528416 0.458763 0.456897 0.435277 0.159091 0.620690 0.530612 0.491477 0.503650 0.419940 0.474766
603515.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.376176 0.461350 0.441472 0.504274 1.000000 0.438758 0.000000 0.411051 0.486181 0.600624 0.405952 0.120000 0.225256 0.341176 0.481352 0.556901 0.626263
603528.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.496585 0.455556 0.583748 0.486741 0.453767 0.257642 0.491071 0.593520 0.502509 0.527578 0.618115 0.295597 0.413374 0.458763 0.456961 0.435277 0.000000 0.606557 NaN NaN NaN NaN NaN
603555.XSHG NaN NaN NaN NaN NaN NaN 0.314655 0.512853 0.445205 0.521688 0.364154 0.474041 0.418919 1.000000 0.553571 0.369565 0.420571 0.460067 0.447754 0.410596 0.491394 0.397340 0.451053 0.392917 0.295858 0.499182 0.486717 0.441176 0.446837 0.430809 0.426396 0.362283 0.510638 0.428830 0.415263 0.402284 0.436559 0.469426 0.469219 0.568584 0.461698 0.550716 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
603556.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.472982 0.556688 0.502509 0.527578 0.603083 0.625753 0.420290 0.582215 0.608081 0.484496 0.159091 0.481481 0.511290 0.575334 0.607463 0.442251 0.498455
603567.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.473164 0.499182 0.486717 0.527295 0.540000 0.463287 0.294574 0.571429 0.480944 0.536729 0.528455 0.448718 0.516738 0.514957 0.333333 0.677258 0.660291 0.550716 0.585129 0.481321 0.565851 0.471213 0.555689 0.625753 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
603568.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.610465 0.475394 0.486717 0.419142 0.533662 0.430809 0.710938 0.580119 0.554731 0.735849 0.551002 0.125000 0.615000 0.514957 0.175676 0.200000 0.453767 0.525164 0.472982 0.556688 0.276596 0.484615 0.137931 0.404762 0.401848 0.516216 0.566351 0.401361 0.410714 0.606557 0.641689 0.572093 0.481352 0.295455 1.000000
603569.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.398585 0.481321 0.502509 0.504274 0.432225 0.295597 0.528416 1.000000 0.456961 0.435277 0.410714 0.120000 0.402574 0.491477 0.000000 0.419940 0.449474
603589.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.399211 0.475394 0.486717 0.419142 0.533662 0.432692 0.509767 0.555233 0.554731 0.536729 0.500605 0.496350 0.536232 0.496054 0.392256 0.437538 0.453767 0.681818 0.398585 0.820000 0.480000 0.526055 0.501742 0.471655 0.528416 0.516216 0.456961 0.401361 0.529600 0.489021 0.511290 0.575334 0.548387 0.556069 0.449474
603658.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.472982 0.481321 0.276596 0.675676 0.489394 0.493902 0.272727 0.561014 0.559980 0.600624 0.585492 0.820513 0.402574 0.421687 0.507614 0.556901 0.498455
603659.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.476807 0.421687 0.481352 0.436975 0.498455
603698.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.447754 0.443719 0.560976 0.309140 0.241706 0.329616 0.399211 0.499182 0.486717 0.441176 0.270588 0.384146 0.700000 0.328492 0.401122 0.536729 0.592593 0.472727 0.779661 0.354286 0.445596 0.371034 0.453767 0.550716 0.658892 0.481321 0.453196 0.527578 0.425840 0.530612 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
603699.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.556270 0.473568 0.156863 0.309140 0.451053 0.487365 0.466395 0.478469 0.583333 0.504266 0.568627 0.546429 0.507299 0.606186 0.327044 0.536729 0.415263 0.520813 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
603766.XSHG 0.470508 0.823529 0.377990 0.769231 0.440171 0.699495 0.513473 0.512853 0.458281 0.406817 0.454155 0.593874 0.567594 0.412856 0.578171 0.347783 0.336066 0.460067 0.447754 0.484153 0.581767 0.553103 0.645503 0.619303 0.586016 0.526746 0.486717 0.590786 0.587002 0.546429 0.507299 0.456979 0.401122 0.536729 0.500605 0.520813 0.536232 0.320896 0.662621 0.584814 0.562431 0.550716 0.727941 0.481321 0.490313 0.559596 0.613487 0.625753 0.593350 0.543779 0.452381 0.484496 0.595883 0.559934 0.571042 0.421687 0.704545 0.688822 0.601250
603799.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.398585 0.593520 0.502509 0.100000 0.388302 0.205882 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
603806.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.272727 0.526746 0.583333 0.463602 0.592541 0.430809 0.504762 0.476626 0.401122 0.536729 0.457906 0.448718 0.496585 0.601036 0.333333 0.586538 0.453767 0.525164 0.585129 0.481321 0.616438 0.675676 0.327119 0.471453 0.380000 0.543779 1.000000 0.484496 1.000000 0.820513 0.571042 0.498027 0.474088 0.210000 0.119048
603816.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.398585 0.481321 0.502509 0.504274 0.372960 0.904762 0.153846 0.516216 0.456961 0.611940 0.410714 0.509733 0.402574 0.491477 0.481352 0.419940 0.449474
603866.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.496585 0.514957 0.583748 0.486741 0.882353 0.257642 0.472982 0.481321 0.525547 0.559596 0.489394 0.493902 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
603868.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.352359 0.514957 0.583748 0.486741 0.644068 0.406877 0.398585 0.411404 0.441472 0.484615 0.432225 0.404762 0.401848 0.516216 0.456961 0.480460 0.529600 0.509733 0.476807 0.422505 0.481352 0.419940 0.498455
603877.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.472982 0.481321 0.502509 0.471213 0.327119 0.404762 0.153846 0.516216 0.456961 0.484496 0.585492 0.509733 0.530612 0.491477 0.447995 0.442251 0.449474
603883.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.473164 0.396009 0.486717 0.527295 0.533662 0.481718 0.418367 0.475610 0.543882 0.536729 0.530405 0.514612 0.496585 0.514957 0.583748 0.486741 0.644068 0.319415 0.514706 0.477193 0.490313 0.559596 0.489394 0.404762 0.401848 0.454545 0.414088 0.480460 0.405952 0.820513 0.426791 0.498027 0.548456 0.388430 0.538905
603885.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.571042 0.498027 0.548456 0.556069 0.601250
603888.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.274194 0.461350 0.502509 0.527578 0.501742 0.471655 0.593350 0.561014 0.456961 0.435277 0.529600 0.587654 0.511290 0.575334 0.773333 0.477185 0.449474
603899.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.556270 0.473568 0.491394 0.553103 0.406957 0.329616 0.399211 0.475394 0.583333 0.504266 0.305322 0.481718 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.641689 0.498027 0.473763 0.295455 0.464960

871 rows × 59 columns

研究搭建回測

輸入:factor_df數據

  • index為日期列表
  • columns為股票名稱
  • values為因子值

輸出:

  • 做多頭部超額收益
  • 分組收益
factor_df = df_y.T
'''
選取頭部股票計算超額收益
輸入:factor_df,index為日期,column是股票名字,values是進行排序的因子值
'''
#選取頭部股票構造組合進行回測
return_df = pd.DataFrame()
for d1,d2 in zip(factor_df.index[:-1],factor_df.index[1:]):
    #獲取頭部股票
    df_temp = factor_df.loc[d1,:].sort_values() #mo默認從小到大排序
    #pool_temp = df_temp.index[:50]   
    pool_temp = df_temp.index[-50:]
    #計算組合收益
    df1 = get_price(list(pool_temp),end_date=d1,count=1,fields=['close'])['close'] #index為日期,columns為股票名稱
    df1 = df1.dropna(axis=1) #去掉NAN值,刪除列
    df2 = get_price(list(df1.columns),end_date=d2,count=1,fields=['close'])['close']
    ret = (df2.values/df1.values - 1).mean() #計算組合收益均值
    #計算同期指數收益率
    df_index1 = get_price('000905.XSHG',end_date=d1,count=1,fields=['close'])['close']
    df_index2 = get_price('000905.XSHG',end_date=d2,count=1,fields=['close'])['close']
    index_ret = df_index2.values[-1]/df_index1.values[-1]-1
    
    return_df[d1] = [ret-index_ret]  #記錄超額收益
    #print(ret)
return_df = return_df.T
return_df.columns = ['return']
print(return_df.head(5))
(return_df+1).cumprod().plot(figsize=(12,6))
              return
2014-01-02 -0.048063
2014-02-07 -0.034945
2014-03-03 -0.024557
2014-04-01  0.013225
2014-05-05  0.020049
<matplotlib.axes._subplots.AxesSubplot at 0x7fd5f38f44a8>
'''
分組回測部分
'''
#分組回測部分
#輸入:index為日期,column是股票名,values是因子值得factor_df
#輸出:股票池分組收益
group = 10 #分組組數
pool_dict = {}
for i in range(len(factor_df.index)):
    temp_se = factor_df.iloc[0,:].sort_values(ascending=False)#從大到小排序
    #pool = temp_se[temp_se>0].index #去掉小於0的值
    temp_se = temp_se.dropna() #去掉空值
    pool = temp_se.index #不做負值處理
    num = int(len(pool)/group)
    #print('第%s期每組%s只股票'%(i,num))
    pool_dict[factor_df.index[i]] = pool
trade_list = factor_df.index
group_pct = get_all_pct(pool_dict,trade_list,groups=group)
group_pct.columns = ['group'+str(i) for i in range(len(group_pct.columns))]
group_pct.cumprod().plot(figsize=(12,6))
<matplotlib.axes._subplots.AxesSubplot at 0x7fd59dcebef0>
#進行模型樣本內樣本外得分記錄
print(df_score.mean(axis=1))
(df_score.T).plot(figsize=(12,6))
score_p    0.532614
score_r    0.514247
dtype: float64
<matplotlib.axes._subplots.AxesSubplot at 0x7fd59dbf9eb8>
#回歸方式
#進行因子值預測(回歸方式)
df_y_r = pd.DataFrame()
df_score_r = pd.DataFrame(index = ['score_p','score_r'])
colus = factor_data_dict[date_list[60]].columns[:-4]
df_features = pd.DataFrame(index=colus)
for i in range(60,len(date_list)-1):
    print('正在計算{0}...數據'.format(date_list[i]))

    #數據合並,用於模型訓練
    #將字典組成一個無日期的大表
    all_data = pd.DataFrame()
    for d in date_list[i-60:i]:
        all_data = pd.concat([all_data,factor_data_dict[d]],axis=0) #進行縱向拚接

    #空值NAN值處理
    for colu in all_data.columns:
        if sum(all_data[colu].isnull())> 0.2*len(all_data[colu]):
            print('因子:%s缺失值較多,不做為統計特征處理'%colu)
            del all_data[colu]
    #進行空值處理
    for colu in all_data.columns:
        if sum(all_data[colu].isnull())> 0:#0.05*len(all_data[colu]):
            all_data[colu].fillna(all_data[colu].mean(),inplace=True)
            #del all_data[colu]

    #獲取前三分之一和後三分之一的數據
    all_data = all_data.sort_values('pct_init')
    #print(all_data.shape)
    all_data['num'] = list(range(len(all_data)))
    all_data = all_data[(all_data['num']<=len(all_data)/3) | (all_data['num']>=2*len(all_data)/3)]

    #print(all_data.shape)

    #記錄標簽y
    y1 = (all_data["pct_init"]>0).astype("int") #走完流程在改?
    y  = all_data['pct_init']
    x = all_data.iloc[:,:-5]

    #擬合模型
    #對數據進行分割,訓練集、測試集
    X_train, X_test, y_train, y_test = train_test_split(x.values,y.values, test_size=0.3)
    #建立最大深度為2的決策樹,並用測試數據來訓練這顆樹
    rlf = tree.DecisionTreeRegressor(max_depth = 6
                                     )
    rlf = rlf.fit(X_train, y_train) #模型訓練
    #print(rlf.score(X_test,y_test)) #模型得分
    s_p = rlf.score(X_test,y_test)#樣本內得分
    
    #模型預測y
    factor_df_temp = factor_data_dict[date_list[i]].iloc[:,:-4]
    factor_df_temp1 = factor_df_temp.dropna(axis=0)
    df_temp = pd.DataFrame(index=factor_df_temp1.index)
    df_temp[date_list[i]] = rlf.predict(factor_df_temp1)

    #記錄模型真實數據得分
    y_t = factor_data_dict[date_list[i]].dropna()
    x_s = y_t.iloc[:,:-4]
    y_s = y_t["pct_init"]
    s_r = rlf.score(x_s,y_s)
    df_score_r[date_list[i]] = [s_p,s_r]
    
    #記錄特征重要性
    df_features[date_list[i]] = rlf.feature_importances_
    #記錄預測值進行拚接
    df_y_r = pd.concat([df_y_r,df_temp],axis=1) #進行橫向拚接
    
df_y_r
正在計算2014-01-02 00:00:00...數據
正在計算2014-02-07 00:00:00...數據
正在計算2014-03-03 00:00:00...數據
正在計算2014-04-01 00:00:00...數據
正在計算2014-05-05 00:00:00...數據
正在計算2014-06-03 00:00:00...數據
正在計算2014-07-01 00:00:00...數據
正在計算2014-08-01 00:00:00...數據
正在計算2014-09-01 00:00:00...數據
正在計算2014-10-08 00:00:00...數據
正在計算2014-11-03 00:00:00...數據
正在計算2014-12-01 00:00:00...數據
正在計算2015-01-05 00:00:00...數據
正在計算2015-02-02 00:00:00...數據
正在計算2015-03-02 00:00:00...數據
正在計算2015-04-01 00:00:00...數據
正在計算2015-05-04 00:00:00...數據
正在計算2015-06-01 00:00:00...數據
正在計算2015-07-01 00:00:00...數據
正在計算2015-08-03 00:00:00...數據
正在計算2015-09-01 00:00:00...數據
正在計算2015-10-08 00:00:00...數據
正在計算2015-11-02 00:00:00...數據
正在計算2015-12-01 00:00:00...數據
正在計算2016-01-04 00:00:00...數據
正在計算2016-02-01 00:00:00...數據
正在計算2016-03-01 00:00:00...數據
正在計算2016-04-01 00:00:00...數據
正在計算2016-05-03 00:00:00...數據
正在計算2016-06-01 00:00:00...數據
正在計算2016-07-01 00:00:00...數據
正在計算2016-08-01 00:00:00...數據
正在計算2016-09-01 00:00:00...數據
正在計算2016-10-10 00:00:00...數據
正在計算2016-11-01 00:00:00...數據
正在計算2016-12-01 00:00:00...數據
正在計算2017-01-03 00:00:00...數據
正在計算2017-02-03 00:00:00...數據
正在計算2017-03-01 00:00:00...數據
正在計算2017-04-05 00:00:00...數據
正在計算2017-05-02 00:00:00...數據
正在計算2017-06-01 00:00:00...數據
正在計算2017-07-03 00:00:00...數據
正在計算2017-08-01 00:00:00...數據
正在計算2017-09-01 00:00:00...數據
正在計算2017-10-09 00:00:00...數據
正在計算2017-11-01 00:00:00...數據
正在計算2017-12-01 00:00:00...數據
正在計算2018-01-02 00:00:00...數據
正在計算2018-02-01 00:00:00...數據
正在計算2018-03-01 00:00:00...數據
正在計算2018-04-02 00:00:00...數據
正在計算2018-05-02 00:00:00...數據
正在計算2018-06-01 00:00:00...數據
正在計算2018-07-02 00:00:00...數據
正在計算2018-08-01 00:00:00...數據
正在計算2018-09-03 00:00:00...數據
正在計算2018-10-08 00:00:00...數據
正在計算2018-11-01 00:00:00...數據
.dataframe tbody tr th:only-of-type { vertical-align: middle; } .dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; }
2014-01-02 00:00:00 2014-02-07 00:00:00 2014-03-03 00:00:00 2014-04-01 00:00:00 2014-05-05 00:00:00 2014-06-03 00:00:00 2014-07-01 00:00:00 2014-08-01 00:00:00 2014-09-01 00:00:00 2014-10-08 00:00:00 2014-11-03 00:00:00 2014-12-01 00:00:00 2015-01-05 00:00:00 2015-02-02 00:00:00 2015-03-02 00:00:00 2015-04-01 00:00:00 2015-05-04 00:00:00 2015-06-01 00:00:00 2015-07-01 00:00:00 2015-08-03 00:00:00 2015-09-01 00:00:00 2015-10-08 00:00:00 2015-11-02 00:00:00 2015-12-01 00:00:00 2016-01-04 00:00:00 2016-02-01 00:00:00 2016-03-01 00:00:00 2016-04-01 00:00:00 2016-05-03 00:00:00 2016-06-01 00:00:00 2016-07-01 00:00:00 2016-08-01 00:00:00 2016-09-01 00:00:00 2016-10-10 00:00:00 2016-11-01 00:00:00 2016-12-01 00:00:00 2017-01-03 00:00:00 2017-02-03 00:00:00 2017-03-01 00:00:00 2017-04-05 00:00:00 2017-05-02 00:00:00 2017-06-01 00:00:00 2017-07-03 00:00:00 2017-08-01 00:00:00 2017-09-01 00:00:00 2017-10-09 00:00:00 2017-11-01 00:00:00 2017-12-01 00:00:00 2018-01-02 00:00:00 2018-02-01 00:00:00 2018-03-01 00:00:00 2018-04-02 00:00:00 2018-05-02 00:00:00 2018-06-01 00:00:00 2018-07-02 00:00:00 2018-08-01 00:00:00 2018-09-03 00:00:00 2018-10-08 00:00:00 2018-11-01 00:00:00
000006.XSHE 0.013863 0.019758 0.028390 0.002353 -0.017193 -0.002673 0.011286 0.009783 0.001467 0.001896 0.029300 0.020826 0.014670 0.009687 0.020470 -0.004673 0.013800 0.013458 0.016438 0.012882 0.011197 0.001453 0.013045 0.021602 0.007759 0.023798 0.014361 0.018921 -0.005887 0.014236 -0.001105 0.017573 0.018513 -0.003725 0.010863 0.011911 -0.024021 0.027097 0.018773 0.032351 0.016862 0.017236 0.014037 0.023714 0.015246 0.015925 0.015289 0.022329 0.011037 0.015728 -0.000236 0.026428 0.012160 0.022158 0.004940 0.029092 0.000221 -0.005788 0.000571
000008.XSHE NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN -0.001105 0.008811 0.019598 0.020795 0.034290 0.011911 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.009361 0.016521 0.000221 -0.005788 0.000571
000009.XSHE NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.009577 0.015065 0.008240 0.011292 0.007162 0.010917 0.009361 0.010274 0.000221 -0.005788 0.000571
000012.XSHE NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.014670 -0.004920 -0.000698 0.007758 -0.016386 -0.008721 0.016438 0.000518 0.011197 0.001453 0.013045 0.021602 -0.010440 0.006314 0.008809 0.018921 -0.020646 0.007749 0.007453 0.015075 0.007038 0.020795 0.009413 -0.012978 0.019187 0.027097 0.018773 0.032351 0.033318 0.023087 0.016997 0.019876 0.009416 0.003141 0.015431 -0.007051 -0.006972 -0.010187 0.008240 0.026428 0.007162 0.022158 0.014032 0.016521 0.000221 -0.005788 0.000571
000021.XSHE 0.023409 -0.011808 0.012830 0.020186 0.010609 0.030709 -0.015532 0.009783 0.020044 0.017563 0.015686 -0.000277 0.014670 0.023249 0.020470 0.019475 0.001153 0.018304 0.001001 0.005113 0.011197 0.031662 0.013045 -0.027176 0.005294 0.006314 0.014361 0.011931 0.009856 0.025562 0.007453 0.008962 0.000552 0.020795 0.009413 0.012716 0.019187 0.009517 0.003809 0.011809 0.033318 0.023087 0.016997 0.001481 -0.005800 0.015925 0.015289 0.022329 -0.006972 0.015728 0.027528 0.011292 0.012160 0.022158 0.014032 0.016521 0.024996 0.001260 0.039368
000025.XSHE NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.019187 0.005186 0.009267 0.014491 0.009851 -0.003393 -0.020390 -0.025535 -0.002589 0.029237 0.015431 0.020761 -0.006972 0.027269 0.008240 0.016302 0.007162 -0.015160 0.009361 -0.008432 0.000221 -0.005788 0.000571
000027.XSHE NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.015075 0.001008 0.009416 0.023267 0.035519 0.004805 0.009577 0.015065 0.008240 -0.002946 0.007162 0.004251 0.009361 0.010274 0.008524 -0.005539 0.022022
000028.XSHE -0.009346 0.073799 0.008309 0.001471 -0.016223 0.007200 -0.015532 0.000734 -0.024229 0.017563 0.011700 -0.003933 -0.016233 0.005881 0.003666 -0.014259 0.005866 0.018304 -0.010810 0.003197 0.011197 0.005229 -0.007331 0.007616 0.007759 -0.026900 0.008809 0.011931 -0.020646 -0.004054 -0.001105 -0.017639 0.019598 0.001351 0.010102 -0.012978 0.019187 0.015003 0.009267 -0.023091 0.009851 0.014140 0.015075 0.019876 0.009416 0.003141 0.015431 0.004805 0.009577 0.008193 0.009522 0.026428 0.007162 0.010917 0.009361 -0.006303 -0.013374 -0.005788 0.000571
000030.XSHE 0.000027 0.019758 -0.009084 -0.137624 0.045546 0.026043 0.011286 0.028835 0.011149 0.001788 0.015686 0.020636 -0.003317 0.009687 0.020470 0.007758 0.001153 0.013458 0.016438 0.000518 0.011197 0.031662 0.013045 0.021602 -0.019382 0.006314 0.014361 0.018921 0.019580 0.025562 0.033811 0.032155 0.007038 0.014032 0.010863 0.011911 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
000031.XSHE 0.023409 0.019758 0.012830 0.020186 0.019951 0.026043 0.011286 -0.037403 0.034241 0.017563 0.015686 -0.003933 -0.003317 0.009687 0.020470 0.007758 0.001153 -0.008721 -0.039304 -0.017507 -0.050837 0.001453 0.026241 0.021602 0.027959 0.023798 0.029047 0.018921 0.019580 0.025562 0.033811 0.015075 0.019598 0.003908 0.010102 0.012716 0.019187 0.015003 0.009267 0.032351 -0.002505 0.014140 0.015075 0.022751 -0.002589 0.007412 0.015289 -0.007051 -0.006972 -0.010187 -0.000236 -0.002946 0.012160 0.022158 0.033299 0.006653 0.024996 0.023558 0.039368
000039.XSHE NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN -0.002873 0.001008 0.009416 0.023267 -0.001248 0.004805 0.023710 0.008193 0.009522 0.007555 0.012160 0.010917 0.009361 0.016521 0.017711 0.018425 0.022022
000042.XSHE -0.009346 0.019758 0.008309 0.001471 0.019951 0.034713 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
000049.XSHE 0.013164 0.000386 0.008309 0.001471 0.005926 -0.002673 0.019455 0.025199 0.086220 -0.057074 0.011700 0.020826 -0.000444 0.047791 0.014207 0.026811 0.005866 0.075808 -0.010810 0.003197 0.032239 0.015697 -0.001494 0.008067 -0.010440 -0.010765 0.029047 0.018921 0.019580 -0.004054 0.020574 0.017573 0.019598 0.001351 -0.027572 -0.012978 0.019187 -0.022562 0.003809 0.004149 -0.023085 -0.001519 0.495375 0.019876 0.015246 0.003141 0.015431 0.020761 0.009577 -0.001742 0.009522 0.011292 0.012160 -0.005371 0.014032 -0.006303 0.015439 0.023558 0.030731
000050.XSHE 0.013164 0.000386 -0.006765 0.020186 -0.017193 0.000180 0.011286 -0.037403 -0.004603 -0.009907 0.002743 0.004381 0.001646 -0.015685 0.014207 -0.003615 0.005531 0.018304 NaN NaN NaN NaN NaN NaN 0.019722 -0.012178 0.014361 0.018921 -0.005887 -0.002692 0.020574 -0.017639 0.019598 0.003908 0.068413 -0.060975 0.019187 0.006311 0.009267 0.014491 0.009851 -0.003393 -0.020390 -0.025535 -0.002589 -0.005067 -0.001248 0.004805 0.023710 0.008193 0.008240 0.007555 0.007162 0.010917 NaN NaN NaN NaN NaN
000061.XSHE NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.015075 0.019876 0.009416 0.003141 -0.001248 0.004805 0.009577 0.015065 0.008240 -0.022165 0.007162 0.010917 0.009361 0.010274 0.000221 -0.005788 0.000571
000062.XSHE NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN -0.000444 -0.000172 0.014207 0.007758 0.020726 0.202619 -0.010810 -0.009250 0.011197 0.020406 -0.023861 0.021602 0.007759 0.023798 0.014361 0.018921 0.019580 -0.004054 0.015706 0.032155 0.019598 0.020795 0.034290 -0.012978 0.003363 0.009517 0.034780 0.014017 0.033318 -0.031854 -0.020390 -0.031876 0.009416 0.008010 0.015431 0.094302 0.009577 -0.010187 0.009522 0.026428 -0.005277 0.015539 0.033299 0.029092 0.015439 0.023558 0.011560
000066.XSHE -0.009346 0.019758 0.012830 0.020186 0.004403 -0.002673 -0.035722 0.000734 -0.004603 0.017563 -0.004102 0.020636 0.034379 -0.000172 0.018884 -0.030362 0.005531 -0.010566 -0.039304 -0.000386 -0.003974 0.172818 0.187641 -0.048669 0.022459 0.114230 0.008809 -0.051140 0.019580 0.014236 -0.001105 -0.003966 0.000552 0.020795 0.010102 -0.012978 -0.024021 0.005186 0.009267 0.014491 0.009851 0.014140 0.015075 0.019876 0.009416 0.003141 -0.001248 0.004805 0.009577 0.015065 0.008240 -0.022165 -0.005277 -0.005371 0.004940 0.016521 0.000221 -0.005788 0.000571
000078.XSHE 0.000027 -0.007357 -0.008638 -0.021023 0.004403 0.006595 0.019455 -0.037403 0.011149 -0.014513 -0.018904 -0.031389 0.003007 0.023249 0.000640 -0.030362 0.001153 -0.008721 0.001348 -0.015010 -0.006618 -0.009531 0.000935 0.078220 -0.019382 0.006314 0.008809 0.018921 -0.020646 -0.002692 -0.010771 0.015075 0.019598 0.020795 0.010102 0.012716 0.019187 0.015003 0.003809 0.014491 0.009851 0.014140 0.015075 -0.031876 0.009416 -0.018036 0.015431 0.028268 0.023710 0.015728 0.027528 0.016302 0.028996 0.010917 0.009361 0.029092 0.017711 0.023558 0.000571
000088.XSHE 0.000027 0.019758 0.012830 0.020186 0.019951 0.026043 0.017821 0.028835 0.034241 0.018986 -0.003641 0.020826 -0.016233 0.009687 0.020470 0.007758 0.020726 0.018304 -0.039304 0.026005 0.011197 -0.009531 0.013045 -0.007937 -0.019382 0.006314 0.008809 0.011931 0.019580 0.025562 0.015706 -0.003966 0.018513 0.001351 0.000130 0.011911 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
000089.XSHE NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.019187 0.027097 0.034780 0.011809 -0.002505 -0.003740 -0.006392 0.001481 0.009416 0.008010 0.015431 -0.007051 -0.006972 -0.010187 0.008240 0.011292 0.007162 0.010917 0.001265 -0.008432 -0.013374 -0.005788 0.000571
000090.XSHE 0.023409 0.019758 -0.009084 0.020186 0.004403 -0.002673 -0.015532 0.009783 0.020044 0.040008 0.029300 -0.000277 -0.003317 0.045626 0.020470 0.007758 -0.016386 0.011158 0.016438 0.026005 0.032239 0.015697 -0.007331 0.010531 0.007759 0.023798 0.014361 0.011931 0.019580 0.014236 0.033811 0.032155 0.019598 -0.023005 0.022497 0.011911 0.019187 0.015003 0.018773 0.032351 -0.025936 0.017236 0.014037 0.001481 0.028245 0.003141 0.015431 0.020761 0.011037 0.015728 0.009522 -0.002946 0.007162 0.004251 0.009361 0.020591 0.000221 -0.005788 0.000571
000099.XSHE 0.000027 -0.010814 -0.006765 0.020186 0.004403 0.026043 -0.027047 0.005838 0.009186 -0.016801 -0.005898 0.025864 -0.000444 -0.000172 0.014207 -0.003615 -0.016386 -0.008721 0.004716 -0.017507 0.011197 0.001453 0.026241 0.021602 0.027959 0.034513 0.029047 -0.022950 0.009856 -0.025409 -0.010771 0.017573 0.019598 0.020795 0.010102 0.025371 0.019187 0.005186 0.009267 0.014491 0.009851 -0.003740 -0.006392 0.001481 0.009416 0.007412 -0.006576 -0.007051 0.023710 0.027269 0.008240 -0.022165 0.007162 0.010917 NaN NaN NaN NaN NaN
000156.XSHE NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.009577 0.022444 0.008240 0.039215 -0.570322 0.004251 -0.018514 0.029092 0.017711 -0.005539 0.022022
000158.XSHE NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN -0.010771 0.008811 0.019598 0.003908 0.010102 0.012716 0.019187 0.015003 0.009267 0.011809 -0.023085 -0.001519 -0.006392 0.019876 0.009416 0.003141 0.015431 0.004805 0.009577 0.015065 0.027528 0.007555 0.007162 0.004251 -0.018514 0.029092 0.017711 0.001260 0.022022
000400.XSHE NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.007453 0.015075 0.019598 0.020795 0.010863 -0.012978 0.015830 0.006311 0.003809 0.032351 0.007190 0.017236 -0.020390 0.019876 -0.014671 0.003141 0.015431 0.020761 0.009577 0.015065 0.027528 0.011292 0.012160 0.010917 0.009361 -0.006303 -0.013374 -0.005539 0.000571
000401.XSHE NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.004716 -0.017507 0.011197 0.020406 0.013045 -0.027176 0.005294 -0.026900 -0.024086 -0.001467 0.009856 0.006835 -0.030453 0.032155 0.019598 0.003908 0.010102 -0.012978 0.003363 0.009517 0.003809 0.011809 0.009851 -0.031854 -0.020390 0.001008 0.009416 0.003141 0.015431 0.004805 0.022293 0.015065 -0.000236 -0.022165 0.007162 0.010917 0.009361 0.010274 0.015439 0.023558 0.000514
000409.XSHE -0.009346 0.000386 0.000550 0.001471 0.005926 0.026043 0.019455 0.004286 0.001467 -0.016801 0.011700 0.014321 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
000413.XSHE 0.023409 0.123077 0.012830 0.001111 0.004403 0.057091 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
000415.XSHE 0.000027 -0.007357 -0.008638 -0.001046 0.045546 0.026043 0.019455 0.028835 0.020044 0.001896 0.015686 0.214684 0.026857 0.017240 -0.072357 -0.104641 -0.154848 0.011158 0.016438 0.005113 -0.006618 0.001453 0.013045 0.007616 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
000417.XSHE 0.023409 0.019758 0.028390 0.012001 0.025409 0.034225 0.033462 0.000734 0.020044 0.018986 0.015686 0.020636 -0.003317 0.023249 0.020470 -0.030362 0.005531 -0.008721 0.016438 0.000518 -0.003974 0.001123 0.028651 0.021602 -0.040279 0.034513 0.008809 0.018921 0.009856 0.025562 0.015706 0.032155 0.017311 0.014032 0.010863 0.011911 0.019187 0.009517 0.003809 0.011809 0.016862 0.017236 0.014037 0.019876 -0.002589 0.007412 0.015289 0.022329 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
603228.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN -0.020390 0.019876 0.015246 0.015925 -0.012655 -0.007051 0.009577 -0.001742 -0.020854 -0.002946 0.007162 -0.005371 0.014032 -0.008432 -0.005801 0.023558 0.005113
603328.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.014670 0.023249 0.020470 0.007758 0.005531 0.013458 0.001348 0.000518 0.011197 0.011246 0.000935 -0.007937 0.027959 0.006314 0.029047 0.018921 0.009856 0.007749 0.007453 0.008962 0.007038 0.020795 -0.027572 -0.012978 0.003363 0.027097 0.018773 0.014017 0.019121 -0.003740 0.016997 0.022751 0.015246 -0.013841 -0.012655 0.020761 0.009577 -0.001742 0.027528 0.026428 0.028996 0.022158 0.001265 -0.006303 0.024996 0.023558 0.011560
603355.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.007759 0.023798 0.014361 0.018921 0.019580 -0.004054 -0.010771 0.015075 0.019598 0.001351 -0.010360 -0.012978 -0.024021 -0.022562 -0.016532 -0.023091 0.019121 -0.001519 0.016997 0.019876 0.030139 0.003141 0.015431 -0.007051 0.009577 -0.001742 0.008240 0.007555 0.007162 -0.015160 0.009361 -0.008432 0.015439 0.023558 0.030731
603366.XSHG -0.019893 -0.007125 -0.008638 -0.013836 0.003650 0.000180 0.048009 0.005838 0.020044 0.018986 0.002743 -0.000277 0.034379 0.009687 -0.000698 -0.004673 0.020726 -0.008721 0.016438 0.026005 0.012404 0.005229 0.028651 0.021602 0.024717 0.023798 0.014361 0.018921 0.009856 0.007749 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
603369.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.014670 0.023249 0.020470 0.007758 0.001153 0.013458 0.001348 0.026005 0.011197 -0.009531 0.013045 -0.027176 0.005294 0.023798 0.014361 -0.022950 0.009856 -0.004054 NaN NaN NaN NaN NaN NaN 0.019187 0.015003 0.003809 0.014017 -0.037970 0.023087 -0.006392 0.002841 -0.005800 0.015925 0.015431 0.020761 0.023710 0.027269 0.027528 -0.002946 -0.005277 -0.005371 0.014032 0.029092 0.015439 0.001260 0.000571
603377.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN -0.024021 0.006311 0.009267 0.014017 0.009851 0.017236 -0.020390 0.019876 0.015246 0.029237 -0.012655 0.001334 -0.006972 -0.013670 -0.000236 -0.022165 0.007162 0.010917 0.009361 -0.007449 -0.005801 0.023558 0.039368
603444.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.016997 0.019876 0.015246 0.029237 0.015431 -0.007051 0.009577 -0.001742 0.009522 0.011292 0.012160 -0.005371 0.004940 -0.006303 -0.005801 0.023558 0.039368
603515.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN -0.020390 0.019876 0.003342 0.008010 -0.012655 0.020761 -0.006972 -0.010187 0.008240 0.016302 -0.005277 -0.015160 0.009361 -0.007449 0.015439 0.023558 0.000514
603528.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.019187 0.005186 0.018773 0.032351 0.019283 0.023087 0.016997 0.019876 0.015246 0.029237 -0.012655 0.020761 0.009577 0.015065 0.008240 -0.002946 -0.036809 0.015539 NaN NaN NaN NaN NaN
603555.XSHG NaN NaN NaN NaN NaN NaN -0.005885 0.004286 0.034241 0.017563 0.002743 -0.001681 -0.016233 -0.015685 0.406466 -0.033193 0.005866 -0.008721 -0.010810 0.003197 0.011197 0.015697 -0.007331 -0.015015 -0.010440 0.034720 0.014361 0.018921 0.019580 -0.004054 0.033811 0.015075 0.019598 0.020795 -0.027572 -0.012978 0.003363 0.006311 0.003809 0.014491 0.033318 0.023087 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
603556.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.016997 0.019876 0.015246 0.008010 -0.012655 0.020761 0.009577 0.015065 0.009522 -0.002946 0.012160 0.022158 0.009361 -0.006303 0.000221 0.001260 0.009010
603567.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.005294 -0.012178 0.014361 0.018921 0.009856 0.007749 0.007453 0.015075 0.019598 0.020795 0.026821 -0.012978 0.019187 0.027097 0.018773 0.014017 0.019283 0.023087 0.033020 0.001008 0.009416 0.003141 0.015431 0.020761 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
603568.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.027959 0.023798 0.029047 0.018921 0.019580 -0.004054 0.015706 0.015075 0.019598 -0.023005 -0.010360 -0.012978 0.019187 0.027097 -0.016532 0.032351 0.019283 0.023087 0.014037 -0.025535 0.015246 -0.041533 0.015289 0.001334 0.011037 0.015728 -0.020854 0.016302 -0.005277 0.015539 0.033299 -0.008432 -0.005801 0.023558 0.030731
603569.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN -0.020390 0.019876 0.015246 0.029237 -0.012655 0.020761 0.009577 -0.001742 0.008240 0.016302 -0.005277 0.015539 0.004940 -0.008432 0.015439 0.001260 0.000571
603589.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN -0.040279 0.023798 0.029047 0.018921 0.019580 -0.004054 0.015706 0.015075 0.019598 0.020795 0.010102 0.025371 0.019187 0.005186 0.003809 -0.003302 -0.002505 -0.003740 -0.020390 -0.025535 -0.005800 0.015925 0.015289 0.020761 0.023710 0.027269 0.008240 0.011292 -0.005277 -0.005371 0.009361 0.010274 0.015439 0.001260 0.005113
603658.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.016997 0.019876 -0.005800 0.015925 -0.012655 -0.007051 0.011037 0.027269 -0.000236 -0.002946 -0.005277 -0.005371 0.004940 -0.008432 -0.005801 0.001260 0.000514
603659.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.004940 -0.008432 0.015439 0.001260 0.000514
603698.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.004716 -0.017507 0.011197 0.020406 -0.023861 -0.007937 0.007759 -0.012178 0.014361 0.000939 0.009856 -0.004054 -0.010771 -0.022939 0.018513 0.020795 0.026821 -0.004448 0.019187 0.005186 -0.016532 0.032351 0.019283 0.023087 0.033020 0.019876 0.015246 0.029237 -0.012655 0.020761 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
603699.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN -0.010810 0.003197 0.011197 0.020406 -0.001494 0.021602 0.027959 0.006314 0.008809 0.018921 0.019580 0.014236 -0.010771 -0.003966 0.018513 0.020795 -0.027572 0.025371 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
603766.XSHG 0.000027 0.019758 0.019346 0.020186 0.004403 0.026043 0.011286 0.004286 0.020044 0.001788 0.002743 0.020636 0.014670 0.009687 0.020470 0.007758 0.001153 0.013458 0.016438 0.000518 0.011197 -0.009531 0.000935 0.047430 0.019722 0.006314 0.029047 0.018921 0.019580 0.025562 0.007453 0.008962 0.007038 0.020795 -0.027572 0.025371 0.003363 -0.016125 0.009267 0.014017 0.033318 0.023087 0.016997 0.022751 0.015246 0.015925 0.015431 0.051008 0.009577 -0.010187 0.027528 -0.002946 0.028996 0.022158 0.014032 0.006653 0.024996 0.025898 0.039368
603799.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN -0.020390 0.022751 0.290984 0.015925 -0.006576 0.022329 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
603806.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN -0.040279 -0.010765 -0.002080 0.018921 0.009856 0.025562 0.007453 0.008962 0.018513 0.020795 0.010863 -0.012978 0.019187 0.027097 0.018773 0.032351 0.019283 0.023087 0.016997 0.019876 0.015246 0.015925 -0.012655 -0.007051 -0.006972 -0.010187 0.009522 -0.002946 0.012160 -0.005371 0.014032 -0.006303 -0.013374 0.001260 0.030731
603816.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN -0.020390 0.019876 0.015246 0.029237 0.015431 -0.007051 0.011037 -0.010187 0.008240 -0.002946 0.007162 0.015539 0.004940 -0.007449 0.015439 0.023558 0.000514
603866.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.019187 0.005186 0.018773 0.014017 -0.000268 0.023087 0.016997 0.019876 0.015246 0.015925 -0.006576 0.001334 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
603868.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.003363 0.005186 0.018773 -0.023091 -0.037970 -0.001519 -0.020390 -0.025535 0.003342 -0.019944 -0.012655 0.001334 -0.006972 0.027269 0.008240 0.011292 0.007162 0.022158 0.004940 -0.008432 0.015439 0.023558 0.000514
603877.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN -0.002873 0.019876 0.009416 0.003141 -0.012655 -0.007051 -0.006972 -0.010187 -0.020854 -0.002946 0.012160 0.015539 0.004940 -0.008432 0.000221 -0.005788 0.000571
603883.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN -0.010440 -0.010765 0.014361 0.018921 -0.020646 0.007749 0.007453 0.015075 0.019598 0.020795 0.009413 -0.012978 0.019187 0.027097 0.018773 0.032351 0.004720 -0.001519 0.014037 0.023714 -0.005800 0.015925 -0.006576 0.001334 -0.006972 0.015728 -0.020854 -0.002946 -0.005277 -0.005371 0.014032 -0.008432 0.000221 -0.005788 0.000571
603885.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.014032 0.010274 0.000221 -0.005788 0.005113
603888.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN -0.020390 0.019876 0.015246 0.029237 -0.012655 0.020761 0.009577 -0.001742 0.008240 0.011292 -0.005277 0.010917 0.009361 0.010274 0.000221 0.001260 0.000571
603899.XSHG NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.004716 0.003197 0.011197 -0.009531 -0.023861 -0.007937 -0.019382 0.023798 -0.002080 -0.001467 0.009856 -0.002692 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.033299 -0.008432 -0.005801 0.023558 0.030731

871 rows × 59 columns

factor_df = df_y_r.T
'''
選取頭部股票計算超額收益
輸入:factor_df,index為日期,column是股票名字,values是進行排序的因子值
'''
#選取頭部股票構造組合進行回測
return_df = pd.DataFrame()
for d1,d2 in zip(factor_df.index[:-1],factor_df.index[1:]):
    #獲取頭部股票
    df_temp = factor_df.loc[d1,:].sort_values() #mo默認從小到大排序
    #pool_temp = df_temp.index[:50]   
    pool_temp = df_temp.index[-50:]
    #計算組合收益
    df1 = get_price(list(pool_temp),end_date=d1,count=1,fields=['close'])['close'] #index為日期,columns為股票名稱
    df1 = df1.dropna(axis=1) #去掉NAN值,刪除列
    df2 = get_price(list(df1.columns),end_date=d2,count=1,fields=['close'])['close']
    ret = (df2.values/df1.values - 1).mean() #計算組合收益均值
    #計算同期指數收益率
    df_index1 = get_price('000905.XSHG',end_date=d1,count=1,fields=['close'])['close']
    df_index2 = get_price('000905.XSHG',end_date=d2,count=1,fields=['close'])['close']
    index_ret = df_index2.values[-1]/df_index1.values[-1]-1
    
    return_df[d1] = [ret-index_ret]  #記錄超額收益
    #print(ret)
return_df = return_df.T
return_df.columns = ['return']
print(return_df.head(5))
(return_df+1).cumprod().plot(figsize=(12,6))
              return
2014-01-02 -0.048063
2014-02-07 -0.034945
2014-03-03 -0.024557
2014-04-01  0.013225
2014-05-05  0.020049
<matplotlib.axes._subplots.AxesSubplot at 0x7fd59dbd8be0>
'''
分組回測部分
'''
#分組回測部分
#輸入:index為日期,column是股票名,values是因子值得factor_df
#輸出:股票池分組收益
group = 10 #分組組數
pool_dict = {}
for i in range(len(factor_df.index)):
    temp_se = factor_df.iloc[0,:].sort_values(ascending=False)#從大到小排序
    #pool = temp_se[temp_se>0].index #去掉小於0的值
    temp_se = temp_se.dropna() #去掉空值
    pool = temp_se.index #不做負值處理
    num = int(len(pool)/group)
    #print('第%s期每組%s只股票'%(i,num))
    pool_dict[factor_df.index[i]] = pool
trade_list = factor_df.index
group_pct = get_all_pct(pool_dict,trade_list,groups=group)
group_pct.columns = ['group'+str(i) for i in range(len(group_pct.columns))]
group_pct.cumprod().plot(figsize=(12,6))
<matplotlib.axes._subplots.AxesSubplot at 0x7fd59d818b70>
#進行模型樣本內樣本外得分記錄(回歸)
print(df_score_r.mean(axis=1))
(df_score_r.T).plot(figsize=(12,6))
score_p   -0.064946
score_r   -0.166074
dtype: float64
<matplotlib.axes._subplots.AxesSubplot at 0x7fd59d78ec50>

第四部分 特征統計(因子重要性)

特征重要性進行說明

模型調用featureimportances即可獲取

下面我們針對這個內容進行圖形化展示

df_features.mean(axis=1).plot(kind='bar',figsize=(12,6))
<matplotlib.axes._subplots.AxesSubplot at 0x7fd59d6f7470>
分享到:
舉報財經168客戶端下載

全部回複

0/140

投稿 您想發表你的觀點和看法?

更多人氣分析師

  • 張亦巧

    人氣2208文章4145粉絲45

    暫無個人簡介信息

  • 張迎妤

    人氣1912文章3305粉絲34

    個人專注於行情技術分析,消息面解讀剖析,給予您第一時間方向...

  • 指導老師

    人氣1864文章4423粉絲52

    暫無個人簡介信息

  • 李冉晴

    人氣2320文章3821粉絲34

    李冉晴,專業現貸實盤分析師。

  • 梁孟梵

    人氣2184文章3177粉絲39

    qq:2294906466 了解群指導添加微信mfmacd

  • 王啟蒙現貨黃金

    人氣328文章3634粉絲8

    本人做分析師以來,並專注於貴金屬投資市場,尤其是在現貨黃金...

  • 金泰鉻J

    人氣2328文章3925粉絲51

    投資問答解咨詢金泰鉻V/信tgtg67即可獲取每日的實時資訊、行情...

  • 金算盤

    人氣2696文章7761粉絲125

    高級分析師,混過名校,廝殺於股市和期貨、證券市場多年,專注...

  • 金帝財神

    人氣4768文章8329粉絲119

    本文由資深分析師金帝財神微信:934295330,指導黃金,白銀,...

FX168財經

FX168財經學院

FX168財經

FX168北美