都说股市有风险,追涨抄底,我们成功了多少次?

小白入驻CSDN,从年初开始学习Python,越学习越觉得Python的强大。想把自己的学习历程记录下来,就从这一篇开始吧!冲!

都说股市有风险,追涨抄底,我们成功了多少次?

1.背景
抄底、追涨,两种股市中常见的搏短期收益的方式,总是让人又爱又恨。下图生动的体现了大多数人的经历,抄底却永不见底。不不说,我之前也会在A股大跌后抄底,但是收效甚微,甚至亏损。这就让我反思起来,抄底,或者追涨,成功率有多少?
抄底的现实
2.准备工作和假设
2.1 本文使用Python3.8.2,引入requests和json来进行分析。
2.2 本文的数据来源于东方财富网的基金数据,为了使结果有参考性和代表性,我使用了博时沪深300指数A(050002)来作为标的。
2.3

3.数据收集
3.1 东方财富网有反爬措施,因此设置了header。
3.2 url中,fundCode为基金代码,pageSize为一页显示的数据条数,默认为20条。为了收集更多数据,我设置了5000条。startDate和endDate分别为起始日期和结束日期。

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_050002.html'#.format(fundCode)
}
url = 'http://api.fund.eastmoney.com/f10/lsjz?fundCode=050002&pageIndex=1&pageSize=5000&startDate=2012-04-01&endDate=2020-04-24&_=1588218413927'
response = requests.get(url, headers=header)
# print(response) 返回200,可以使用
html_text = response.text
data = json.loads(html_text)

3.3 得到的数据格式如下:

{'FSRQ': '2015-07-17', 'DWJZ': '1.2828', 'LJJZ': '3.2628', 'SDATE': None, 'ACTUALSYI': '', 'NAVTYPE': '1', 'JZZZL': '3.75', 'SGZT': '开放申购', 'SHZT': '开放赎回', 'FHFCZ': '', 'FHFCBZ': '', 'DTYPE': None, 'FHSP': ''}

3.4 通过关键字提取需要的数据累计净值,并放在list中,一共获得了1966条数据。
3.5 创建变量来记录抄底次数tall,成功次数twin,失败次数tfail,并通过循环进行判断每一次抄底是否成功。判断标准是:前一天基金跌幅达到一定程度(从-1%到-9%),就抄底,如果第二天收涨1%,则视为成功。 将结果放置于列表test中。
3.6 追涨的判断类似。

list = []
for day_data in data['Data']['LSJZList'][::-1]: # 倒着取数据,从最早的日期开始
    # date = day_data['FSRQ'] # 日期
    # value = day_data['DWJZ'] # 单位净值
    rate = day_data['JZZZL'] # 累计净值
    try: # 净值默认为str,需要转换,有的数据会报错,因此使用了try-except
        rate = float(rate) 
    except:
        continue
    list.append(rate)
length = (len(list)) # 返回1966
test = [['下跌幅度','抄底次数','抄底成功次数','抄底失败次数','成功率']]
for x in range(-1,-10,-1):
    today = 0
    tall = 0
    twin = 0
    tfail = 0
    while(today < length - 1):
        if(list[today] < x):
            tall += 1
            if(list[today + 1] > 1):
                twin += 1
            else:
                tfail += 1
        if(tall == 0):
            winrate_str = "0%"
        else:
            winrate = round(twin/tall,4)
            winrate_str = str(winrate)[2:4]+'%'
        fluc = str(x)+'%'
        today += 1
    test.append([fluc,tall,twin,tfail,winrate_str])
test1 = [['上涨幅度','追涨次数','追涨成功次数','追涨失败次数','成功率']]
for x in range(1,10):
    today = 0
    tall = 0
    twin = 0
    tfail = 0
    while(today < length - 1):
        if(list[today] > x):
            tall += 1
            if(list[today + 1] > 1):
                twin += 1
            else:
                tfail += 1
        if(tall == 0):
            winrate_str = "0%"
        else:
            winrate = round(twin/tall,4)
            winrate_str = str(winrate)[2:4]+'%'
        fluc = str(x)+'%'
        today += 1
    test1.append([fluc,tall,twin,tfail,winrate_str])

3.7 通过循环遍历test和test1,结果如下:

for i in test: # 抄底
    for ii in i:
        print(ii,end = ' ')
    print()
for i in test1: # 追涨
    for ii in i:
        print(ii,end = ' ')
    print()
   ———————————————————————————————————————————————————————————————————————————————————————
	下跌幅度 抄底次数 抄底成功次数 抄底失败次数 成功率 
	-1% 291 68 223 23% 
	-2% 101 30 71 29%
	-3% 47 18 29 38%
	-4% 25 12 13 48%
	-5% 18 8 10 44%
	-6% 14 6 8 42%
	-7% 6 2 4 33%
	-8% 2 0 2 0%
	-9% 0 0 0 0%
	
	上涨幅度 追涨次数 追涨成功次数 追涨失败次数 成功率
	1% 349 75 274 21%
	2% 137 35 102 25%
	3% 45 10 35 22%
	4% 16 5 11 31%
	5% 6 3 3 5%
	6% 3 2 1 66%
	7% 0 0 0 0%
	8% 0 0 0 0%
	9% 0 0 0 0%

4.结论
4.1 抄底

  • 在跌幅为-4%到-6%的范围内,抄底成功率较高,但都未超过50%。
  • 跌幅小于3%(绝对值)时,成功率较低,可以理解为正常震荡范围。
  • 跌幅大于6%(绝对值)时,成功率也很低,因为出现这种较大跌幅的情况,一般都是有大利空,一时半会不会止跌。

4.2 追涨

  • 惨不忍睹。
  • 虽然涨幅到6%的时候,有较高成功率,但是样本较少,参考价值不大。

4.3 可能还是定投好一点吧,股市有收益就有相应的风险啊…

参考文章:
[1] 基金抄底成功的概率有多大?python带你来分析 https://mp.weixin.qq.com/s/POGmQTni4lVqMTuYWhH6ZA

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值