Menu

第五章:量化研究专题(第五篇:数据处理专题:去极值、标准化、中性化 )

0 Comment

版权发表宣言:定冠词是视频博客作者的原始的文字。,不是博主批准,不得武断地转载。。

引言:在普通的从科学实验中获得的估计成本希望中常常提到三浇铸型的从科学实验中获得的估计成本。:去极值、常化、中性化。敝会告知你同样公共点。

三从科学实验中获得的估计成本处置操纵。 

一、去极值 

  一份上市的公司净赚同比曲线上升斜率辨析,敝常常被稍微公司的从科学实验中获得的估计成本所镶。,图中江

西龙运费,2017 三四分之一净赚曲线上升斜率与去年同一时期两者都高。 !竟,堆公司的净赚同比增长。

该比率的估计成本成功同样值的百分之一。。因而从科学实验中获得的估计成本极值的运算尤为秘诀。,可以避免从科学实验中获得的估计成本发生故障项。, 

向前推从科学实验中获得的估计成本裁定的精密。 

  去除极值的普通办法是决定左右两个值。,高于或在昏迷中限量的从科学实验中获得的估计成本都是值。。 

决定左右限有三种基准。,分清为 MAD 、 3σ、百分位法。 

      上海和深圳300 成份股PE 估计成本是原始从科学实验中获得的估计成本。,敝来谈谈极愚蠢的人吧。 、 3σ、百分位法。 

import numpy as np 

import pandas as pd 

import math 

from statsmodels import regression 

import statsmodels.api as sm 

import matplotlib.pyplot as plt  

date=”20180125” 

stock=get_index_stocks(””,日期)

q = query( 

    , 

    , 

     

滤去(In)(一份)

data = get_fundamentals(q,date=日期)

data.columns = [签名],”pe_ratio”,”market_cap”]] 

data = () 

del 从科学实验中获得的估计成本[签名]

data[”1/PE”] = 1/data[”pe_ratio”] 

() 

            pe_ratio    market_cap      1/PE 

———————– Page 165———————–

        

        

        

        

   1.237605e+11 -0.008675 

     将1/PE 的从科学实验中获得的估计成本散布,应用设计作品情节效能来显示它。: 

fig = (figsize = (20, 8)) 

ax = 从科学实验中获得的估计成本〔1/PE〕 = ”Original_PE”) 

() 

    下图为 20180125 上海和深圳300 样品成份股 1/PE 的从科学实验中获得的估计成本散布: 

1. MAD 法: 

  MAD 它也奢侈地不受任何限制的差值的中线法。,它是经过计算缠住FA暗达到目标间隔来检测异乎寻常的值的办法。

办法,停止逻辑: 

    第一步,找出缠住素质的中位数。 Xmedian 

    另外的步:求出各做代理商和中线的相对歪曲值。 Xi−Xmedian 

    第三步:买到相对歪曲的中位数。 MAD 

    四个步:决定决定因素 n ,这么决定有理的适用漫游。 [Xmedian−nMAD,Xmedian nMAD],超越有理

调节器漫游的素质列举如下。: 

———————– Page 166———————–

    MAD 办法法典造成: 

def filter_extreme_MAD(series,n): #MAD: 中线偏极值

  median = () 

  new_median = ((一套) – 位数(0)

  max_range = median + n*new_median 

  min_range = median – n*new_median 

  return np.clip(series,min_range,max_range) 

    履行原始从科学实验中获得的估计成本 MAD 修改后导致: 

fig = (figsize = (20, 8)) 

ax = 从科学实验中获得的估计成本〔1/PE〕 = ”Original_PE”) 

ax = filter_extreme_MAD(data[”1/PE”],5)(起诉) = 疯狂的

() 

2. 3σ 法 

  3σ 基准差法,也称基准差法。。基准歪曲在本质上可以映像素质的色散度。,它是本素质的平平均值。 Xmean 而定的。 

在取回值处置停止中,可经过用 Xmean±nσ 测做代理商与平平均值暗达到目标间隔。。 

  基准差法停止逻辑与MAD 相像办法

    第一步:计算做代理商的平平均值和基准差。

    另外的步:身份证明决定因素 n         (此处选择) n = 3 ) 

    第三步:身份证明素质的有理漫游是 [Xmean−nσ,Xmean nσ],调节器做代理商值列举如下: 

———————– Page 167———————–

    3σ 法典造成: 

def filter_extreme_3sigma(series,n=3): #3 sigma 

  mean = () 

  std = () 

  max_range = mean + n*std 

  min_range = mean – n*std 

  return np.clip(series,min_range,max_range) 

    履行原始从科学实验中获得的估计成本 3σ 修改后导致: 

fig = (figsize = (20, 8)) 

ax = 从科学实验中获得的估计成本〔1/PE〕 = ”Original_PE”) 

ax = filter_extreme_3sigma(data[”1/PE”]).(label = ”3sigma”) 

() 

3. 百分位法: 

  按升序排序做代理商值,百分位数百分匹敌高。 或在昏迷中百分位数。 的做代理商值,类似地  

MAD  、 3σ 调节器办法。 

百分位办法法典造成: 

def filter_extreme_percentile(series,min = 0.10,max = 0.90): #百分位法 

  series = () 

  q = (min),记号斯

  return np.clip(series,[0],[1]) 

fig = (figsize = (20, 8)) 

ax = 从科学实验中获得的估计成本〔1/PE〕 = ”Original_PE”) 

ax = filter_extreme_percentile(data[”1/PE”]).(label = 百分位数

() 

———————– Page 168———————–

履行原始从科学实验中获得的估计成本百分位法修改后导致: 

二、常化 

  持续深刻的做一份从科学实验中获得的估计成本辨析,防备敝需价格看涨而买入当季净赚同比曲线上升斜率较高和股息率较高的一份,如 

果品不管怎样繁殖了两个目的。,那时的拿那个估计成本最大的一份。,那时的会有每一异乎寻常的墓穴的成绩。:两个目的 

数值意思特色。。一份上市的公司成功股息率10%难于净赚同比曲线上升斜率10%,普通股息率都以内 5%,而净 

的空白曲线上升斜率远不只是关于此点。 5%的数值,如此的复杂的添加物。,一份选择会减弱股息率样品。。   

    这么这种情况下,从科学实验中获得的估计成本常化可以处理同样成绩。。 

    常化在统计法中具有一一套意思。,普通应用 z-score 的办法。将处置后的从科学实验中获得的估计成本从无度替换为无度。, 

使得特色的目的能停止匹敌和回归。 

z-score 的办法引见 

    常化后的数值 = (原始值-独居者目的内缠住值的平均值)/独居者目的内缠住值的基准差 

z-score 的方办法法典造成: 

def standardize_series(series): #原始值法 

  std = () 

  mean = () 

  return (series-mean)/std 

fig = (figsize = (20, 8)) 

new = filter_extreme_3sigma(data[”1/PE”]) 

ax = standardize_series(new).(label = ”standard_1”) 

() 

履行原始从科学实验中获得的估计成本 Z-score 法修改后导致: 

———————– Page 169———————–

产地从科学实验中获得的估计成本外观: 

standard_2 = standardize_series(()) 

() 

    

    

   

    

   

Name: 1/PE, dtype: float64 

三、中性化 

     持续深刻的做一份从科学实验中获得的估计成本辨析,你可能会撞见开账户股的市盈率特别的低,而互联网网络买卖 

的市盈率就特别的高,条件立即的用市盈率目的,不论何种你做了常化更去极值,你只会扒 

出开账户股,而谈不上扒出互联网网络股,这么互联网网络中市盈率最少的的一份和开账户股中市盈率最 

高的一份,适宜方法表现它们的真实意思呢? 

    这种情况下你就需求停止从科学实验中获得的估计成本中性化处置。 

    中性化处置思想:为了在用如此的做代理商时能去除及其他素质的冲击力,使得选出的一份各种的分 

散。常化用于多个特色量级目的暗中需求相互的匹敌或许从科学实验中获得的估计成本需求进入集合,而中性化的目 

的位于避免做代理商达到目标歪曲和不需求的冲击力。 

    详细办法:理由最好的的研报当作中性化的处置,次要的办法是应用回归买到每一与风 

险做代理商线形的有关的做代理商,即经过建造线形的回归,获得残差作为中性化后的新做代理商。如此的处置 

后的中性化做代理商与风险做代理商暗达到目标相关性僵硬的为零。 

———————– Page 170———————–

    用 python 造成中性化:履行原始从科学实验中获得的估计成本 3σ 修改后导致,停止中性化处置。 

从科学实验中获得的估计成本获取 

import numpy as np 

import pandas as pd 

import math 

from statsmodels import regression 

import statsmodels.api as sm 

import matplotlib.pyplot as plt  

date=”20180125” 

stock=get_index_stocks(””,日期)

q = query( 

    , 

    , 

     

滤去(In)(一份)

data = get_fundamentals(q,date=日期)

data.columns = [签名],”pe_ratio”,”market_cap”]] 

data = () 

del 从科学实验中获得的估计成本[签名]

data[”1/PE”] = 1/data[”pe_ratio”] 

() 

             pe_ratio    market_cap      1/PE 

        

        

        

        

   1.237605e+11 -0.008675 

3σ 处置处置有或起功能 

def filter_extreme_3sigma(series,n=3): #3 sigma 

  mean = () 

  std = () 

  max_range = mean + n*std 

  min_range = mean – n*std 

  return np.clip(series,min_range,max_range) 

买卖法典表

SHENWAN_INDUSTRY_MAP = { 

        S11 农林牧渔业, 

        ”S21” 开掘, 

        ”S22” 物质的化学组成, 

        ”S23” 钢铁, 

        ”S24” 黑色金属, 

        ”S27” :” 电子, 

        ”S28” 汽车, 

        ”S33” 家用电器, 

        ”S34” 食物和使牢固, 

        ”S35” 纺织廉正于正式场合的, 

———————– Page 171———————–

        ”S36” 轻创造, 

        ”S37” 医学生物, 

        ”S41” 有用的物体或器械公司, 

        ”S42” 运费, 

        ”S43” 真实情况, 

        ”S45” 商业贸易, 

        ”S46” 休闲维修, 

        ”S48” 开账户, 

        ”S49” 非开账户财源, 

        ”S51” 广泛的, 

        ”S61” 基建材料, 

        ”S62” 营造修饰, 

        ”S63” :” 电气用品, 

        ”S64” 机械装置, 

        ”S65” :” 国防军事产业”, 

        ”S71” 计算者, 

        ”S72” 颜料溶解液, 

        ”S73” 沟通

        } 

产业法典标签

def get_industry_exposure(order_book_ids): 

    df = (全部剧目), columns=order_book_ids) 

    for stk in order_book_ids: 

        try: 

            df[stk][get_symbol_industry(stk).s_industryid1] = 1 

        except: 

            continue 

    return df.fillna(0)#将NaN 赋为 0 

中和功能

# 需求传入独居者做代理商值和总市值 

def neutralization(factor,mkt_cap = False, industry = 真的)

  y = factor 

  if type(mkt_cap) == : 

    LnMktCap = (希腊字母的第 11个字 x:(x)) 

    if industry: #买卖、市值 

      dummy_industry = get_industry_exposure() 

      x = ([LnMktCap,],axis = 1) 

    else: 仅街市估计成本

      x = LnMktCap 

  elif industry: 要不是买卖

    dummy_industry = get_industry_exposure() 

    x =  

  result = (浮标),(漂)廉正

  return result.resid 

———————– Page 172———————–

有或起功能祈求救助 

#应用 3sigma 异乎寻常的值处置办法

no_extreme_PE = filter_extreme_3sigma(data[”1/PE”]) 

#买卖市值中性 

new_PE_all = neutralization(no_extreme_PE,data[”market_cap”]) 

#市值中性 

new_PE_MC = neutralization(no_extreme_PE,data[”market_cap”],industry = 假)

#买卖中性 

new_PE_In = neutralization(no_extreme_PE)  

fig = (figsize = (20, 8)) 

ax = no_extreme_PE.(label = ”no_extreme_PE”) 

ax = new_PE_all.(label = ”new_PE_all”) 

ax = new_PE_MC.(label = ”new_PE_MC”) 

ax = new_PE_In.(label = ”new_PE_In”) 

() 

导致输入:能看出市值和买卖中性化后的PE 散布进入各种的单调,进入买卖中性化比市值中性化的比分更 

好。 

———————– Page 173———————–

发表评论

电子邮件地址不会被公开。 必填项已用*标注