请 [注册] 或 [登录]  | 返回主站

量化交易吧 /  量化平台 帖子:3365811 新帖:18

JQData | 股市估值分析,带你穿越资本市场迷雾

萨达撒撒发表于:5 月 10 日 00:47回复(1)

投资最重要的事 -- 估值

投资最重要的是什么?答:判断“胖瘦”的能力

巴菲特:对面过来一个200斤的人,你不需要一台体重秤,也该知道他是胖子。
要想做好投资,你该知道自己心仪的标的到底是贵还是便宜。

在资本市场,判断“胖瘦”的能力,我们也叫估值。

没有估值,没有识别贵贱的能力,就会像大海里的浮萍,亏盈全靠市场和运气。
有了估值,你就像拥有了定海神针,任凭市场涨涨跌跌,潮起潮落,我自低买高卖,波动越大,收益越多。

看到这里,请暂停1分钟,仔细思考下是不是这样?

对于市场估值的准确估计是根本的出发点。

为什么估值如此重要?

当我们没有这份能力的时候,怎么知道一个标的是不是值得买?
如果大家都嫌弃的时候,你是不是也感到害怕不敢买入?
或者当大家都看好的时候,确实赚到钱的时候,你也兴奋的杀入?
然后就变成了接盘侠、韭菜、旅鼠、浮萍。

当我们有这份能力的时候,我们知道这个标的的真正价值,假设值1块钱。
当它跌到5毛的时候,我们其实会想超市大促销一样开心,可以买更多。
当它涨到2块的时候,我们则慢慢卖出,卖给欢天喜地抢购的人。
因为我们知道,价值总会被发现,价值终将回归,价格始终围绕价值波动。

是不是有点“他强任他强 清风拂山岗”的感觉?

信心从这里开始。
这也是价值投资,逆向投资的第一步。也是最重要的一步。

让我们用数据说话。

通过聚宽本地金融数据JQData,我们找到了2005年至今的全市场估值数据(取自沪深市场每日成交概况),从中提取出深圳市场从2005年至今的平均市盈率数据。我们发现:

① 深圳市场在最近两轮牛市的顶点,也即2008年1月15日和2015年6月12日,达到全市场PE的峰值水平,并且两个峰值PE表现出了明显的近似关系。

e6238196230a4f1bbea7a0684355a601.png
图片来自文章

具体来看,深圳市场在两轮牛市顶点的峰值PE分别是76.13和68.92,近似率为90.53%。
这种峰值PE的近似性,几乎完美验证了我们关于全市场估值水平呈现周期性波动的猜想。

如何估值 -- 全市场PE和PB

判断A股市场贵贱,最有效的办法,是看全市场。
正在的牛市,肯定是所有股票飞天的市场。而真正的熊市,肯定是泥沙俱下,管你好股票,差股票,全部跌得惨不忍睹的市场。
而我们的能力,从全市场估值开始。

可以说,一个完整的牛熊周期,也即投资者风险偏好上升-回落-再上升,带动全市场估值周期性波动的过程。
如果能够通过全市场估值的历史数据,找到市场估值的波动周期,那么我们就能准确地评估当前市场的估值水平了。

看全市场估值,最简单有效的方案是看全市场的PE和PB。
PE和PB是什么?不知道这个的小白还是别炒股了,先去补补功课。
不想让自己的血汗钱被收割的话,一定要学习一下。

那么问题来了,请问在哪里可以买到它呢?
JQData给你好看

我将会用JQData计算全市场等权PE和等权PB、PE。

至于为什么要用等权?因为不想受市值庞大的股票左右。感兴趣的朋友可以找我讨论。
具体计算等权PE的算法如下:
全市场PE = N / ∑(1 / (市值 / 净利润))
其中:市值 / 净利润 = pe_ttm

talk is cheap, show me the code.
用JQData计算某天交易日的全市场PE代码如下:

# 获取全市场股票PE
all_stock = jqdatasdk.get_all_securities(['stock'], date=query_date)
stocks = list(all_stock.index)
print(" 全市场", len(stocks), "只股票信息")

stock1 = stocks[:2000]
stock2 = stocks[2000:]

q1 = jqdatasdk.query(
    jqdatasdk.valuation.code, jqdatasdk.valuation.day, jqdatasdk.valuation.pe_ratio, jqdatasdk.valuation.pb_ratio
).filter(
    jqdatasdk.valuation.code.in_(stock1)
)
df1 = jqdatasdk.get_fundamentals(q1, date=query_date)
df1.to_sql(name='stock_valuations', if_exists='append', con=conn, index=False)

q2 = jqdatasdk.query(
    jqdatasdk.valuation.code, jqdatasdk.valuation.day, jqdatasdk.valuation.pe_ratio, jqdatasdk.valuation.pb_ratio
).filter(
    jqdatasdk.valuation.code.in_(stock2)
)
df2 = jqdatasdk.get_fundamentals(q2, date=query_date)
df2.to_sql(name='stock_valuations', if_exists='append', con=conn, index=False)

stock_fund = pd.concat([df1, df2]).set_index('code')

# 计算全市场等权PE
pe_ew = len(stock_fund["pe_ratio"]) / stock_fund["pe_ratio"].apply(get_pe_trans).sum()
# print(" 全市场等权PE=", pe_ew)

# 计算全市场等权PB
pb_ew = len(stock_fund["pb_ratio"]) / stock_fund["pb_ratio"].apply(get_pe_trans).sum()
# print(" 全市场等权PB=", pb_ew)

总结 -- 估值图

下图是我依据JQData的数据和pyecharts画图,画出来的,从2005年以来的全市场估值图:
免费分享,但是我自己觉得它价值千金:)。
仔细的看,认真的看5分钟,看看能不能发掘出一点属于你自己的心得。

全市场等权PE.png

我简单说两点:
1、深综指数斜向上增长,所以长期投资总是可以赚钱
2、几年内,涨跌幅特别大,如果能抓住一波,资产将有本质的飞跃
3、市场估值波动特别大,估值总是波动,总体在15到70间波动
4、15只有08年到过,05年,15年没有低于20倍
5、低于25的时候,无疑是非常好的投资机会
6、高于60的时候,无疑是非常好的卖出机会
7、现在无疑也是非常好的投资机会:)

基于全市场估值的一个简单应用交易策略:
1、获取2005年以来,每个交易日的全市场PE、PB
2、计算当前交易日的全市场PE、PB在历史中的百分位
3、当低于20%的时候买入,高于80%的时候卖出

当然,还有更复杂有效的交易策略,以后我会继续拿出来讨论分析,但是全市场估值是基础,没有之一。

有了全市场估值这个定海神针,我们就能穿越资本市场的迷雾,踏上自由之路,收获属于自己的那一份财富。

全部回复

0/140

量化课程

    移动端课程