美文网首页
Python分析上证指数历史数据,发现估值还不够低……

Python分析上证指数历史数据,发现估值还不够低……

作者: 老Q在折腾 | 来源:发表于2018-12-25 20:58 被阅读0次

今天我们的目的并不是完全掌握Python量化分析,仅仅是作为入门引领,开启一扇新的大门。在之后的日子里,我会不定时地分享更多关于时间序列分析、量化分析的内容,欢迎关注、收藏、转发!

最近股票行情不太好啊……

可能很多朋友都想用Python分析一下股票数据,来看看自己的股票是否值得持有,或者判断某支股票是否值得建仓。那么问题来了,数据在哪里呢?

我曾经写了一个脚本,用于抓取每日的行情数据并存储到数据库中,并且用crontab设置了让它每天收盘后执行。但是现在,我发现了一个更加方便的手段,可以快速获取股票的行情数据!

这种方法就是使用Tushare提供的免费数据接口。Tushare API提供了对Python、R、HTTP、Matlab的支持,这对于我们个人开发者来说再好不过了!

在Tushare的官方网站上有详细的安装和调用教程,感兴趣的可以先安装下。https://tushare.pro/document/1

假如你已经安装完成,那么接下来,就要开始我们的魔法了!

一、获取上证指数历史行情数据

import tushare as ts
import pandas as pd

# 设置token,只需要在第一次调用或者token失效时设置
# 设置完成后,之后就不再需要这一个命令了
# ts.set_token('*******')

pro = ts.pro_api()
df_daily = pro.index_daily(ts_code="000001.SH")
df_daily.head()
-w857

可以看到,简单的几行命令,我们就成功获得了上证指数每日的行情数据,而且还是超级方便的pandas DataFrame格式呢!从数据中,我们看到Tushare提供了收盘价、开盘价、最高价、最低价、昨日收盘价、涨幅、百分比涨幅、成交量和成交额这些字段。

二、处理日期

我们注意到日期的格式不太符合我们的要求,还好pandas对于时间序列处理提供了良好的支持。我们可以先把日期对象转换为datetime对象,以方便后续的使用。同时我们将时间设置为index。

df_daily.index = pd.to_datetime(df_daily['trade_date'])
df_daily.index[:5]

输出为:

DatetimeIndex(['2018-12-25', '2018-12-24', '2018-12-21', '2018-12-20',
               '2018-12-19'],
              dtype='datetime64[ns]', name='trade_date', freq=None)

可以看到,我们已经成功完成了格式转换。

三、绘制历史收盘价曲线

import seaborn as sns

# 设置为seaborn的样式,更美观
sns.set()

# 绘制收盘价曲线
df.plot(y="close");
image

四、绘制均线

我们知道,股票行情受各种因素影响,波动较大,因此我们经常会用均线来作为一个稳定趋势的参考。今天我们就以60日均线为例看下如何使用Python绘制均线。

import matplotlib.pyplot as plt

df_daily = df_daily.sort_index(ascending=True)
plt.figure(figsize=(12, 6))
df_daily.close['20150101':].plot()
df_daily.close.rolling(60).mean()['20150101':].plot();
image

考虑到展示效果的问题,我们仅截取了2015年以来的数据,看到这幅图,不禁开始心疼A股韭菜。曾经以为的慢牛,没想到只是一个反弹……

同时我们也注意到了今年以来60日线对于上证指数的强大压制力,不过观察历史趋势我们还可以发现一点,那就是一旦实现对60日线的有效突破,那就至少会有一段行情(虽然有时可能仅有一个小波段……)

五、查看估值水平

Tushare还提供了接口用于获取每天的各项指标,其中就包含了我们接下来要查看的PE水平。

df_basic = pro.index_dailybasic(ts_code='000001.SH')
df_basic.head()
-w978

可以看到,这里有总市值、流通市值、总股本、流通股本、换手率、基于流通股本的换手率、PE(市盈率)、动态PE、PB(市净率)这些字段。

那我们就来用动态市盈率数据来看下当前A股上证的估值水平。

plt.figure(figsize=(12, 6))
sns.distplot(df_basic.pe_ttm, bins=100)
plt.axvline(x=df_basic.pe_ttm[0], color='red');
image

看起来,虽然当前的动态市盈率处于绝对的低位,但是仍有很多天的动态市盈率在当前的水平之下。那我们再看一下比当前估值水平更低的情况都出现在哪些时期。

df_basic.index = pd.to_datetime(df_basic["trade_date"])
plt.figure(figsize=(12, 6))
plt.plot(df_basic.pe_ttm)
plt.axhline(y=df_basic.pe_ttm[0], color="red");
image

看起来主要14、15年的阶段底部期间,A股上证的估值水平比现在还要低。那么如果真的要跌到这个水平的话,上证指数还要下跌多少?我们来算一下。

now = df_basic.pe_ttm[0]
min = df_basic.pe_ttm.min()
ratio = (now - min) / now
print("ratio: {0:.2f}%".format(ratio * 100))

输出为:

ratio: 19.96%

还有20%……别怕,这个并不是真的要再跌20%,只是说在14、15年期间,上证磨底一直将PE磨到了8.9的水平,然后爆发了一波直接上涨到了23。所以说磨得越久,能量积蓄就越足。

韭菜们,有点耐心哈!另外祝大家多多发财!圣诞快乐!

相关文章

  • Python分析上证指数历史数据,发现估值还不够低……

    今天我们的目的并不是完全掌握Python量化分析,仅仅是作为入门引领,开启一扇新的大门。在之后的日子里,我会不定时...

  • 房地产有机会!可以上车!

    从A股市场现在的股票估值来看,估值已经够低了!但人气却很弱! 难道是业绩问题? 也不是 更多的还是国内投资者信心的...

  • 川投能源 600674

    综合分析 估值分析 财务分析

  • 【#3李宝亮】概率估值、相对估值

    相对估值一、什么是相对估值相对估值: 通过观察市场同类资产的价值来判断被分析资产的价值。相对估值法隐含这样的假设,...

  • A股全市场指数哪个好?

    如何知道现在市场行情处于什么估值?如何知道现在的行情是否具有投资价值? 相信很多小白给全市场估值都是用上证指数,稍...

  • 打不赢的敌人,离不开的朋友

    铁律二:重视价值忽略估值。 桥水资本的Ray Dalio:不要让自己的估值过分超过自己的实际价值。(还不太理解估值...

  • 2019-08-20

    分享:读懂企业估值(四) (接上期20190810) 以上三节对企业估值的市盈率进行了详细的分析。接下来对企业估值...

  • 股票PE的应用

    投资股票前,需要先分析公司,然后做估值。最后拿这估值对比现在它的现价,如果现价远低于估值,那就买入,因为这时候相当...

  • 正确看待估值的局限性 2018-11-22

    作者:Ponder 估值的局限性分析 今天跟大家分享个比较重要的东西:历史估值的局限性。我们每个交易日都在看估值数...

  • 用plotly搭建自己的A股指数估值监控系统

    前段时间看到有朋友在网上分享自己的指数估值监控程序,就是将整个大盘估值的历史数据画成表格,然后定时发往订阅者的邮箱...

网友评论

      本文标题:Python分析上证指数历史数据,发现估值还不够低……

      本文链接:https://www.haomeiwen.com/subject/lcuqlqtx.html