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

【Python量化金融实战】-第2章:金融市场数据获取与处理:2.1 数据源概览:Tushare、AkShare、Baostock、通联数据(DataAPI)

本章将详细介绍四大主流金融数据源(Tushare、AkShare、Baostock、通联数据(DataAPI)),分析其特点与适用场景,并通过实战案例展示数据获取与处理的全流程。

👉 点击关注不迷路
👉 点击关注不迷路
👉 点击关注不迷路


文章大纲

      • 2.1.1 Tushare
      • 2.1.2 AkShare
      • 2.1.3 Baostock
      • 2.1.4 通联数据(Data API)
      • 2.1.5 选择建议与注意事项
      • 2.1.6 常见问题解决方案


2.1.1 Tushare

Tushare 是国内最知名的开源金融数据接口之一,提供股票、期货、基金、外汇、数字货币等多种数据。其特点包括:

  • 高频数据:提供Level2行情、资金流向等特色数据

  • 数据覆盖广:支持A股、港股、美股的历史行情、财务数据、市场新闻等。

  • 易用性高:返回数据格式为Pandas DataFrame,便于直接分析与可视化。

  • 免费与付费结合:基础数据(如日线行情)免费,但部分高频数据需通过积分或付费获取。

  • 实战案例:获取A股行情与资金流分析
    在这里插入图片描述

  • 运行效果展示:
    在这里插入图片描述


2.1.2 AkShare

AkShare 是完全开源且免费的金融数据接口库,数据源涵盖东方财富、新浪财经等多个平台,特点包括:

  • 多维度数据:提供股票、期货、期权、宏观经济、区块链等数据,支持实时和历史行情。

  • 社区活跃:通过官方微信群和文档持续更新,适合需要灵活爬取数据的用户。

  • 局限性:部分高频数据(如分钟级)获取有限,需结合其他工具补充。
    示例代码:

    import akshare as ak
    import pandas as pd
    import matplotlib.pyplot as plt
    import seaborn as sns# 获取 A 股日线数据,以平安银行(000001.SZ)为例
    stock_daily = ak.stock_zh_a_daily(symbol="sz000001", start_date="20230101", end_date="20231231", adjust="qfq")# 数据统计:计算收盘价的均值、最大值和最小值
    close_stats = stock_daily['close'].describe()[['mean', 'max', 'min']]
    print("收盘价统计信息:")
    print(close_stats)# 可视化:绘制收盘价折线图
    plt.figure(figsize=(12, 6))
    plt.plot(stock_daily['date'], stock_daily['close'], label='Close Price')
    plt.title('Ping An Bank Daily Close Price in 2023')
    plt.xlabel('Date')
    plt.ylabel('Close Price')
    plt.legend()
    plt.xticks(rotation=45)
    plt.show()# 可视化:绘制收盘价的箱线图
    plt.figure(figsize=(8, 6))
    sns.boxplot(y=stock_daily['close'])
    plt.title('Box Plot of Ping An Bank Daily Close Price in 2023')
    plt.ylabel('Close Price')
    plt.show()
    

2.1.3 Baostock

Baostock 是一个专注于国内证券数据的开源平台,无需注册即可使用,特点包括:

  • 分钟级数据:免费提供股票、指数的分钟线数据,适合高频策略研究。
  • 数据质量高:数据经过清洗和标准化,可直接用于回测和建模。
  • 接口简洁:支持Python直接调用,返回结构清晰的DataFrame。

示例代码:

import baostock as bs
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns# 登陆系统
lg = bs.login()
# 显示登陆返回信息
print('login respond error_code:'+ lg.error_code)
print('login respond  error_msg:'+ lg.error_msg)# 获取沪深 300 指数成份股
rs = bs.query_hs300_stocks()
hs300_stocks = []
while (rs.error_code == '0') & rs.next():# 获取一条记录,将记录合并在一起hs300_stocks.append(rs.get_row_data())
hs300_df = pd.DataFrame(hs300_stocks, columns=rs.fields)# 选择其中一只股票,如中国平安(601318.SH)
stock_code = 'sh.601318'
start_date = '2023-01-01'
end_date = '2023-12-31'# 获取股票历史 K 线数据
rs = bs.query_history_k_data_plus(stock_code,"date,code,open,high,low,close,preclose,volume,amount,adjustflag,turn,tradestatus,pctChg,isST",start_date=start_date, end_date=end_date,frequency="d", adjustflag="3")
data_list = []
while (rs.error_code == '0') & rs.next():# 获取一条记录,将记录合并在一起data_list.append(rs.get_row_data())
df = pd.DataFrame(data_list, columns=rs.fields)# 数据类型转换
df['date'] = pd.to_datetime(df['date'])
df[['open', 'high', 'low', 'close', 'preclose', 'volume', 'amount', 'turn', 'pctChg']] = df[['open', 'high', 'low', 'close', 'preclose', 'volume', 'amount', 'turn', 'pctChg']].astype(float)# 数据统计:计算收盘价的均值、最大值、最小值
close_stats = df['close'].describe()[['mean', 'max', 'min']]
print("收盘价统计信息:")
print(close_stats)# 可视化:绘制收盘价折线图
plt.figure(figsize=(12, 6))
plt.plot(df['date'], df['close'], label='Close Price')
plt.title('Ping An Bank Daily Close Price in 2023')
plt.xlabel('Date')
plt.ylabel('Close Price')
plt.legend()
plt.xticks(rotation=45)
plt.show()# 可视化:绘制收盘价的箱线图
plt.figure(figsize=(8, 6))
sns.boxplot(y=df['close'])
plt.title('Box Plot of Ping An Bank Daily Close Price in 2023')
plt.ylabel('Close Price')
plt.show()# 可视化:绘制成交量柱状图
plt.figure(figsize=(12, 6))
plt.bar(df['date'], df['volume'], label='Volume')
plt.title('Ping An Bank Daily Volume in 2023')
plt.xlabel('Date')
plt.ylabel('Volume')
plt.legend()
plt.xticks(rotation=45)
plt.show()# 可视化:绘制收盘价和成交量的散点图
plt.figure(figsize=(8, 6))
sns.scatterplot(x=df['close'], y=df['volume'])
plt.title('Scatter Plot of Ping An Bank Close Price and Volume')
plt.xlabel('Close Price')
plt.ylabel('Volume')
plt.show()# 登出系统
bs.logout()

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.1.4 通联数据(Data API)

通联数据通过优矿(UQER)等平台提供API接口,特点包括:

  • 专业级数据:涵盖股票、因子、财报、行业大数据等,适合深度量化研究。
  • 免费与开放:注册优矿账号后可免费获取大部分基础数据,部分高频数据需企业合作。
  • 集成工具链:支持数据清洗、合并、标准化等操作,可直接在Notebook中分析。

示例代码(优矿平台):

import datapipe
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns# 替换为你自己的 API Token
token = "your_api_token"
client = datapipe.DatapipeClient(token)# 获取某只股票(如 000001.SZ 平安银行)在指定日期范围的日线数据
symbol = "000001.SZ"
start_date = "2023-01-01"
end_date = "2023-12-31"try:df = client.get_historical_bars(symbol, start_date=start_date, end_date=end_date)print("成功获取股票日线数据:")print(df.head())
except Exception as e:print(f"获取数据时出错:{e}")# 计算收盘价的基本统计信息
close_stats = df['close'].describe()
print("收盘价的基本统计信息:")
print(close_stats)# 计算成交量的总和与平均值
volume_sum = df['volume'].sum()
volume_mean = df['volume'].mean()
print(f"成交量总和: {volume_sum}")
print(f"成交量平均值: {volume_mean}")# 设置图片清晰度
plt.rcParams['figure.dpi'] = 300# 绘制收盘价折线图
plt.figure(figsize=(12, 6))
plt.plot(df['date'], df['close'], label='Close Price')
plt.title(f'{symbol} 收盘价走势 ({start_date} - {end_date})')
plt.xlabel('日期')
plt.ylabel('收盘价')
plt.legend()
plt.xticks(rotation=45)
plt.show()# 绘制成交量柱状图
plt.figure(figsize=(12, 6))
plt.bar(df['date'], df['volume'], label='Volume')
plt.title(f'{symbol} 成交量走势 ({start_date} - {end_date})')
plt.xlabel('日期')
plt.ylabel('成交量')
plt.legend()
plt.xticks(rotation=45)
plt.show()# 绘制收盘价的箱线图
plt.figure(figsize=(8, 6))
sns.boxplot(y=df['close'])
plt.title(f'{symbol} 收盘价箱线图')
plt.ylabel('收盘价')
plt.show()# 绘制收盘价和成交量的散点图
plt.figure(figsize=(8, 6))
sns.scatterplot(x=df['close'], y=df['volume'])
plt.title(f'{symbol} 收盘价与成交量散点图')
plt.xlabel('收盘价')
plt.ylabel('成交量')
plt.show()

2.1.5 选择建议与注意事项

  • 1. 免费性与适用场景:
    • TushareAkShare适合基础研究,Baostock 适合高频数据需求,通联数据适合专业因子分析。
  • 2. 数据更新与稳定性:
    • TushareAkShare 依赖社区维护,可能存在接口变动风险;Baostock 和通联数据由官方维护,稳定性更高。
  • 3. 合规与限制:
    • 部分接口(如Tushare)需遵守数据调用频率限制,避免因超额请求被封禁。

2.1.6 常见问题解决方案

  • API限制报错:
    • 使用time.sleep(60)在循环中增加延迟
    • 升级付费套餐或切换备用API密钥
  • 时区不一致:
      # 统一为北京时间
    data = data.tz_localize('UTC').tz_convert('Asia/Shanghai')
    
  • 中文乱码处理:
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置中文字体
    plt.rcParams['axes.unicode_minus'] = False    # 解决负号显示问题
    

  • 学习路径建议
      1. 新手阶段:从Yahoo Finance开始练习基础数据处理
      1. 进阶阶段:通过Alpha Vantage学习实时数据接口调用
      1. 专业阶段:使用Tushare+Quandl构建A股多因子模型
      1. 高阶应用:结合多源数据进行宏观经济与市场的联动分析

通过灵活运用不同数据源,开发者可以构建覆盖全球市场的量化分析系统。实际应用中需特别注意数据授权协议与更新频率,确保策略的合规性与时效性。

相关文章:

【Python量化金融实战】-第2章:金融市场数据获取与处理:2.1 数据源概览:Tushare、AkShare、Baostock、通联数据(DataAPI)

本章将详细介绍四大主流金融数据源(Tushare、AkShare、Baostock、通联数据(DataAPI)),分析其特点与适用场景,并通过实战案例展示数据获取与处理的全流程。 👉 点击关注不迷路 👉 点击…...

Exoplayer(MediaX)实现音频变调和变速播放

在K歌或录音类应用中变调是个常见需求,比如需要播出萝莉音/大叔音等。变速播放在影视播放类应用中普遍存在,在传统播放器Mediaplayer中这两个功能都比较难以实现,特别在低版本SDK中,而Exoplayer作为google官方推出的Mediaplayer替…...

服务器间迁移conda环境

注意:可使用迁移miniconda文件 or 迁移yaml文件两种方式,推荐前者,基本无bug! 一、迁移miniconda文件: 拷贝旧机器的miniconda文件文件到新机器: 内网拷贝:scp -r mazhf192.168.1.233:~/miniconda3 ~/ 外…...

docker高级

文章目录 1.Docker Compose1.1 介绍1.2 compose文件1.3 常用命令1.4 安装1.5 项目说明和构建1.5.1 手工启动1.5.2 compose 编排启动1.5.3 完善 compose.yml1.5.4 加入前端容器 2.UI管理平台2.1 portainer 3.镜像发布3.1 阿里云3.2 Docker Registry3.2.1 介绍3.2.2 安装3.2.3 测…...

Redis Stream基本使用及应用场景

一、概念 Redis Streams是Redis5.0提供的一种消息队列机制,支持多播的可持久化的消息队列,用户实现发布订阅的功能,借鉴了kafka设计。 二、常用命令 命令名称描述XADD key ID field value [field value ...]添加一条消息 key:St…...

DAY40|动态规划Part08|LeetCode: 121. 买卖股票的最佳时机 、 122.买卖股票的最佳时机II 、 123.买卖股票的最佳时机III

目录 LeetCode:121. 买卖股票的最佳时机 暴力解法 贪心法 动态规划法 LeetCode:122.买卖股票的最佳时机II 基本思路 LeetCode: 买卖股票的最佳时机III、IV 基本思路 C代码 LeetCode:121. 买卖股票的最佳时机 力扣题目链接 文字讲解:121. 买卖股票的最佳时…...

【安装及调试旧版Chrome + 多版本环境测试全攻略】

👨💻 安装及调试旧版Chrome 多版本环境测试全攻略 🌐 (新手友好版 | 覆盖安装/运行/调试全流程) 🕰️ 【背景篇】为什么我们需要旧版浏览器测试? 🌍 🌐 浏览器世界的“…...

【Linux】进程间通信——命名管道

文章目录 命名管道什么是命名管道**命名管道 vs. 无名管道**如何创建命名管道 用命名管道实现进程间通信MakefileComm.hppServer.hppClient.hppServer.cppClient.cpp 效果总结 命名管道 什么是命名管道 命名管道,也称为 FIFO(First In First Out&#…...

Qt在Linux嵌入式开发过程中复杂界面滑动时卡顿掉帧问题分析及解决方案

Qt在Linux嵌入式设备开发过程中,由于配置较低,加上没有GPU,我们有时候会遇到有些组件比较多的复杂界面,在滑动时会出现掉帧或卡顿的问题。要讲明白这个问题还得从CPU和GPU的分工说起。 一、硬件层面核心问题根源剖析 CPU&#x…...

AI学习第六天-python的基础使用-趣味图形

在 Python 编程学习过程中,turtle库是一个非常有趣且实用的工具,它可以帮助我们轻松绘制各种图形。结合for循环、random模块以及自定义方法等知识点,能够创作出丰富多彩的图案。下面就来分享一下相关的学习笔记。 一、基础知识点回顾 &…...

[VMware]卸载VMware虚拟机和Linux系统ubuntu(自记录版)

记录一下,不是教程,只是防止我做错了可以回溯一下 我打开vscode,就会跳出下图 虚拟机,Linux还是很久之前学习安装的,种途可能卸载过(不太记得了),现在尝试彻底卸载 彻底卸载VMware虚拟机的详细步骤-CSDN博客虚拟机Vmware 转移 克隆 卸载及移除Linux系统_克隆的虚拟机怎么移除-…...

J-LangChain,用Java实现LangChain编排!轻松加载PDF、切分文档、向量化存储,再到智能问答

Java如何玩转大模型编排、RAG、Agent??? 在自然语言处理(NLP)的浪潮中,LangChain作为一种强大的模型编排框架,已经在Python社区中广受欢迎。然而,对于Java开发者来说,能…...

Cuppa CMS v1.0 任意文件读取(CVE-2022-25401)

漏洞简介: Cuppa CMS v1.0 administrator/templates/default/html/windows/right.php文件存在任意文件读取漏洞 漏洞环境: 春秋云镜中的漏洞靶标,CVE编号为CVE-2022-25401 漏洞复现 弱口令行不通 直接访问administrator/templates/defau…...

可以免费无限次下载PPT的网站

前言 最近发现了一个超实用的网站,想分享给大家。 在学习和工作的过程中,想必做PPT是一件让大家都很头疼的一件事。 想下载一些PPT模板减少做PPT的工作量,但网上大多精美的PPT都是需要付费才能下载使用。 即使免费也有次数限制&#xff0…...

STM32中使用PWM对舵机控制

目录 1、硬件JIE 2、PWM口配置 3、角度转换 4、main函数中应用 5、工程下载连接 1、硬件介绍 单片机:STM32F1 舵机:MG995 2、PWM口配置 20毫秒的PWM脉冲占空比,对舵机控制效果较好 计算的公式: PSC、ARR值的选取&#xf…...

使用插件 `vue2-water-marker`添加全局水印

使用插件 vue2-water-marker添加全局水印 效果图 1、安装插件 npm install vue2-water-marker --save2、全局注册 // main.js import Vue from vue import Vue2WaterMarker from vue2-water-markerVue.use(Vue2WaterMarker)3、在组件中使用 <template><div id&q…...

MySQL表约束的种类与应用

在MySQL数据库中&#xff0c;表约束是确保数据完整性的关键。约束限制了可以在表中插入或更新的数据类型&#xff0c;保证数据的准确性和可靠性。了解MySQL中的各种表约束对于数据库设计和数据维护至关重要。以下是MySQL支持的主要表约束类型及其应用的详细介绍。 1. 主键约束…...

【大模型+知识图谱】大模型与知识图谱融合:技术演进、实践应用与未来挑战

【大模型+知识图谱】大模型与知识图谱融合:技术演进、实践应用与未来挑战 大模型与知识图谱融合:技术演进、实践应用与未来挑战引言:为什么需要融合?一、技术融合的三重路径1.1 知识图谱增强大模型1.2 大模型赋能知识图谱1.3 协同推理框架二、工业级应用场景落地2.1 智能问…...

MS SQL 2008 技术内幕:T-SQL 语言基础

《MS SQL 2008 技术内幕&#xff1a;T-SQL 语言基础》是一部全面介绍 Microsoft SQL Server 2008 中 T-SQL&#xff08;Transact-SQL&#xff09;语言的书籍。T-SQL 是 SQL Server 的扩展版本&#xff0c;增加了编程功能和数据库管理功能&#xff0c;使得开发者和数据库管理员能…...

MySQL-MATCH ... AGAINST工具

在MySQL中&#xff0c;MATCH……AGAINST是全文索引&#xff08;Full-Text index&#xff09;的查询语法&#xff0c;它允许你对文本进行高效的全文搜素&#xff0c;支持自然语言搜索和布尔搜索模式。以下是MATCH……AGAINST的详细用法和示例 一、全文索引的基本概念 全文索引适…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列&#xff1f;2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...

C++:多态机制详解

目录 一. 多态的概念 1.静态多态&#xff08;编译时多态&#xff09; 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1&#xff09;.协变 2&#xff09;.析构函数的重写 5.override 和 final关键字 1&#…...

云原生安全实战:API网关Kong的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关&#xff08;API Gateway&#xff09; API网关是微服务架构中的核心组件&#xff0c;负责统一管理所有API的流量入口。它像一座…...

【Linux系统】Linux环境变量:系统配置的隐形指挥官

。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量&#xff1a;setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...