【量化】实战恒有数获取指数定投的数据源

2023-12-13 08:30

本文主要是介绍【量化】实战恒有数获取指数定投的数据源,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作者:幻好

来源: 恒生LIGHT云社区

本文主要基于恒有数平台获取指数定投所需数据源的过程实践。

原文: 【量化】用数据验证巴菲特推荐的指数定投的收益真相

恒有数简介

恒有数金融数据社区 ( https://udata.hs.net ),源自恒生的金融数据开放和可视化社区,旨在为量化投资爱好者、金融从业人员、高校师生、政府机构和财经媒体等人群提供专业的金融数据服务,满足不同用户丰富多样的数据分析和投资研究需求。

恒有数提供涵盖股票、基金、债券、期权期货、港股等金融数据(数据目录见附录1)。提供在线预览、在线下载和在线调试等功能,简单高效的API接口(接口语言包括HTTP、Python、MATLAB、Java),丰富的接口文档与帮助文档,使得用户可以方便快捷地获取数据。

未来,恒有数还会继续扩充专业数据,完善产品功能,不断提升服务能力。

指数定投简介

指数定投是定期投资指数基金的简称,指的是在固定的时间,以固定的金额,投资到指定的开放式基金中,这是懒人投资理财的最佳方法。这种方式通过积少成多,聚沙成塔,分散和平摊风险,不会因股票市场的一时波动影响正常的生活和情绪。在交易市场中,由于指数编制的方式,指数上涨是大概率事件,这也符合投资是追求确定性的要义。

采集数据源过程

注册恒有数平台

注册并登录恒有数平台,获取数据接口请求Token,地址: https://udata.hs.net/console/overAllView。

获取所需数据源

根据需求,需要获取以下数据字段:

  • 交易日期 :交易日期
  • 股票代码 :股票的代码,上证股票以sh结尾,深证股票以sz结尾
  • 开盘价 :当日股票股票开盘价格
  • 最高价 :当日股票交易最高价格
  • 最低价 :当日股票交易最低价格
  • 收盘价 :股票收盘价格
  • 成交量 :当日股票成交量
  • 成交额 :当日股票成交额
  • 涨跌幅 :复权之后的真实准确涨跌幅
  • 总市值 :当日股票总股价
  • 换手率 :当日股票换手比例
  • 涨跌停状态 :本月股票最后一个交易日收盘是否涨停
  • 交易状态 :本月股票最后一个交易日是否交易

需要获取数据的接口如下:

  • 1.1.2 交易日历 ( https://udata.hs.net/datas/200/)
    • 获取交易日时间
  • 1.2.1 股票日行情( https://udata.hs.net/datas/332/)
    • 获取沪深日行情,包含昨收价、开盘价、最高价、最低价、收盘价、成交量、成交金额等数据;

数据部分程序代码如下:

import pandas as pd
import numpy as np
import config.sys_config as config
import hs_udata as hs
import time"""
获取 沪深证券交易所 指定范围的交易日期集合
"""
def get_trade_dates(start_date, end_date=' '):# 开始时间if not start_date or not start_date.rfind('-'):start_date = ' 'start_year = int(start_date.split('-')[0], base=10)# 结束时间end_year = int(time.strftime("%Y", time.localtime()), base=10)if end_date == ' ' or not start_date.rfind('-'):end_date = ' 'else:end_year = int(end_date.split('-')[0], base=10)# 获取交易日期集合trade_date_df = pd.DataFrame()while True:if start_year > end_year:breakif trade_date_df.size <= 0:trade_date_df = hs.trading_calendar(secu_market='83',if_trading_day='1',start_date=start_date)else:trade_date_df = trade_date_df.append(hs.trading_calendar(secu_market='83',if_trading_day='1',start_date=start_date), ignore_index=True)start_year = start_year + 1start_date = str(start_year) + start_date[4:]# 去除重复交易日trade_date_df = trade_date_df.drop_duplicates()print(trade_date_df.head())return trade_date_df# 获取股票日数据: 交易日期 股票行情,公司等信息
def get_stock_day_data(secu_code, trade_date):# 获取数据:产品代码,交易日期,开盘价,最高价,最低价,收盘价,成交数量,成交额,涨跌幅,换手率,涨跌停状态,交易状态stock_fields = "prod_code,trading_date,open_price,high_price,low_price,close_price,business_amount,business_balance,px_change_rate,turnover_ratio,up_down_status,turnover_status"stock_data = hs.stock_quote_daily(en_prod_code=secu_code,trading_date=trade_date,adjust_way=2,fields=stock_fields)print(stock_data.head())return stock_data# 执行程序
def execute_procedure(stock_code_list, trade_date, mode='new'):for stock_code in stock_code_list:res_data = get_stock_day_data(stock_code, trade_date)res_data['close_price'].replace('', np.nan, inplace=True)res_data.dropna(subset=['close_price'], inplace=True)if mode == 'new':res_data.to_csv("temp/" + stock_code + ".csv", mode='w', index=False, encoding="utf-8")else:res_data.to_csv("temp/" + stock_code + ".csv", mode='a', index=False, header=False, encoding="utf-8")"""
程序执行入口
"""
if __name__ == '__main__':# 需要查询的产品code信息,000001.SH 上证指数prod_code_list = ['000001.SH']hs.set_token(config.HsData().get_token())trade_dates_df = get_trade_dates(start_date='2010-01-01')  # 获取交易时间集合# 执行程序采集数据mode = 'new'count = 0for trade_date in trade_dates_df['trading_date']:print("执行日期:", trade_date)if count > 0:mode = 'add'execute_procedure(prod_code_list, trade_date, mode)count = count + 1

执行程序获取到的结果如图所示:

image-20211204130618104.png

总结

通过恒有数获取股票基金等金融数据,即使初级小白也能快速上手,大大提升了金融数据分析等应用的效率。

这篇关于【量化】实战恒有数获取指数定投的数据源的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/487761

相关文章

Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例

《Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例》本文介绍Nginx+Keepalived实现Web集群高可用负载均衡的部署与测试,涵盖架构设计、环境配置、健康检查、... 目录前言一、架构设计二、环境准备三、案例部署配置 前端 Keepalived配置 前端 Nginx

Python日期和时间完全指南与实战

《Python日期和时间完全指南与实战》在软件开发领域,‌日期时间处理‌是贯穿系统设计全生命周期的重要基础能力,本文将深入解析Python日期时间的‌七大核心模块‌,通过‌企业级代码案例‌揭示最佳实践... 目录一、背景与核心价值二、核心模块详解与实战2.1 datetime模块四剑客2.2 时区处理黄金法

SpringBoot实现接口数据加解密的三种实战方案

《SpringBoot实现接口数据加解密的三种实战方案》在金融支付、用户隐私信息传输等场景中,接口数据若以明文传输,极易被中间人攻击窃取,SpringBoot提供了多种优雅的加解密实现方案,本文将从原... 目录一、为什么需要接口数据加解密?二、核心加解密算法选择1. 对称加密(AES)2. 非对称加密(R

Spring Boot集成Logback终极指南之从基础到高级配置实战指南

《SpringBoot集成Logback终极指南之从基础到高级配置实战指南》Logback是一个可靠、通用且快速的Java日志框架,作为Log4j的继承者,由Log4j创始人设计,:本文主要介绍... 目录一、Logback简介与Spring Boot集成基础1.1 Logback是什么?1.2 Sprin

Linux高并发场景下的网络参数调优实战指南

《Linux高并发场景下的网络参数调优实战指南》在高并发网络服务场景中,Linux内核的默认网络参数往往无法满足需求,导致性能瓶颈、连接超时甚至服务崩溃,本文基于真实案例分析,从参数解读、问题诊断到优... 目录一、问题背景:当并发连接遇上性能瓶颈1.1 案例环境1.2 初始参数分析二、深度诊断:连接状态与

通过C#获取Excel单元格的数据类型的方法详解

《通过C#获取Excel单元格的数据类型的方法详解》在处理Excel文件时,了解单元格的数据类型有助于我们正确地解析和处理数据,本文将详细介绍如何使用FreeSpire.XLS来获取Excel单元格的... 目录引言环境配置6种常见数据类型C# 读取单元格数据类型引言在处理 Excel 文件时,了解单元格

C#实现高性能Excel百万数据导出优化实战指南

《C#实现高性能Excel百万数据导出优化实战指南》在日常工作中,Excel数据导出是一个常见的需求,然而,当数据量较大时,性能和内存问题往往会成为限制导出效率的瓶颈,下面我们看看C#如何结合EPPl... 目录一、技术方案核心对比二、各方案选型建议三、性能对比数据四、核心代码实现1. MiniExcel

POI从入门到实战轻松完成EasyExcel使用及Excel导入导出功能

《POI从入门到实战轻松完成EasyExcel使用及Excel导入导出功能》ApachePOI是一个流行的Java库,用于处理MicrosoftOffice格式文件,提供丰富API来创建、读取和修改O... 目录前言:Apache POIEasyPoiEasyExcel一、EasyExcel1.1、核心特性

Java根据IP地址实现归属地获取

《Java根据IP地址实现归属地获取》Ip2region是一个离线IP地址定位库和IP定位数据管理框架,这篇文章主要为大家详细介绍了Java如何使用Ip2region实现根据IP地址获取归属地,感兴趣... 目录一、使用Ip2region离线获取1、Ip2region简介2、导包3、下编程载xdb文件4、J

SpringBoot中四种AOP实战应用场景及代码实现

《SpringBoot中四种AOP实战应用场景及代码实现》面向切面编程(AOP)是Spring框架的核心功能之一,它通过预编译和运行期动态代理实现程序功能的统一维护,在SpringBoot应用中,AO... 目录引言场景一:日志记录与性能监控业务需求实现方案使用示例扩展:MDC实现请求跟踪场景二:权限控制与