基于大数据技术对基金分析-python

提示:本文为个人原创,仅供技术探讨与交流,对实际投资并不造成建议。

基于大数据技术对基金分析-python

  • 前言
  • 一、数据获取:python爬虫
    • 1).从天天基金数据接口获取数据
    • 2).爬虫前期准备
    • 3).爬虫具体实现
  • 二、数据清洗及计算指标
    • 1.过滤数据
    • 2.数据字段格式统一
    • 3.计算得出字段now_down、all_win
    • 4.数据清洗具体实现
    • 4.保存数据库
  • 三、数据分析:SQL
    • 1.昨日涨跌幅、近一月涨跌幅、近一年涨幅、仅三年涨幅 top20 => 当前主题行情分析
    • 2.金额总值top50=> 截至2023-6-29最热门抱团方向
    • 3. 3月份后涨跌幅为“- -” => 新发基金封闭期3个月=> 当前基金机构看好的行业板块方向 => 未来抱团方向(?)
    • 4.now_down最小前20 => 数值越小,跌幅越大
    • 5.all_win =>中长期正收益,值得长期持有
  • 总结


前言

在当下热销的基金市场中,有着茫茫多的基金,本文希望能以科学的角度,以数据作为依托,更好地挑选基金
本文共用到以下技术:Python爬虫、SQL分析


本文切入角度:
1.希望做到在相对低的净值买入值得长期持有的基金并定投
2.通过已有的数据了解到当下及未来3个月市场热门的板块(抱团)
3.通过基金的表现及近期情况判断市场方向
基金是T+1交易制度,存在明显的市场时间滞后,不适合像股票一样频繁操作。

一、数据获取:python爬虫

1).从天天基金数据接口获取数据

接入天天基金数据接口(所有基金名称列表代码):http://fund.eastmoney.com/js/fundcode_search.js
部分数据截图:
在这里插入图片描述
从图中数据可以看出,js文件中的数据以列表格式存放,且按照 => (编号、拼音缩写、基金名称、基金类型、拼音 )的顺序排列,因为信息并不完善,所以还需要再爬取每个基金的详细信息

2).爬虫前期准备

通过观察,天天基金的robots规则为:
在这里插入图片描述
每个基金详情页面为
http://fund.eastmoney.com/+基金代号,如下图:
在这里插入图片描述

3).爬虫具体实现

获取唯一编号列表

import requestsdef get_req_data(url):headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0',}res = requests.get(url=url, headers=headers)res.encoding = 'utf-8'return res.textdef get_code():data = get_req_data('http://fund.eastmoney.com/js/fundcode_search.js')data_list = data.replace("var r = [", "").replace("];", "").replace("],", "];").split(";")mf_codes = []for a in data_list:mf_list = a.split(",")mf_code = mf_list[0].replace("[", "").replace("\"", "")mf_codes.append(mf_code)return mf_codes

二、数据清洗及计算指标

1.过滤数据

据观察,数据中存在已终止基金或已不更新数据的基金 仅保留:昨日涨跌幅、近一月涨跌幅、近三月涨跌幅、近六月涨跌幅、近一年涨跌幅、近三年涨跌幅%、成立以来涨跌幅 共7个字段中为 “–”(基金运作时间未久会以“–”表示,为正常)和存在“%”的数据

2.数据字段格式统一

(便于后续SQL查询)金额字段统一为:仅保留数值(以亿元为单位)

(便于后续SQL查询)统一涨幅字段:百分比 => double小数,“–” => 0.0

3.计算得出字段now_down、all_win

all_win:将3个月、半年、一年、三年、历史总涨幅为正的基金标记为1 => 从数据层面上看,该基金中长期正收益,值得长期持有并定投
now_down:将同时满足昨日涨跌幅<0,仅一月涨跌幅<0,近半年涨跌幅>0,仅一年涨跌幅>0的基金标记,并计算出昨日跌幅+ 仅一月跌幅作为参数 => 数据层面上判断:该基金长期持有为正收益且当前属于回撤调整期,属于相对低值可入手
在这里插入图片描述

4.数据清洗具体实现

def parse(codes):t = len(codes)for i in range(0, t, 1000):sqlInfo, end = [], i + 1000if end > t:end = tfor j in range(i, end):url = 'http://fund.eastmoney.com/'+str(codes[j])+'.html'response = etree.HTML(get_req_data(url))mf_name =response.xpath('//div[@class="fundDetail-tit"]/div[1]/text()')check_day = response.xpath('//dl[@class="dataItem02"]/dd[1]/span[1]/text()')if len(mf_name) == 0 or len(check_day) == 0:continuemf_name, mf_num = mf_name[0], codes[j]mf_type = response.xpath('//td[contains(text(),"基金类型")]/a/text()')[0]mf_money = check_data(response.xpath('//td[contains(text(),"亿元")]/text()')[0].replace(":", "").split("亿")[0])mf_manager = response.xpath('//td[contains(text(),"基金经理")]/a/text()')[0]mf_all = response.xpath('//div[@class="dataOfFund"]/dl[3]/dd[3]/span[2]/text()')worth, rate, day7, all_win, now_down = 0.0, 0.0, 0.0, 0, 0.0if len(mf_all) != 0:worth = check_data(check_day[0])if(worth == 0.0):continuerate = check_data(response.xpath('//dl[@class="dataItem02"]/dd[1]/span[2]/text()')[0].replace("%", "")) * 0.01mon1 = check_data(response.xpath('//div[@class="dataOfFund"]/dl[1]/dd[2]/span[2]/text()')[0].replace("%", "")) * 0.01mon3 = check_data(response.xpath('//div[@class="dataOfFund"]/dl[2]/dd[2]/span[2]/text()')[0].replace("%", "")) * 0.01mon6 = check_data(response.xpath('//div[@class="dataOfFund"]/dl[3]/dd[2]/span[2]/text()')[0].replace("%", "")) * 0.01mon12 = check_data(response.xpath('//div[@class="dataOfFund"]/dl[1]/dd[3]/span[2]/text()')[0].replace("%", "")) * 0.01mon36 = check_data(response.xpath('//div[@class="dataOfFund"]/dl[2]/dd[3]/span[2]/text()')[0].replace("%", "")) * 0.01mon_all = check_data(mf_all[0].replace("%", "")) * 0.01else:day7 = check_data(check_day[0].replace("%", "")) * 0.01mon1 = check_data(response.xpath('//div[@class="dataOfFund"]/dl[1]/dd[1]/span[2]/text()')[0].replace("%", "")) * 0.01mon3 = check_data(response.xpath('//div[@class="dataOfFund"]/dl[2]/dd[1]/span[2]/text()')[0].replace("%", "")) * 0.01mon6 = check_data(response.xpath('//div[@class="dataOfFund"]/dl[3]/dd[1]/span[2]/text()')[0].replace("%", "")) * 0.01mon12 = check_data(response.xpath('//div[@class="dataOfFund"]/dl[1]/dd[2]/span[2]/text()')[0].replace("%", "")) * 0.01mon36 = check_data(response.xpath('//div[@class="dataOfFund"]/dl[2]/dd[2]/span[2]/text()')[0].replace("%", "")) * 0.01mon_all = check_data(response.xpath('//div[@class="dataOfFund"]/dl[3]/dd[2]/span[2]/text()')[0].replace("%", "")) * 0.01# all_win:将3个月、半年、一年、三年、历史总涨幅为正的基金标记为1 => 从数据层面上看,该基金中长期正收益,值得长期持有并定投if mon3 > 0.0 and mon6 > 0.0 and mon12 > 0.0 and mon36 > 0.0 and mon_all > 0.0:all_win = 1# now_down:将同时满足昨日涨跌幅 < 0,仅一月涨跌幅 < 0,近半年涨跌幅 > 0, 仅一年涨跌幅 > 0# 的基金标记,并计算出昨日跌幅 + 仅一月跌幅作为参数 => 数据层面上判断:该基金长期持有为正收益且当前属于回撤调整期,属于相对低值可入手if rate < 0.0 and mon1 < 0.0 and mon6 > 0.0 and mon12 > 0.0 and mon36 > 0.0:now_down = (rate + mon1) * 0.01sqlInfo.append((mf_name, mf_num, mf_type, float(mf_money), mf_manager, worth, rate, day7, mon1, mon3, mon6, mon12, mon36, mon_all, all_win, now_down))print(sqlInfo[-1])insert_data(sqlInfo)def check_data(mf):if mf == "--":mf = 0.0return float(mf)

4.保存数据库

def insert_data(sqlInfo):# 批量写入数据库, 打开数据库连接conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123456', db='fund_money', charset='utf8')sql = 'INSERT INTO `fund`(mf_name, mf_num, mf_type, mf_money, mf_manager, mf_worth, mf_rate, mf_day7, mf_mon1 , mf_mon3 , mf_mon6 , mf_mon12, mf_mon36, mf_all, all_win, now_down) ' \'VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)'# 使用 cursor() 方法创建一个游标对象 cursorcursor = conn.cursor()cursor.executemany(sql, sqlInfo)conn.commit()  # 提交cursor.close()conn.close()

三、数据分析:SQL

1.昨日涨跌幅、近一月涨跌幅、近一年涨幅、仅三年涨幅 top20 => 当前主题行情分析

2.金额总值top50=> 截至2023-6-29最热门抱团方向

在这里插入图片描述

3. 3月份后涨跌幅为“- -” => 新发基金封闭期3个月=> 当前基金机构看好的行业板块方向 => 未来抱团方向(?)

4.now_down最小前20 => 数值越小,跌幅越大

SELECT * FROM `fund` ORDER BY now_down, mf_mon1 LIMIT 20;

在这里插入图片描述

5.all_win =>中长期正收益,值得长期持有

总结

完整代码
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/1616.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Bayes贝叶斯定理

问题的关键在于&#xff1a;人们是否考虑过大背景/先验/问题的前提&#xff0c;从而做出一个大致的估计。这就引出了我们关于理性的探讨&#xff0c;理性不是说知道事实&#xff0c;而是认识到哪些因素是有关的。 x.1 一个关于贝叶斯定理的例子 引入一个steve假设。我们已知大…

实战:求年月日时间前后遇到的坑和解决方式

这里写目录标题 前言正确实例&#xff1a;错误实例&#xff1a; 需求 前言 这周接到一个时间转换任务需要处理&#xff0c;本来没什么问题&#xff0c;后来完成后发现时间有偏差&#xff0c;又重写了一遍代码&#xff0c;感觉很有记录必要性&#xff0c;希望看过的小伙伴可以避…

【TCP/IP】广播 - 定义、原理及编程实现

目录 广播 广播的原理及形式 广播的编程与实现 套接字选项设置 发送者 接收者 拓展资料 广播 广播(Broadcast)是指封包在计算机网络中传输时&#xff0c;目的地址为网络中所有设备的一种传输方式。这里所说的“所有设备”也被限定在一个范围之中&#xff0c;这个范围被称…

Python读写xml(xml,lxml)Edge 浏览器插件 WebTab - 免费ChatGPT

Python读写xml&#xff08;xml&#xff0c;lxml&#xff09;Edge 浏览器插件 WebTab - 免费ChatGPT XML一、xml文件创建方法一&#xff1a;使用xml.dom.minidom1、文件、标签的创建 方法二&#xff1a;使用ElementTree 二、xml文件修改1、修改标签内容&#xff0c;属性2、增加子…

2023年数字人产业发展趋势报告:好看的皮囊到有趣的灵魂

报告来源&#xff1a;腾讯研究院 报告看点&#xff1a;随着交互智能技术的加速发展&#xff0c;数字人正在从技术创新走向产业应用。 在腾讯2022数字生态大会腾讯云智能专场上&#xff0c;腾讯研究院、腾讯云智能、创业黑马经过产业研究、实地调研&#xff0c;共同提炼发布《数…

Keras-深度学习-神经网络-人脸识别模型

目录 模型搭建 模型训练 模型搭建 ①导入所需的库&#xff0c;导入了 Keras 和其他必要的库&#xff0c;用于构建和处理图像数据。 from keras.models import Sequential from keras.layers import Dense, Flatten, Conv2D, MaxPooling2D import os from PIL import Image …

三、决策树 四、随机森林

三、决策树1.决策树模型的原理1&#xff09;什么是决策树2&#xff09;决策树模型原理3.构建决策树的目的4&#xff09;决策树的优缺点 2.决策树的典型生成算法1&#xff09;常用的特征选择有信息增益、信息增益率、基尼系数2&#xff09;基于信息增益的ID3算法3&#xff09;基…

lenovo联想Yoga 13s 2021 AMD平台ACN版(82CY)原厂预装Win11系统镜像原装OEM恢复出厂状态

LENOVO联想笔记本电脑&#xff0c;Yoga 13s 2021 AMD平台ACN版(82CY)原装出厂Windows11系统&#xff0c;恢复原厂OEM预装专用系统 系统自带所有驱动、出厂主题壁纸LOGO、Office办公软件、联想电脑管家等预装程序 所需要工具&#xff1a;16G或以上的U盘 文件格式&#xff1a;…

重生之我测阿里云U1实例(通用算力型实例)

官方福利&#xff01;&#xff01;&#xff01;&#xff01;大厂羊毛你确定不薅&#xff1f;&#xff1f;&#xff1f; 参与ECSU实例评测&#xff0c;申请免费体验机会&#xff1a;https://developer.aliyun.com/mission/review/ecsu 参与ECSU实例评测&#xff0c;申请免费体验…

详细认识二叉树【图片+代码】

目录 一、树的概念及结构 1.1树的概念 1.2树的相关概念 1.3树的表示 1.4树在实际中的应用&#xff08;目录树&#xff09; 二、二叉树概念及结构 2.1概念 2.2特殊的二叉树 2.3二叉树的性质 2.4二叉树存储结构 三、二叉树的顺序结构及实现 3.1二叉树的顺序结构 3…

初探 C++ 标准库

有趣的重载 重载左移操作符&#xff0c;将变量或常量左移到一个对象中&#xff01; C 标准库 C 标准库并不是 C 语言的一部分 C 标准库是由类库和函数库组成的集合 C 标准库中定义的类和对象都位于 std 命名空间中 C 标准库的头文件都不带 .h 后缀 C 标准库涵盖了 C 库的功…

6、多层感知机:数值稳定性和模型初始化

1、数值稳定性 考虑一个具有 L L L层、输入 x \mathbf{x} x和输出 o \mathbf{o} o的深层网络。每一层 l l l由变换 f l f_l fl​定义&#xff0c;该变换的参数为权重 W ( l ) \mathbf{W}^{(l)} W(l)&#xff0c;其隐藏变量是 h ( l ) \mathbf{h}^{(l)} h(l)&#xff08;令 h …