今天我们的目的并不是完全掌握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()

可以看到,简单的几行命令,我们就成功获得了上证指数每日的行情数据,而且还是超级方便的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");

四、绘制均线

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

import matplotlib.pyplot as pltdf_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();

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

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

五、查看估值水平

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

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

可以看到,这里有总市值、流通市值、总股本、流通股本、换手率、基于流通股本的换手率、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');

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

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");

看起来主要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分析上证指数历史数据,发现估值还不够低……相关推荐

  1. python数字规律分析_【小白学爬虫】用Python分析福彩3D|发现数字的秘密

    2).我们用chrome浏览器,分析一下网站的结构和源码 访问: http://kaijiang.zhcw.com/zhcw/inc/3d/3d_wqhg.jsp 跳转到: http://kaijia ...

  2. 我用Python分析1585家电商车厘子销售数据,发现这些秘密!

    图片来源:互联网 大家好,我是菜鸟哥~ 众所周知,中国是智利车厘子最主要的出口对象,占据了其95%的市场份额. 智利驻华大使馆商务参赞娜塔曾表示:"2020-2021产季车厘子实现了丰收,预 ...

  3. 【数据分析】系列-Python分析淘宝4200款Bra(没错,就是文胸)后,发现最好卖的款式居然是。。。

    此博客仅为我业余记录文章所用,发布到此,仅供网友阅读参考,如有侵权,请通知我,我会删掉. 本着娱乐的态度,着手分析一下淘宝的前4200+款bra(文胸),看看有什么有趣的地方. 项目背景 起因:近日, ...

  4. GDP越高就越幸福吗?用Python分析《世界幸福指数报告》后我们发现…

    公众号后台回复"图书",了解更多号主新书内容 作者:CDA数据分析师 来源:CDA数据分析师  CDA数据分析师 出品   作者:真达.Mika 数据:真达   [导读] 今天教大 ...

  5. python分类信息_用Python分析了 7 万款 App后,我们发现...

    原标题:用Python分析了 7 万款 App后,我们发现... 本文中使用 Scrapy 爬取了豌豆荚全网 70,000+ App ,并进行探索性分析. 写在前面:若对数据抓取部分不感兴趣,可以直接 ...

  6. 用Python分析了7000多个交易日的涨跌数据,看看A股有没有“黑色星期五”

    用Python分析了7000多个交易日的涨跌数据,看看A股有没有"黑色星期五" 前言 "黑色星期五"作为一个组合词,可以有很多解释.它起源于西方宗教,耶稣死在星 ...

  7. Python分析101位《创造营2020》小姐姐,谁才是你心中的颜值担当?

    来源 | CDA 数据分析师 责编 |  Carol Show me data,用数据说话. 今天我们聊一聊<创造营2020>各个小姐姐,点击下方视频,先睹为快: 最近可以追的综艺真是太多 ...

  8. 用Python分析《红楼梦》:见证了贾府的兴衰,你是否还能“笑道”世事无常

    没读过<红楼梦>也能知道前后四十回是不是一个作者写的?很久以前,数据侠黎晨,用机器学习的算法分析了<红楼梦>,认为后四十回和前八十回内容上有明显差距.不过,数据侠楼宇却不这么认 ...

  9. 用Python分析了十年电影票房,原来我错过了这么多好电影!

    "玩电影票房数据,我教你啊" 3月8日妇女节,我很期待的超级英雄电影<惊奇队长>上映了,票房表现很快过亿,但大众口碑却让人失望. 一个有趣且常见的现象是,隔壁获奖无数, ...

  10. 'python program'.count('p')的值是_如何用Python分析泰坦尼克号生还率?

    原标题:如何用Python分析泰坦尼克号生还率? 1912年当时世界上最大的豪华客轮泰坦尼克号在处女航中撞上冰山沉没,船上船员及乘客共有2224人,只有710人生还.当灾难突然降临时,所有人的生死瞬间 ...

最新文章

  1. linux zip 命令详解
  2. xp snapshot.
  3. UA SIE545 优化理论基础4 对偶理论简介4 求解对偶问题的割平面算法
  4. NET问答: 如何取消或中止 Task 执行 ?
  5. .NET Core 中生成验证码
  6. JAVA程序员面试题集合
  7. JPBC库只使用椭圆曲线群,不使用双线性性质。找单位元,逆元等
  8. python绘制直方图plt_Python:matplotlib绘制直方图
  9. 基于keras和tensorflow的yolo3物体检测
  10. ps 毛发 边缘,抠图技巧,抠图后头发边缘的颜色怎处理
  11. mac上传文件到ftp服务器,mac上传文件到ftp服务器
  12. Map Coloring(翻译)
  13. arduino中print()跟write()最大区别和注意事项 (最详细)
  14. day2 用户体验及用户需求(用户体验五要素、需求、需求收集、需求池)
  15. Pytorch 如何 优化/调整 模型参数
  16. 望远大光圈拍风景的魅力--不破不立系列(1)
  17. 从P6 到P7,到底要做哪些准备,掌握多少知(姿)识(势),小鱼亲身分享!!
  18. 交易所步入「后FTX 时代」,WEEX唯客等后发新秀拉开补位战?
  19. 计算机考博复试基础知识,考博复试笔试备考攻略
  20. Flash音乐控制详解

热门文章

  1. 经方的魅力第二版》读书摘录
  2. 键盘对于程序员的价值
  3. [转帖]rsync简介
  4. 页面自动添加font标签
  5. 力扣的使用简介及代码编写说明
  6. 白云市场高仿包值不值得买?
  7. mysql 主键和候选键_2.2.2 候选键与主键
  8. kasp技术原理_KASP基因分型技术服务
  9. 保密协议中竞业限制未写明补偿金的是否可以生效?
  10. linux驱动数码管-基于74HC164D