因子分析法python,python找一个数的因子
本文背景用于快速梳理常见的量化思路,其官方多因子策略白皮书非常适合入门。1.流程,获取因子数据
# Youkuang提供400多个因子数据,工程化TTM等标准化算法,利用dataapi直接获取PE=data API . mktstocksonedayget(secid=set _ universe( hs 300 ),TradeDate=U 20160922 。field=usecID,tradeDate,PE ,pandas=1 )。set _ index( secID )PE . head()# PE . plot(figsize=(14,SecidTradeDatePE00001。XSHE 2016-09-226.968000002。XSHE 2016-09-2216。XSHE 2016-09-2014 . 386868686866
1.极值去除
导入pyas NP #去极值winsorize after _ winsorize=winsorize(PE[ PE ]。to _ dict())PE[ winsorized PE ]=NP . nanpe . loc[after _ winsorize . keys(), winsorized PE]=after
# #标准化after _标准化=标准化(PE [winsorized PE]。to _ dict ()) PE [标准化PE ]=NP . nanpe . loc[after _ standarded . keys(),标准化PE]=after _
整体选股分位数:从所有候选股票中选取大于某个分位数风格分位数的因子得分:以行业为例,选取大于同行业某个分位数权重的因子得分,其他权重:最常见、最常见的市值权重:中证指数编制中的权重考虑因素为市值风格中性权重:权重由市值和股票所属行业在指数中的权重决定。
#信号合成signal=(0.5 * PD . series(signal _ PE))。Add (0.5 * pd.series (signal _ lcap),fill _ value=0.0) #组合构造WTS=simple _ long _ only(dict(signal),昔)等价于0.5pe和0.5lcap复合信号学习级数的加法方法,fill _ value为全部为空时的默认值。a=pd。Series([1,1,1,np.nan],index=[a , b , c , d ])aa 1.0b 1.0c 1.0d NAND type:float 64 b=PD。Series([1,np.nan,1,np.nan),index=[a ,B , d , e ])ba 1.0 bnand 1.0 e NAND type:float 64a . add(B,fill _ value=0)a 2.0 B 1.0 c 1.0d 1.0 e NAND type:float 64这个simple _ long _只返回一个字典,键是股票名称,值是值权重,也就是说。# Transaction part account=context . get _ account( fantasy _ account )current _ position=account . get _ positions(exclude _ halt=true)target _ position=wts . keys()#卖出当前持有但未被目标持仓持有的部分用于set (current _ position)中的股票。差(target _ position):account . order _ to(stock,0) #根据目标持仓权重,对target _ position:account . order _ pct _ to(stock,WTS [stock])中的股票逐一委托下单。关于极值中和标准化的思考。去掉极值就好了。中和标准化基本上是一个黑箱。不知道怎么算。可能会有人写文章讲讲怎么算,很迷茫。你真的需要这样做吗?如果是快速简单的写验证的方式,最好用simple_long_only。如果需要各种设置参数,需要使用long_only。这个函数也是黑匣子,比较复杂。在实际操作中,最好所有的实现都可以自己完成,比较一下官方函数之间的区别。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。