使用PEG估值法简单选股(1)

您所在的位置:网站首页 peg指标公式源码 使用PEG估值法简单选股(1)

使用PEG估值法简单选股(1)

2024-01-30 00:27| 来源: 网络整理| 查看: 265

在彼得林奇的《决胜华尔街》中,提到了他的一种选股思路,那就是在正常的PE估值法基础之上,加上EPS的增速,这样既考虑到了估值水平也加入了成长性因子,这就是PEG估值法。

在聚宽中,有这个策略的案例,我研究了一下,发现作者写的稍微有点啰嗦,修改了一下,加入一些我的想法。

用聚宽网简单建立了一个模型

# 导入函数库 from jqdata import * def initialize(context): set_benchmark('399006.XSHE') set_order_cost(OrderCost(close_tax=0.0001, open_commission=0.0001, close_commission=0.0001), type='stock') set_option('use_real_price',True) g.s=get_index_stocks('000300.XSHG') run_monthly(trade, 1) def find(context): stock=get_fundamentals(query(valuation.code,valuation.pe_ratio,indicator.inc_net_profit_year_on_year ).filter(indicator.inc_net_profit_year_on_year>0 , valuation.pe_ratio>0) ) stock.loc[:,'peg']=stock['pe_ratio']/stock['inc_net_profit_year_on_year'] stok=stock.sort_index(by='peg',ascending=False,inplace=True) return stock def trade(context): stock=find(context) buylist=stock[:20] # print(buylist) holdstock=context.portfolio.positions for i in holdstock: if i not in buylist: order(i,0) needbuy=[] for i in buylist['code']: if i not in holdstock: needbuy.append(i) cash=context.portfolio.available_cash/len(needbuy) for i in needbuy: order_value(i,cash)

代码中,难点有几处:

1.因为我是用全市场股票进行回测,并没有从指数成分股中选股,所以,必须过滤掉很多股票,其中包括PE小于等于0,以及利润增速同比小于等于0的股票,这就是 stock=get_fundamentals(query(valuation.code,valuation.pe_ratio,indicator.inc_net_profit_year_on_year     ).filter(indicator.inc_net_profit_year_on_year>0 , valuation.pe_ratio>0)     )这行代码的含义,其中要注意的是,因为是过滤两个条件同时满足,正常应该用&或者and ,但是聚宽用的是“,”隔开就行

2.选出股票之后,要排序进行切片,也就是stok=stock.sort_index(by='peg',ascending=False,inplace=True)这行代码的含义。

这个地方要注意是因为聚宽的pandas版本问题,不能用a.sort_values()这个函数,只能用a.sort_index()这个函数,里面的by=后面可以加列表进行多个因子排序,最后的inplace=True,不能省略,含义是排序之后将原来的顺序替换,不然就白排了,根本不变。

3. 在trade()中的第二个for循环buylist后面一定要加['code'],因为buylist是find()生成的dataframe,里面列太多,要加上提取的列索引

看了一下回测效果,表现很差,这是必然的,因为这个模型距离真正能用还最少需要几处优化:

1.股票标的的选择用全市场明显有问题,必须调整

2.我选的股票是排名前20的股票,这个中写代码的时候就知道有问题,其实和问题1的根本是相同的,都是选取的股票有问题,全市场排名前20的股票peg都高的吓人,明显不能要

3.这个指标其实只是彼得林奇先生选股的方法中的一个因子,太不全面,过滤性还不够

4.这个方法是典型的买入并持有策略,这个方法中A股市场,恐怕只有极少数股票可以使用,实在是和美股比不了

5.我并没有加入牛熊判断依据,单从因子的角度来讲,因子还是没有问题的,加入择时因子应该会更好。

如果自己有策略,但是不会写代码的话,可以给我私信,价钱从几十到几百不等,看策略实现的难易程度而定,我使用的是聚宽平台,代码写好之后,可以在上面上模拟盘和实盘,对应的券商是第一创业证券。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3