2019年2月16日

打开量化投资的黑箱-多因子选股篇 – 量化投资

不连贯的想做个使处于某种状况。,联合集团本身的学术条理,更数字化的信徒将有机会进入。

这是每一多代理人的股选择乐趣。,联合集团详细战略,这还不敷好。请雅正。。

开始
选股的理念来自某处一本书《极好的生长股》读F,整篇文字有两个代理人。:市价与分额比率跟市研率(市值跟研究与开发费)。
作为每一小在市场上出售某物退位翼型的复本依然是可以承担的。。
三个代理人是在市场上出售某物分 净赚生长速度 GR。,率先选择30个股的分率最底下的。,过后使用净赚生长速度 营业收益停止等效的钻机,选出十大股。,精选似矿物的平台的实现预期的结果。
战略分得的财产
选择的讨论是Python。,这边有3个包装。,numpy、熊猫是蟒本身的。,加州大学是每一优良的矿物质总体担保的书屋。

  1. import numpy as npimport pandas as pdfrom CAL.PyCAL import *

准备排印的书面材料行为准则

每个战略不得已有每一以一定间隔排列来决定重新提起工夫。、对立的规格、股池、初始资产、策略处决的频率和佣钱

  1. start = ”2014-01-01”end = ”2016-01-01”   benchmark = HS300                                # 规格是HS300索引宇宙。 = DynamicUniverse(”HS300”)                  # HS300静态库存库 = 100000000refresh_rate = 5   commission = Commission(buycost=0.0003, sellcost=0.0003, unit=”perValue”)    # 设置佣钱

准备排印的书面材料行为准则

出口上海使结合分税日历、下定义了三个代理人。

  1. # 日期处置卡 = 日历(′)                              # 出口上海使结合分税日历,卡尔是每一优良的庄园住宅本身的集成包。 下定义代理人据以取名,市价与分额比率、净赚生长速度、营业收益生长速度代理人据以取名 = [ PS ],”NetProfitGrowRate”,”OperatingRevenueGrowRate”]  

准备排印的书面材料行为准则

这相当于公开每一应付认为。

  1. def 设定初值(记述)                  # 设定初值做样品的记述国家   pass

准备排印的书面材料行为准则

战略逻辑分得的财产:

def handle_data(account):                  # 每逢分日分定货单

集中库存池

  1.   today =                                       # 离开的分日 = (当代, ”-1B”)                        # 前一分日,B: 时期,M:月,W:周,Y:年    yesterday_str = (”%Y%m%d”)         # 替换为字母行的日期典型    valid_uni = (ticker=u”399300″,intoDate=yesterday_str,field=[”consID”],pandas=”1″)[”consID”].tolist()         # 前分日HS300(399300)成份股指导的   valid_uni = [s for s in account.universe if s in valid_uni]  

准备排印的书面材料行为准则

在市场上出售某物分率代理人 ,获益了精选似矿物的的除数通知。

  1.     Factor_PS = (tradeDate=yesterday_str,secID=valid_uni,field=[”secID”,PS,pandas=”1″)    (SeID),inplace=True)

准备排印的书面材料行为准则

在市场上出售某物分率,30个调和率最底下的的股

  1.     sec_list = (”PS”)[0:30].()      

准备排印的书面材料行为准则

最底下的净赚生长速度和营业收益生长速度为30

  1.     Factor = (tradeDate=yesterday_str,secID=sec_list,field=[”secID”,”NetProfitGrowRate”,”OperatingRevenueGrowRate”],pandas=”1″)    (SeID),inplace=True)   

准备排印的书面材料行为准则

  1. 净赚生长速度净赚生长速度 Factor_NetProfitGrowRate = Factor[”NetProfitGrowRate”].dropna().to_dict()    #dropna()跟to_dict() 这是蟒。 熊猫的两大效能,这边的意义是使死亡空的值。   signal_NetProfitGrowRate = standardize(winsorize(Factor_NetProfitGrowRate))  # 除数处置:去极值、恢复友好状态,使死亡微小最大值,让代理人相加或相减。

准备排印的书面材料行为准则


    # 经纪收益生长速度运转退位,异样的假造办法。

  1.     Factor_OperatingRevenueGrowRate = Factor[”OperatingRevenueGrowRate”].dropna().to_dict()    signal_OperatingRevenueGrowRate = standardize(winsorize(Factor_OperatingRevenueGrowRate))

准备排印的书面材料行为准则

  1.     # 按净赚生长速度和OP生长速度数数   Total_Score = (index=Factor.index, columns=[”NetProfitGrowRate”,”OperatingRevenueGrowRate”], data=0)    Total_Score[”NetProfitGrowRate”][()] = ()    Total_Score[”OperatingRevenueGrowRate”][()] = ()    Total_Score[”total_score”] = (Total_Score, ([0.5, 0.5]))  # 联合集团两代理人的主体,等附加加重值于总结分

准备排印的书面材料行为准则

付帐  
    buylist = (TooToRealPosits)装上尾巴(10)      # 选择10支得分高地的的股。

  1.     buylist = {s: 0 for s in buylist}

准备排印的书面材料行为准则

交易断定
    for s in account.valid_secpos.keys():

  1.         if s not in buylist:            order_to(s, 0)    each_buymoney= account.reference_portfolio_value / len(buylist)  将投资额结成财产掉进LeN(买进清单)股。,等分交易   for s in buylist:        if s in account.security_position:  条件你想买股,你已经受胎。,不制作室。,没重要的人物需求计算交易状态并下单。           continue        amount= each_buymoney / [s] # 交易使结合前一天的解决是无效的。    命令(S), 款项)

准备排印的书面材料行为准则

回测翼型:
基本面多除数选股.png
基本面除数选股2.png

发表评论

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