用爬虫分析沪深300指数超长走势
我们知道,一个股市里面有非常多的股票,我们如何能够量化整个股市整体的行情呢,答案是通过一些综合性的指数。本文所选用的沪深300就是这类指数中的一个。我们先来看一下百度百科对于沪深300的解释。
由于股票价格起伏无常, 投资者必然面临市场价格风险。对于具体某一种股票的价格变化,投资者容易了解,而对于多种股票的价格变化,要逐一了解,既不容易,也不胜其烦。为了适应这种情况和需要,一些金融服务机构就利用自己的业务知识和熟悉市场的优势,编制出股票价格指数,公开发布,作为市场价格变动的指标。投资者据此就可以检验自己投资的效果,并用以预测股票市场的动向。同时,新闻界、公司老板乃至政界领导人等也以此为参考指标,来观察、预测社会政治、经济发展形势。
emmm,说的有点复杂,简单说就是选择了市场上比较有代表性的300只股票,按照权重计算的一个加权和,而且指数会根据市场的变化调整所选用的股票,因此可以认为沪深300就是股市的晴雨表。更有甚者,假如我们买了一只基金,这个基金还跑不过沪深300指数,那么有几种可能:
- 第一种就是这只基金选取的股票是低于市场的平均收益的,可能是基金经理的技术不够好;
- 第二种可能是这只基金所选择的赛道目前都处于被低估的状态
总而言之,我们在选股的时候可以根据类似沪深300这样的指数进行参考。
在网上查数据的时候,很容易查到沪深300最近一段时间的表现,但是如果想看看超长时间的表现则会比较困难。但是其实,很多网站都有历史数据,只不过没有直接进行整合然后展示出来,我们需要自己用爬虫爬取数据,然后绘图。
这里使用搜狐证券的接口,我直接将接口和参数放出来。
https://q.stock.sohu.com/hisHq?code=zs_399300&start=20190102&end=20200101&stat=1&order=D&period=w&callback=historySearchHandler&rt=jsonp
这是一个get类型的接口,下面介绍各个参数的含义
- code:股票代码,zs_399300是沪深300的代码
- start:开始时间,20190102表示2019年1月2日
- end:结束时间,20200101表示2020年1月1日
- stat:不明
- order:排序顺序,D表示倒叙排序
- period:表示周期,d表示天,w表示周,m表示月
- callback:不明
- rt:不明
以上信息中比较需要我们填写的就是code,start和end,由于我们统计的是超长周期的走势,因此period可以选择w,获取周信息即可看,下面是拼接url的代码
# 组装url
def packurl(stockcode, starttime, endtime):url = "https://q.stock.sohu.com/hisHq?"url += "code="url += stockcodeurl += "&start="url += starttimeurl += "&end="url += endtimeurl += "&stat=1"url += "&order=D"url += "&period=w"url += "&callback=historySearchHandler"url += "&rt=jsonp"print(url)return url
我们需要传入股票代码,开始时间和结束时间。
知道了接口后,其实就是非常简单了,我们将数据爬下来,然后使用matplotlib绘制出来就行。
下面就是所有的代码,我们从2005年的数据统计到2023年的数据,大概是18年左右。
import requests
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
import jsonxAxis = []
yAxis = []YLIMMIN = 500
YLIMMAX = 6000plt.rcParams['font.sans-serif']=['SimHei']
MAJOR_LOCATOR = 20font1 = {'size' : 30,
}
FONTSIZE = 30
# 颜色字典
cnames = {
'aliceblue': '#F0F8FF',
'antiquewhite': '#FAEBD7',
'aqua': '#00FFFF',
'aquamarine': '#7FFFD4',
'azure': '#F0FFFF',
'beige': '#F5F5DC',
'bisque': '#FFE4C4',
'black': '#000000',
'blanchedalmond': '#FFEBCD',
'blue': '#0000FF',
'blueviolet': '#8A2BE2',
'brown': '#A52A2A',
'burlywood': '#DEB887',
'cadetblue': '#5F9EA0',
'chartreuse': '#7FFF00',
'chocolate': '#D2691E',
'coral': '#FF7F50',
'cornflowerblue': '#6495ED',
'cornsilk': '#FFF8DC',
'crimson': '#DC143C',
'cyan': '#00FFFF',
'darkblue': '#00008B',
'darkcyan': '#008B8B',
'darkgoldenrod': '#B8860B',
'darkgray': '#A9A9A9',
'darkgreen': '#006400',
'darkkhaki': '#BDB76B',
'darkmagenta': '#8B008B',
'darkolivegreen': '#556B2F',
'darkorange': '#FF8C00',
'darkorchid': '#9932CC',
'darkred': '#8B0000',
'darksalmon': '#E9967A',
'darkseagreen': '#8FBC8F',
'darkslateblue': '#483D8B',
'darkslategray': '#2F4F4F',
'darkturquoise': '#00CED1',
'darkviolet': '#9400D3',
'deeppink': '#FF1493',
'deepskyblue': '#00BFFF',
'dimgray': '#696969',
'dodgerblue': '#1E90FF',
'firebrick': '#B22222',
'floralwhite': '#FFFAF0',
'forestgreen': '#228B22',
'fuchsia': '#FF00FF',
'gainsboro': '#DCDCDC',
'ghostwhite': '#F8F8FF',
'gold': '#FFD700',
'goldenrod': '#DAA520',
'gray': '#808080',
'green': '#008000',
'greenyellow': '#ADFF2F',
'honeydew': '#F0FFF0',
'hotpink': '#FF69B4',
'indianred': '#CD5C5C',
'indigo': '#4B0082',
'ivory': '#FFFFF0',
'khaki': '#F0E68C',
'lavender': '#E6E6FA',
'lavenderblush': '#FFF0F5',
'lawngreen': '#7CFC00',
'lemonchiffon': '#FFFACD',
'lightblue': '#ADD8E6',
'lightcoral': '#F08080',
'lightcyan': '#E0FFFF',
'lightgoldenrodyellow': '#FAFAD2',
'lightgreen': '#90EE90',
'lightgray': '#D3D3D3',
'lightpink': '#FFB6C1',
'lightsalmon': '#FFA07A',
'lightseagreen': '#20B2AA',
'lightskyblue': '#87CEFA',
'lightslategray': '#778899',
'lightsteelblue': '#B0C4DE',
'lightyellow': '#FFFFE0',
'lime': '#00FF00',
'limegreen': '#32CD32',
'linen': '#FAF0E6',
'magenta': '#FF00FF',
'maroon': '#800000',
'mediumaquamarine': '#66CDAA',
'mediumblue': '#0000CD',
'mediumorchid': '#BA55D3',
'mediumpurple': '#9370DB',
'mediumseagreen': '#3CB371',
'mediumslateblue': '#7B68EE',
'mediumspringgreen': '#00FA9A',
'mediumturquoise': '#48D1CC',
'mediumvioletred': '#C71585',
'midnightblue': '#191970',
'mintcream': '#F5FFFA',
'mistyrose': '#FFE4E1',
'moccasin': '#FFE4B5',
'navajowhite': '#FFDEAD',
'navy': '#000080',
'oldlace': '#FDF5E6',
'olive': '#808000',
'olivedrab': '#6B8E23',
'orange': '#FFA500',
'orangered': '#FF4500',
'orchid': '#DA70D6',
'palegoldenrod': '#EEE8AA',
'palegreen': '#98FB98',
'paleturquoise': '#AFEEEE',
'palevioletred': '#DB7093',
'papayawhip': '#FFEFD5',
'peachpuff': '#FFDAB9',
'peru': '#CD853F',
'pink': '#FFC0CB',
'plum': '#DDA0DD',
'powderblue': '#B0E0E6',
'purple': '#800080',
'red': '#FF0000',
'rosybrown': '#BC8F8F',
'royalblue': '#4169E1',
'saddlebrown': '#8B4513',
'salmon': '#FA8072',
'sandybrown': '#FAA460',
'seagreen': '#2E8B57',
'seashell': '#FFF5EE',
'sienna': '#A0522D',
'silver': '#C0C0C0',
'skyblue': '#87CEEB',
'slateblue': '#6A5ACD',
'slategray': '#708090',
'snow': '#FFFAFA',
'springgreen': '#00FF7F',
'steelblue': '#4682B4',
'tan': '#D2B48C',
'teal': '#008080',
'thistle': '#D8BFD8',
'tomato': '#FF6347',
'turquoise': '#40E0D0',
'violet': '#EE82EE',
'wheat': '#F5DEB3',
'white': '#FFFFFF',
'whitesmoke': '#F5F5F5',
'yellow': '#FFFF00',
'yellowgreen': '#9ACD32'}# 发送get请求
def find(url, A):result = A.get(url, timeout=7, allow_redirects=False)print(result.text)return result.text# 组装url
def packurl(stockcode, starttime, endtime):url = "https://q.stock.sohu.com/hisHq?"url += "code="url += stockcodeurl += "&start="url += starttimeurl += "&end="url += endtimeurl += "&stat=1"url += "&order=D"url += "&period=w"url += "&callback=historySearchHandler"url += "&rt=jsonp"print(url)return url# 将响应结果变成json
def changeResp(str):str = str.replace("historySearchHandler(", "")str = str.replace(")", "")dict = json.loads(str)x = []y = []for i in range(len(dict[0]["hq"])):x.append(dict[0]["hq"][i][0])y.append(float(dict[0]["hq"][i][2]))x.reverse()y.reverse()for i in range(len(x)):xAxis.append(x[i])yAxis.append(y[i])# 绘图
def draw(filename, title):# xAxis.reverse()# yAxis.reverse()print(xAxis)print(yAxis)plt.figure(figsize=(100, 25))plt.title(title, font1)plt.plot(xAxis, yAxis, color=cnames["cadetblue"],label=title)# 隐藏部分x轴坐标plt.gca().xaxis.set_major_locator(ticker.MultipleLocator(MAJOR_LOCATOR))plt.ylim(YLIMMIN, YLIMMAX)plt.xticks(rotation=30)# 设置刻度的字体大小plt.xticks(fontsize=FONTSIZE)plt.yticks(fontsize=FONTSIZE)plt.grid()plt.rcParams.update({'font.size': FONTSIZE}) # 设置图例字体大小plt.legend()plt.savefig("./" + filename + ".png")plt.savefig("./" + filename + ".svg")#plt.show()if __name__ == "__main__" :headers = {'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2','Connection': 'keep-alive','User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0','Upgrade-Insecure-Requests': '1'}A = requests.Session()A.headers = headerstitle_list = ["沪深300"]code_list = ["zs_399300", ]starttime_list = ["20050101", "20060102", "20070102", "20080102", "20090102", "20100102", "20110102", "20120102", "20130102", "20140102","20150102", "20160102", "20170102", "20180102", "20190102","20200102", "20210102", "20230102"]endtime_list = ["20060101", "20070101", "20080101", "20090101", "20100101", "20110101", "20120101", "20130101", "20140101", "20150101","20160101", "20170101", "20180101", "20190101", "20200101","20210101", "20220101", "20230520"]for i in range(len(code_list)):codestock = code_list[i]title = title_list[i]for j in range(len(starttime_list)):str = find(packurl(codestock, starttime_list[j], endtime_list[j]), A)changeResp(str)draw(codestock, title)
以上是python代码,你安装好三方库后直接运行就行了,下面来看一下走势图
这是一张超长图,不知道能不能看的清楚。
看到上面走势图一开始我也是比较惊讶的,从图中可以总结出几个信息:
- 2005年到2006年指数都是比较低的,都不到1000点,一直到2007年左右开始起飞
- 2007年到2008年初指数几乎冲到了历史最高点,达到将近6000点
- 2008年中指数开始腰斩,期间发生了什么,估计也不需要我多说了
- 2008年年末指数达到了最低点,随后开始拉升,估计是政府的救市计划起作用了,中国开始了基建狂魔模式
- 指数到2014年都还是不温不火的状态,随后迎来了一个小高峰,但很快又开始回落
- 到了2020年又是一个小高峰,但是今年2023年又开始回落
我写这篇文章的时候,沪深300指数大概是3900多点,不到4000点。不知道大家看到这个指数是什么感觉,我的感觉是这个指数波动很大,非常大,总是大起大落,高的时候很高,低的时候又很低;然后,目前的话,肯定是处于一个高位的状态,我们不否认经济相比于过去有了非常大的进步,但是股市终究也是充满了泡沫。
这是我对于宏观数据的第一次数据分析,其实互联网上是可以查询到非常多的宏观经济数据的,借助这些数据可以很好的观察整个经济的形式,以及相互之间的关联,后续的话我也会努力去学习一下宏观经济学,然后结合所学知识加深自己对于世界的认知。
最后提醒一句
入市有风险,投资需谨慎
本文不提供任何投资建议。
用爬虫分析沪深300指数超长走势相关推荐
- Barra 结构化风险模型实现(1)——沪深300指数的风格因子暴露度分析
米筐科技(RiceQuant)策略研究报告:Barra 结构化风险模型实现(1)--沪深300指数的风格因子暴露度分析 江嘉键 1 年前1 概述 Barra 结构化风险模型是全球知名的投资组合表现和风 ...
- 结构化风险模型----转:沪深300指数的风格因子暴露度分析(一)
from: https://xueqiu.com/7381621247/73649418 1 概述 Barra 结构化风险模型是全球知名的投资组合表现和风险分析工具.最近一段时间,我们米筐科技量化策略 ...
- Python爬虫入门:爬虫抓取沪深300指数列表
使用Python3爬取沪深300指数列表 1. 思路分析 用chrome打开维基百科沪深300的页面,网址为:https://en.wikipedia.org/wiki/CSI_300_Index . ...
- python分析数据走势图_左大营 | python数据分析篇系列1——探索沪深300指数(附代码)(中)...
探索沪深300指数(HS300)--基于Python(中) [承接上文] 写在前面:本文只做分析,提供观点,不构成投资建议 如需转载请微信联系:eosO_oke 佛系更新,关注不迷路 沪深300指数是 ...
- tushare获取沪深300指数历史_TuShare -财经数据接口包
在Pro版接口中,我们也增加了通用通用行情接口,可以方便获得各种资产各种频度的数据,欢迎使用. 获取个股历史交易数据(包括均线数据),可以通过参数设置获取日k线.周k线.月k线,以及5分钟.15分钟. ...
- Python的tushare库实现沪深300 指数数据分析——CAMP模型
(1)筛选 使用作业1的程序 完成对沪深300指数成分股过去2015年1月-2018年1月三年的数据分析 按alpha从大到小,选择出30只alpha最高的股票形成股票池1,以备进一步分析 (2)预测 ...
- 择时策略 —— 基于北上资金的沪深300指数择时
1.策略概述 北向资金是指通过港交所流入A 股的资金,资金来源可能是外资.港资,也有可能是国内借道香港的"出口转内销"资金,托管方是在香港营业的银行或者券商.北向资金总体上主要流向 ...
- 【系统收藏——中天证券创鑫软件 官方版 [同时支持三板、港股行情、沪深300指数。]】
中天证券创鑫软件是中天证券自主研发,多位资深咨询师智慧的结晶.同时支持三板.港股行情.沪深300指数.中天证券创鑫软件支持绿色通道.支持开放式基金. 功能介绍 闪电下单;支持多帐户操作;行情交易合一. ...
- python获取股指_用Python读取csv文件中的沪深300指数历史交易数据
保存路径:D:\python\用Python读取csv文件中的沪深300指数历史交易数据 程序名称:readcsvhs300.py: 数据名称:沪深300指数历史交易数据.csv: 开发环境:Win7 ...
最新文章
- HTML POST提交参数给PHP并返回json,上传execl文件
- 大型网站技术架构(七)网站的可扩展性架构
- AI时代,人与机器的沟通方式
- TCP端口状态说明ESTABLISHED、TIME_WAIT、 CLOSE_WAIT
- python培训机构推荐-Python培训班哪家好?老男孩Python入门学习
- 【LeetCode从零单排】No38.CountAndSay
- cam350 不能打开光绘文件_电子设计工程CAM350光绘工艺的一般流程
- Dotnet Core异常处理的优雅实践
- [剑指offer]面试题22:栈的压入、弹出序列
- linux指令与数据库,Linux指令每日背诵(第一天)
- apache启服务命令_linux系统下apache服务的启动、停止、重启命令
- 故障-bash-4.1$ 的解决
- 新一配:iPod及其系列产品【转载】
- 道岔及转辙机结构详解
- 如何进行项目管理?企业项目管理常见的组织形式有哪些?
- Java相互关注_java --关注/取消关注
- php短信接口开发demo,php短信接口DEMO-云信互联PaaS平台
- xmlserializer_更改XmlSerializer输出临时程序集的位置
- 10 分钟把你的 Web 应用转为桌面端应用
- webstorm 扩大内存