当前位置: 首页 > news >正文

搭建自己的金融数据源和量化分析平台(一):系统架构设计

0x00 前言

由于某得的数据实在是太贵,某花顺免费版又不提供专业的数据分析工具,Tushare也开始收费,因此决定基于python和MySQL搭建一个自己的金融数据库。期望做到仅依靠交易所、巨潮资讯网等官方的公开数据实现,尽量不依靠某花顺、某财、某浪等第三方网站的金融数据。

0x01 需求分析

由于我不做量化交易,只做宏观经济分析和企业基本面分析,顺便做一点量化选股,因此现阶段的需求如下:
1.基于沪深交易所公开数据读取股票列表并存储到本地数据库,形成离线股票列表,并能定期自动化更新;
2.基于沪深交易所公开数据读取股票详细信息如总股本、流通股本、所属省份、所属行业、英文全名等数据补全股票列表的内容,并定期更新;
3.尽量基于沪深交易所公开数据读取每日开盘价、收盘价存储到本地数据库,并定期更新;
4.尽量基于沪深交易所公开数据读取上市公司财报并保存到本地,同时自动化解析pdf格式的财报,从其中提取三大报表等数据存储到本地数据库;
5.根据三大报表计算ROE、应收存货率、流动比率、速动比率、净现比等指标并存储到本地数据库;
5.提供数据和指标查询接口便于后续开发量化选股模型;
6.后续陆续增加北交所、港交所数据支持;
7.后续增加纽交所、纳斯达克交易所数据支持;
8.后续陆续基于国家统计局、人民银行公开数据增加人口、社融、Lpr、M1M2、GDP、PMI、CPI、房价等数据支持
以上数据不包含分时和高频交易数据,因为我不做量化交易。

0x02 系统架构设计

数据库选择

测算数据量:5000家上市公司,数据量最大的应该就是三大报表的数据库表,设计成每张报表一张表(若数据量再大还可以按沪深交易所拆表),拉取解析近5年的数据,则5000X5X4=单表10万条数据,因此MySQL数据库足以支撑这个数据量。
故目前设计的数据库表结构如下:
在这里插入图片描述
stock_a、stock_h、stock_u三个数据库分别代表A股、港股、美股数据库,未来还会增加economy_zh、economy_us等宏观经济数据库和中美期货、债券数据库,便于做海外宏观分析。
目前stock_h和stock_u还没做,只规划了stock_a的表结构如下:
在这里插入图片描述

系统架构设计

系统架构大致采用MVC设计模式采用Python3.8进行搭建和编写:分为爬虫模块(负责爬取沪深京港美几家市场和统计局、人民银行等机构的公开数据)、持久化模块(提供连接MySQL数据库和增删改查数据库的功能)、量化模型(调用持久化模块的数据接口进行量化分析)、控制模块(调用持久化模块和爬虫模块完成金融数据定时更新任务)和工具模块(提供pdf解析、自定义异常等通用功能),没有日志模块,我又不是做商业产品,不需要日志。
其中爬虫模块别按照交易所和爬取对象的不同分为上交所、深交所、北交所、港交所、纽交所、纳斯达克交易所、国家统计局、人民银行等爬虫。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【初阶数据结构篇】顺序表的实现(赋源码)
  • Mysql中DML的几种操作
  • 【React】详解“最新”和“最热”切换与排序
  • 实战解读:Llama Guard 3 Prompt Guard
  • 【机器学习】探索图神经网络 (GNNs): 揭秘图结构数据处理的未来
  • 软件环境安装-通过Docker安装rabbitmq
  • 在Android开发中,如何优化onCreate()和onResume()方法以提高应用性能?
  • 破局产品同质化:解锁3D交互式营销新纪元!
  • Java 使用 POI 导出Excel,实现单元格输入内容提示功能
  • LabVIEW操作系列1
  • 使用abpcli创建项目时提示数据库迁移失败
  • uniapp开发精选短视频视频小程序实战笔记20240725,实现顶部轮播图和热门短剧
  • VulnHub靶机入门篇--Kioptrix4
  • scrapy爬取城市天气数据
  • 【Golang 面试 - 进阶题】每日 3 题(一)
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • CODING 缺陷管理功能正式开始公测
  • Javascript 原型链
  • JS函数式编程 数组部分风格 ES6版
  • js如何打印object对象
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • Python 反序列化安全问题(二)
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • Spring声明式事务管理之一:五大属性分析
  • 从输入URL到页面加载发生了什么
  • 多线程 start 和 run 方法到底有什么区别?
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 前端性能优化--懒加载和预加载
  • 微信小程序填坑清单
  • 详解NodeJs流之一
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • ​ssh免密码登录设置及问题总结
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #Lua:Lua调用C++生成的DLL库
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (3)STL算法之搜索
  • (C语言)逆序输出字符串
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (论文阅读40-45)图像描述1
  • (每日一问)计算机网络:浏览器输入一个地址到跳出网页这个过程中发生了哪些事情?(废话少说版)
  • (七)Knockout 创建自定义绑定
  • (强烈推荐)移动端音视频从零到上手(下)
  • (十)Flink Table API 和 SQL 基本概念
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (五)网络优化与超参数选择--九五小庞
  • (一)项目实践-利用Appdesigner制作目标跟踪仿真软件
  • .Net(C#)自定义WinForm控件之小结篇
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .NET开源快速、强大、免费的电子表格组件
  • .net连接MySQL的方法
  • .NET实现之(自动更新)