写点什么

基金这么赚钱!!编程实现基金从采集到分析通用模板!(白酒为例)

发布于: 1 小时前

一、简介

玩过几个月的基金,所以今天闲着没事看能不能编程实现-从采集基金数据然后进行分析


这里以白酒为例,相信玩过基金的人都知道,白酒这个基金上过几次热搜,在基金排行榜也是无人不知,所以选择了白酒为例(最重要的是 2021-1-25,白酒涨幅了 6.35%,这个是什么概念!!就是你买一百元就赚 6.35 元)。


废话有点多,开始下一步。

二、采集基金

分析

首先是页面,这里选择了蛋卷基金网页去采集数据


https://danjuanapp.com/funding/161725?channel=1300100141
复制代码


其中白酒基金的代号是:161725


通过 F12 查看数据包可以发现,这里网页是通过异步加载数据,那接下就好办了




可知访问链接是


https://danjuanapp.com/djapi/fund/nav/history/161725?size=200&page=1
复制代码



放到浏览器访问,可以返回 json 数据,同时我们也发现,通过改变代号 161725,size,可以获取不同基金的最新多少条数据

编程

首先通过 requests 请求数据,code 是对应的基金代号,这里 161725 是白酒基金,size 是对应的数据量


code = 161725size = 365url = "https://danjuanapp.com/djapi/fund/nav/history/"+str(code)+"?size="+str(size)+"&page=1"  headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0',          }res = requests.get(url, headers=headers)res.encoding = 'utf-8's = json.loads(res.text)
复制代码


获取到数据后。按从以前到现在(倒叙)打印,并且按月分开


s = s['data']['items']f = ((s[len(s)-1]['date']).split("-"))[1]  for j in range(len(s)-1,-1,-1):    i = s[j]    m = (i['date'].split("-"))    if m[1] == f:        try:            date = i['date']            percentage = i['percentage']            value = i['value']            print("date=" + str(date) + ",percentage=" + str(percentage) + ",value=" + str(value))        except:            pass    else:        f = m[1]        try:            date = i['date']            percentage = i['percentage']            value = i['value']            print("date=" + str(date) + ",percentage=" + str(percentage) + ",value=" + str(value))        except:            pass        print("---------------")
复制代码


结果如下:


三、可视化分析

1.月初和月末对比

def analysis1(x,y1,y2):    myfont = font_manager.FontProperties(fname="C:\\Windows\\Fonts\\simhei.ttf")    a=x    b_14=y1    b_15=y2      bar_width = 0.25    x_14 = list(range(len(a)))    x_15 = list(i + bar_width for i in x_14)      # 设置图形大小    plt.figure(figsize=(20, 8), dpi=80)    plt.bar(range(len(a)), b_14, width=bar_width, label="月初")    plt.bar(x_15, b_15, width=bar_width, label="月末")      # 设置图例    plt.legend(prop=myfont)    #    plt.xlabel("月份",fontproperties=myfont)    plt.ylabel("值",fontproperties=myfont)    # 设置x轴刻度    plt.xticks(x_15, a, fontproperties=myfont)    plt.savefig("./mutiy.png")    plt.show()
复制代码


效果图 1



分析:


通过上面的条形图可知,最近几个月的月末值都大于月初值,说明这几个月都是属于盈利状态,尤其是 2020-12 月,盈利最大。而 2020-8 月是亏损最大的,从整体上来看,整年的月份整合下来,整体还是盈利的。

2.当月最高涨和最低跌

###2.当月最高涨、最低跌def analysis2(x,y1,y2):    myfont = font_manager.FontProperties(fname="C:\\Windows\\Fonts\\simhei.ttf")    a=x    b_14=y1    b_15=y2      bar_width = 0.25    x_14 = list(range(len(a)))    x_15 = list(i + bar_width for i in x_14)      # 设置图形大小    plt.figure(figsize=(20, 8), dpi=80)    plt.bar(range(len(a)), b_14, width=bar_width, label="当月最高涨")    plt.bar(x_15, b_15, width=bar_width, label="当月最低跌")      # 设置图例    plt.legend(prop=myfont)    #    plt.xlabel("月份",fontproperties=myfont)    plt.ylabel("值",fontproperties=myfont)    # 设置x轴刻度    plt.xticks(x_15, a, fontproperties=myfont)    plt.savefig("./mutiy.png")    plt.show()
复制代码


效果图 2



分析:


其中的蓝线是当月涨最高的一次,橙色是当月跌最多的一次。在 2020-7 月跌的最狠,10 月和 12 月涨的也是较多。

3.当月波动值(最高涨和最低跌之差)

###3.当月波动值(最高涨、最低跌之差)def analysis3(x,y1,y2):    myfont = font_manager.FontProperties(fname="C:\\Windows\\Fonts\\simhei.ttf")    a=x    y=[]    for i in range(0,len(y1)):        y.append(float(y1[i]-y2[i]))    # 设置图形大小    plt.figure(figsize=(20, 8), dpi=80)    plt.plot(a,y, label="波动差值")      # 设置图例    plt.legend(prop=myfont)    plt.xlabel("月份", fontproperties=myfont)    plt.ylabel("值", fontproperties=myfont)    plt.savefig("./mutiy.png")    plt.show()
复制代码


效果图 3



分析:


图中显示是当月的最高涨和最低跌之差,这里采用这些图,效果更佳明显。2019-7 月是波动最小的一个月,2020-7 月是波动最大的一个月,都是 7 月,哈哈哈,真巧。


4.月差值(月末减月初,该月是否盈亏)
复制代码


###4.月差值(月末减月初,该月是否盈亏)def analysis4(x,y):    myfont = font_manager.FontProperties(fname="C:\\Windows\\Fonts\\simhei.ttf")      # 设置图形大小    plt.figure(figsize=(20, 8), dpi=80)    plt.plot(x,y, label="月末-月初")      # 设置图例    plt.legend(prop=myfont)    plt.xlabel("月份", fontproperties=myfont)    plt.ylabel("值", fontproperties=myfont)    plt.savefig("./mutiy.png")    plt.show()
复制代码


效果图 4



分析:


当月的值大于 0 表示该月是盈利,小于 0 表示亏损。通过折线图来看,多数月份的值大于 0,尤其是最近的几个月,更是远大于 0。


好了,就分析这些吧,要去吃饭了,下次再说(偷懒!)

4、总结

  1. 以上的分析是以白酒为例(代号 161725),通过改变代号可以通用分析其他的基金。

  2. 通过改变 size 可以分析几个月,近一年,近几年的基金数据。

发布于: 1 小时前阅读数: 2
用户头像

个人公众号:Python研究者 2021.04.26 加入

教你如何学Python,专注于Python入门与进阶、爬虫、数据分析挖掘、数据可视化。分享Python相关的技术文章、工具资源、视频教程、学习资料。

评论

发布
暂无评论
基金这么赚钱!!编程实现基金从采集到分析通用模板!(白酒为例)