1.量化第一步,搭建属于自己的金融数据库!
数据是一切量化研究的前提。 做量化没有数据,就相当于做饭时没有食材。
很多时候,我们需要从大量的数据中寻找规律,并从中开发出策略。如果我们每次使用的时候,都从网上去找数据,一方面效率低下,另一方面短时间大量的数据请求也很有可能招致封禁。
因此,搭建属于自己的金融数据库,势在必行!
很多人没有经验,会不自觉地产生畏难情绪,其实这个事情远没有大家想象的那么复杂。在这一系列文章中,我会一步一步地教会大家如何搭建好属于自己的金融数据库。
这个过程中可能有些技能你从来没有接触过,比如编程。但是没关系,我之后会将过程中所有需要的代码打包提供出来,也可以提供一些咨询服务。我也在准备录制一系列视频教程,方便零基础的朋友更直观地学习每一个步骤。
接下来我先简单帮大家串一下,搭建自用金融数据库的核心步骤有哪些。
一、部署数据库服务
我们的数据需要有一个载体,就像储存水的时候需要一个容器一样。
根据老Q的经验,上手成本最低的方法主要有两类,一是用本地文件的形式来存储数据,二是使用关系型数据库来存储数据。
通过本地文件来进行大数据研究是一种效率非常低下的形式,数据的更新维护成本也相对较高,因此我比较推荐第二种。
那么部署一个关系型数据库需要什么条件呢?首先,我们需要有一台设备, 这个设备可以是你的个人电脑,可以是一台服务器,也可以是一台支持Docker服务的NAS。
这些方案都有什么优劣呢?
方案 | 优势 | 劣势 |
---|---|---|
个人电脑 | 成本较低,可以直接使用平时做量化研究的电脑来部署数据库。 | 存储空间可能受限,且因为个人电脑一般不会随时随地开机并联网,因此数据并不是随时随地可用的。 |
服务器 | 理论上云服务商的服务器甚至是数据库服务是最稳健的选择,平台稳定、工具完善。 | 成本较高,访问速度受限于自己开通的服务器带宽以及家中网络的带宽。 |
NAS | 空间大、成本低。24小时运行,只要家中不断电断网,数据随时随地可用。 | 性能一般较差,但大部分情况下也够用了。云服务商提供的数据库服务性能也就那样。 |
组合使用 | 狡兔三窟,稳健,随时可用。 | 成本高。 |
我自己的方案是组合使用,我在阿里云服务器、家中的个人服务器和NAS上都部署了数据库,并且配置了主从同步。这样的一个好处是我把同一份数据在三个地方存储了,一般来说总有一个地方可以用,同时都出问题的概率比较低。
我平时在家做投研时,主要使用家中的个人服务器,毕竟性能强劲且内网带宽基本不存在什么瓶颈问题。但是如果你是一个零基础的研究者,我建议选择个人电脑或者NAS(强烈推荐) ,两千左右就能买到一台性能还不错的支持Docker的NAS。
在选择了硬件之后,软件方面我建议大家直接选择开源免费的MySQL,群众基础好,文档资源丰富,搭建过程比较简单。
之后的章节里,我会手把手教大家如何在不同的设备上部署数据库服务。
二、找到可用的数据源
我罗列了一些常用的数据源,大家可以根据自己的实际情况来进行选择。我自己是以tushare和爬虫抓取为主、理杏仁为辅。在之后的章节里我会详细演示如何从这些平台获取数据。
数据源 | 获取方式 | 费用 | 难度 | 维护成本 |
---|---|---|---|---|
券商网站 | 爬虫 | 免费 | 高 | 高 |
财经网站 | 爬虫 | 免费 | 高 | 高 |
tushare | 接口调用 | 较低 | 较低 | 较低 |
理杏仁 | 接口调用 | 适中 | 较低 | 较低 |
量化平台 掘金/聚宽/米筐/优矿…… | 接口调用 | 一般平台内使用免费,本地获取收费(昂贵)。 (掘金量化可以本地免费使用,但支持的数据有限。) | 较低 | 较低 |
财经数据库 Wind/iFind/iChoice | 接口调用 金融终端下载 | 昂贵 | 较低 | 较低 |
量化交易工具 QMT/Ptrade | 接口调用 终端内使用 | 券商开户免费,有门槛 | 较低 | 较低 |
官方统计网站 | 爬虫/下载 | 免费 | 低 | 较低 |
三、创建数据库和数据表
对于初学者来说,想要数据库好用,最核心的地方就是设计好表结构和索引。
比如我们可能会有多个数据库分别存放股票、指数、外汇等资产相关的数据,同时在一个数据库下,我们还会在不同表里存储行情、财务、基本资料、技术指标等数据。
一般来说,我们为了提高数据的使用效率,会把常常一起使用且主键一致的数据放到一张表里,不常一起使用的数据则分开存放,避免冗余的存储和扫描。
这些技术细节还是等后续我们讲到的时候再展开聊,大家看不懂也没关系,我会直接提供好这些常用数据表的创建语句。
四、写入数据并定期更新
比较理想的情况是在最开始一次性灌入历史所有数据,然后再每天定时更新最新的数据。这种情况需要你有一台电脑能部署一些脚本。
不会编程的朋友也不必发愁,这些我都会逐一讲到,也会将全部脚本打包提供,到时候大家就按照老Q的教程配置好就行。
做完上述这些步骤以后,你就有了属于自己的好用的金融数据库了,接下来就可以愉快地玩耍了!关注后续更新,老Q手把手带你完成量化研究的准备工作!
相关文章:

1.量化第一步,搭建属于自己的金融数据库!
数据是一切量化研究的前提。 做量化没有数据,就相当于做饭时没有食材。 很多时候,我们需要从大量的数据中寻找规律,并从中开发出策略。如果我们每次使用的时候,都从网上去找数据,一方面效率低下,另一方面短…...

git-repo系列教程(6) 在自己服务器上搭建git-repo仓库
为什么要在自己的服务器上搭建git-repo仓库呢? 因为 清华大学开源软件镜像站 有时会更新同步git repo,导致不能使用.可能在局域网不能访问外网,无法下载镜像站上的git-repo仓库完全版. 操作步骤 1.获取git-repo仓库 需要先下载完全的仓库 cd .repo/repo/ #获取镜像站上的…...

微服务——服务保护(Sentinel)(一)
1.雪崩问题 级联失败或雪崩问题指的是在微服务架构中,由于服务间的相互依赖和调用,当一个服务出现故障时,会引起调用它的服务也出现故障,进而引发整个调用链路的多个服务都出现故障,最终导致整个系统崩溃的现象。 产生…...

jenkins声明式流水线语法详解
最基本的语法包含 pipeline:所有有效的声明式流水线必须包含在一个 pipeline 块中stages:包含一系列一个或多个stage指令stage:stage包含在stages中进行,比如某个阶段steps:在阶段中具体得执行操作,一个或…...

mini-lsm通关笔记Week2Overview
Week 2 Overview: Compaction and Persistence 在上周,您已经实现了LSM存储引擎的所有必要结构,并且您的存储引擎已经支持读写接口。在本周中,我们将深入探讨SST文件的磁盘组织,并研究在系统中实现性能和成本效益的最佳方法。我们…...

基于SpringBoot的在线点餐系统【附源码】
基于SpringBoot的高校社团管理系统(源码L文说明文档) 4 系统设计 4.1 系统概述 网上点餐系统的结构图4-1所示: 图4-1 系统结构 模块包括主界面,首页、个人中心、用户管理、美食店管理、美食分类管理、美食…...

生成式语言模型底层技术面试
在准备生成式语言模型的底层技术面试时,可以关注以下几个关键领域: 1. 模型架构 Transformer架构:了解自注意力机制、编码器-解码器结构,以及如何处理序列数据。预训练与微调:解释预训练和微调的过程,如何…...

HTML开发指南
目录 一、HTML基础1. HTML简介(1)标记语言(2)结构化文档(3)标签与属性(4)注释(5)版本演变 2. HTML文档结构(1)文档类型声明࿰…...

共筑数据安全防线!YashanDB与SPU完成兼容性互认证
近日,深圳计算科学研究院崖山数据库系统YashanDB与深圳市机密计算科技有限公司SPU机密计算协处理器顺利完成兼容性互认证。测试结果表明,双方产品完全兼容,稳定运行,能为用户提供全链路的数据安全管理解决方案,助力央国…...

【FastAPI】使用FastAPI和Redis实现实时通知(SSE)
在当今快速发展的Web应用程序中,实时通知已成为用户体验的重要组成部分。无论是社交媒体更新、消息通知,还是系统状态提醒,实时数据推送可以极大地提升用户互动性。本文将详细介绍如何使用FastAPI和Redis实现Server-Sent Events (SSE) 来推送…...

Keyence_PL_MC_HslCommunication import MelsecMcNet
import tkinter as tk from tkinter import messagebox from datetime import datetime from HslCommunication import MelsecMcNet, OperateResult def 创建_plc_应用程序(): class 应用程序(tk.Tk): def __init__(self): super().__init__() …...

软件架构的演变与趋势(软件架构演变的阶段、综合案例分析:在线电商平台架构演变、开发补充)
随着软件开发技术的不断进步,软件架构从最初的简单结构演变为如今的复杂系统,架构设计不再是简单的代码组合,而是战略性的系统设计,确保系统具备可扩展性、可靠性、安全性和可维护性。 文章目录 1. 软件架构演变的阶段1.1 单体架…...

Shopify独立站运营必知必会:选品与防封技巧
独立站和第三方平台是目前最常见的跨境电商销售模式,相比于第三方平台,独立站的商家可以自己建站,自行决定运营模式和营销手段等策略,尤其是在准入门槛上,难度会更低,这些特点吸引了不少商家选择独立站开店…...

Unity开发绘画板——03.简单的实现绘制功能
从本篇文章开始,将带着大家一起写代码,我不会直接贴出成品代码,而是会把写代码的历程以及遇到的问题、如何解决这些问题都记录在文章里面,当然,同一个问题的解决方案可能会有很多,甚至有更好更高效的方式是…...

R语言的基础知识R语言函数总结
R语言与数据挖掘:公式;数据;方法 R语言特征 对大小写敏感通常,数字,字母,. 和 _都是允许的(在一些国家还包括重音字母)。不过,一个命名必须以 . 或者字母开头,并且如果以 . 开头&…...

龙年国庆专属姓氏头像
关注▲洋洋科创星球▲一起成长! 2024年,我们迎来了龙年,龙年国庆姓氏头像! 慢慢找! 你的和你朋友的都有。 01赵 02 钱 03 孙 04 李 05 周 06 吴 07 郑 08 王 09 冯 010 陈 011 褚 012 卫 013 蒋 014 沈 015 韩 姓氏…...

基于Es和智普AI实现的语义检索
1、什么是语义检索 语义检索是一种利用自然语言处理(NLP)和人工智能(AI)技术来理解搜索查询的语义,以提供更准确和相关搜索结果的搜索技术,语义检索是一项突破性的技术,旨在通过深入理解单词和…...

URI和URL的区别
1: 将 URI 转换为 URL import java.net.URI; import java.net.URL;public class UriToUrlExample {public static void main(String[] args) {// 创建一个 URI 对象URI uri = new URI("http://example.com/path/to/resource");// 将 URI 转换为 URLtry {URL url = u…...

Java 入门指南:获取对象的内存地址
文章目录 hashCode()应用重写 hashCode() 方法示例 Symstem . indentityHashCode()应用 注意事项 在 Java 开发中,了解对象的内存管理是十分重要的,尽管 Java 的设计初衷是让开发者更专注于业务逻辑而非底层资源管理。但在某些情况下,了解对象…...

【Linux】项目自动化构建工具-make/Makefile 详解
🔥 个人主页:大耳朵土土垚 🔥 所属专栏:Linux系统编程 这里将会不定期更新有关Linux的内容,欢迎大家点赞,收藏,评论🥳🥳🎉🎉🎉 文章目…...

嵌入式开发中学习C++的用处?
这个问题一直有同学在问,其实从我的角度是一定是需要学的,最直接的就是你面试大厂的嵌入式岗位或者相关岗位,最后一定会问c,而很多人是不会的,这就是最大的用处,至于从技术角度考量倒是其次,因为…...

基于SAM大模型的遥感影像分割工具,用于创建交互式标注、识别地物的能力,可利用Flask进行封装作为Web后台服务
如有帮助,支持一下(GitHub - Lvbta/ImageSegmentationTool-SAM: An interactive annotation case developed based on SAM for remote sensing image annotation, which can generate corresponding segmentation results based on point, multi-point, …...

Selenium入门
Selenium 是一个用于自动化 web 应用程序测试的工具,它支持多种浏览器和编程语言。 下载驱动程序:根据你的浏览器类型和版本,下载相应的 WebDriver。例如,Chrome 浏览器需要 ChromeDriver。 安装 Selenium 库 pip install sele…...

USB 3.1 Micro-A 与 Micro-B 插头,Micro-AB 与 Micro-B 插座,及其引脚定义
连接器配对 下表列出 USB 插座可接受的插头: USB 3.1 Micro-B 连接器 USB 3.1 Micro-B 插头和 USB 3.1 Micro-B 插座连接器是为小型手持设备和其他可能使用小尺寸连接器的应用而定义的。其定义使得 USB 3.1 Micro-B 插座既可以接受 USB 3.1 Micro-B 插头ÿ…...

MySQL多版本并发控制MVCC实现原理
MVCC MVCC 是多版本并发控制方法,用来解决读和写之间的冲突,比如脏读、不可重复读问题,MVCC主要针对读操作做限制,保证每次读取到的数据都是本次读取之前的已经提交事务所修改的。 概述 当一个事务要对数据库中的数据进行selec…...

【并查集】[ABC372E] K-th Largest Connected Components 题解
题意 前置阅读:并查集算法介绍 洛谷链接 Atcoder 链接 给定 n ( 1 ≤ n ≤ 2 1 0 5 ) n(1 \leq n \leq 2\times 10^5) n(1≤n≤2105) 个点,初始没有边,您要进行以下操作: 1 a b,表示连接一条 ( a , b ) (a,b) …...

HarmonyOS面试题(持续更新中)
1、用过线程通信吗,线程是怎么进行通信的? emitter 和 eventHub 相同: 都是基于事件总线的 区别是: ① eventHub当前线程内通信 ② emitter是同一进程不同线程或者同一进程和同一线程也可以通信 2、页面和组件的生命周期 …...

QT中QWidget和QObject的区别与联系是什么
在Qt框架中,QWidget和QObject是两个核心类,它们各自扮演着不同的角色,但又紧密相连。以下是关于它们区别与联系的详细解释: 区别 基类和功能定位: QObject是Qt中所有类的基类,包括几乎所有的Qt对象。它提供…...

解决macOS安装redis以后不支持远程链接的问题
参考文档:https://blog.csdn.net/qq_37703224/article/details/142542179?spm1001.2014.3001.5501 安装的时候有个提示, 使用指定配置启动: /opt/homebrew/opt/redis/bin/redis-server /opt/homebrew/etc/redis.conf那么我们可以尝试修改这个配置文件: code /opt/homebrew/…...

2024年研究生数学建模“华为杯”E题——肘部法则、k-means聚类、目标检测(python)、ARIMA、逻辑回归、混淆矩阵(附:目标检测代码)
文章目录 一、情况介绍二、思路情况二、代码展示三、感受 一、情况介绍 前几天也是参加了研究生数学建模竞赛(也就是华为杯),也是和本校的两个数学学院的朋友在网上组的队伍。昨天(9.25)通宵干完论文(一条…...