上证历史收复3000点用时统计,这次需要几天?

2023-10-22 11:17:18 1点赞 4收藏 2评论

本周五上证又又又。。。跌破3000点了,这3000点保卫战从2007年上证第一次到3000点之后已经玩过50多次了,这次会用时多久呢?

图片图片

我们来结合历史数据分析下。

俗话说的好,要进行数据分析,先得有数据,那么如何获取上证指数得历史数据呢?

1. 数据获取

这里我们又要请出老朋友akshare了:

akshare中刚好有获取指数历史的函数ak.index_zh_a_hist。只要输入开始结束日期就可以了。

import akshare as ak # 加载上证指数历史数据 data = ak.index_zh_a_hist(symbol="000001", period="daily", start_date="20070225", end_date="22231019")

可以获取到下面的数据。

图片图片

这里为什么开始日期要选到20070225呢?因为这一天是上证第一次收盘到3000点以上,后面才有了3000点保卫战这个说法。

2. 分离历次3000点保卫战区间

思路分析,每个3000点保卫战其实是由2个日期组成的区间,第一个日期是跌破3000点,第二个日期是回到3000点。所有我们只需要找到所有这样的日期并两两配对就可以了。

for i in range(1, len(data)): prev_close = data['收盘'].iloc[i-1] curr_close = data['收盘'].iloc[i] if prev_close > 3000 and curr_close < 3000: prev_date_lower = data['日期'].iloc[i] prev_close_lower_dates.append(prev_date_lower) elif prev_close < 3000 and curr_close > 3000: prev_date_higher = data['日期'].iloc[i] prev_close_higher_dates.append(prev_date_higher)

计算两个日期之间的天数。

for prev_date_lower, prev_date_higher in zip(prev_close_lower_dates, prev_close_higher_dates): days_between = (prev_date_higher - prev_date_lower).days days_between_list.append(days_between)

组装一下,把结果输出到excel中,我们就得到了下表。

好消息是2022年之后的4次都是9天内完成任务。这么看来我觉得这次收复3000点也不需要很长时间。好消息是2022年之后的4次都是9天内完成任务。这么看来我觉得这次收复3000点也不需要很长时间。

3. 数据分析

有了上面的数据之后分析就很简单了,直接用代码

df.describe()

可以得到下面的数据。

图片图片

这51次保卫战中,最短的只用了1天,一半以上的保卫战也只打了5天就结束战斗了,不过最大值有几个“显眼包”,最多是1323天,出现在2011年到2014年,此外是2008年到2009年的384天,然后2018年到19年出现过258天。画个图更直观。

图片图片

另外看到其他数据源是52次,我查了下具体数据,误差出现在2022年10月26,这天收盘是2999.5,应该是其他数据源四舍五入为了3000点,导致原本20221024到20221102这个保卫战区间被分成两段,增加了一次“莫须有”的保卫战。

图片图片

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
2评论

  • 精彩
  • 最新
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
4
扫一下,分享更方便,购买更轻松