您的位置:首页 > 编程语言 > Python开发

学会Python后,炒股我是看的明明白白,股市抄底的概率有多大?

2020-03-29 18:36 465 查看

转载自:python的爬虫与数据分析之路

原文地址: 基金抄底成功的概率有多大?python带你来分析

“抄底”指以某种估值指标衡量股价跌到最低点,尤其是短时间内大幅下跌时买入,预期股价将会很快反弹的操作策略。

拿今年的股市来说,可不畏是跌宕起伏啊,2月3日抄底的朋友肯定是赚的盆满钵满,而3月5日以后抄底的“菜菜”们心情就不那么美丽了,我就是其中的一个,总的情况可以用下图表示,心情哇凉哇凉的:

很多人都觉得抄底能赚钱,但是抄底成功的概率有多大呢?

下面带着大家从数据分析的角度寻找一下答案。

第一步:构建数据模型

用python爬取某基金网站任意10支基金数据,当天跌幅超过3%时,可判为抄底时刻,第二天涨幅大于2%时,判为抄底成功,否则判为失败,最后将所有基金的成功次数和失败次数分别相加,计算出成功概率。

第二步:python爬数据

1.打开基金网站,用浏览器自带流量分析工具找到数据接口

请求参数为:

其中callback为返回js回调函数,可以删除,funCode为基金代码,pageIndex为页码,pageSize为每页返回的数据条数是,startDate和endDate分别为开始时间和结束时间。

正常情况下应该是一页一页爬,但是我这颗躁动的心不愿安分,于是我把pageSize改为10000,代码如下

fundCode = '001618'  #基金代码
pageIndex = 1
startDate = '2018-02-22'  #起始时间
endDate = '2020-03-21'   #截止时间
header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0',
'Referer': 'http://fundf10.eastmoney.com/jjjz_{0}.html'.format(fundCode)
}
url = 'http://api.fund.eastmoney.com/f10/lsjz?fundCode={0}&pageIndex={1}&pageSize=5000&startDate={2}&endDate={3}&_=1555586870418?'\
.format(fundCode, pageIndex, startDate, endDate)
response = requests.get(url, headers=header)

输出结果为:

一下子全出来了,简直太意外了

这里有个网站的反爬措施大家需要注意一下,就是我在requests的头部信息中加入了Referer值,它会告诉服务器该网页是从哪个页面链接过来的,服务器因此可以获得一些信息用于处理,如果不加Referer,将会出错,这是一种常见的反爬措施。

用返回的数据画个业绩走势图,代码为:

minytick = (int(min(JZZZLs)/10)-1)*10
maxytick = (int(max(JZZZLs)/10)+1)*10
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
matplotlib.rcParams['axes.unicode_minus'] =False  #显示负号
plt.figure(figsize=(15, 10), dpi=80)
plt.title('基金折线图', color='y', fontweight=800, size=40)
plt.scatter(x, JZZZLs, s=50, c='r')
plt.plot(x, JZZZLs, c='b')
plt.xticks(x[::len(x)-1], FSRQs[::len(x)-1], size=20)   # x坐标
plt.ylim(minytick, maxytick)
plt.yticks(range(minytick, maxytick, 10), size=20)
plt.ylabel('%', size=50)
plt.grid(axis="y")  #生成网格'''
plt.grid(axis="x")  #生成网格'''
plt.show()

结果为:

我就在那个最高的峰值上

说多了都是泪,还是接着分析吧!

第三步:按照数学模型对1支基金开始分析数据

参照第一步的数据模型,根据当天的收益判是否该抄底,再根据第二天收益情况判定是否抄底成功,代码如下:

for i, j in enumerate(result):
# print(j)
today = 0
if j['JZZZL'] != '':
today = float(j['JZZZL'])  # 当天收益
if today < -3:
tall += 1
if float(result[i + 1]['JZZZL']) > 2:  # 大于2时视为抄底成功
tsuccess += 1
else:
tfail += 1

输出结果:

用matplotlib画出饼状图,代码如下

labels = ['成功', '失败']
sizes = [tsuccess, tfail]
explode = (0, 0)
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%', shadow=False,startangle=150)
plt.title("基金抄底成功概率")
plt.show()

饼状图结果为:

从上图可以分析,2018-02-22至2020-03-21之间,该支基金总共可以抄底22次,成功3次,失败19次,成功率为位13.6%,看起来不是很理想。

第四步:对10支基金进行分析

随便找了10支基金,还是在这个时间段,将所有基金的成功次数和失败次数分别相加,计算出成功概率

输出结果为:

画出总的饼状图:

从10支基金的总结果来看,抄底成功的概率为24.6%,失败的概率为75.4%,相当于4次抄底只有1次能成功,感觉以后不能相信抄底了。

小结:本文以基金定投为切入线进行了1次简单的数据分析,所有结果仅以学习为主,不作为投资的依据,千万要慎重,不要像我一样登高望远,山顶太冷啊

更多案例源码视频加群:850591259

 

  • 点赞
  • 收藏
  • 分享
  • 文章举报
爬遍天下无敌手 发布了2 篇原创文章 · 获赞 0 · 访问量 1917 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐