公募基金公开市场数据基础分析实例

2024-03-22 18:52

本文主要是介绍公募基金公开市场数据基础分析实例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

公募基金公开市场数据基础分析
公募基金公开市场数据基础分析示例代码1.1 公开市场数据表结构
字段	字段类型	含义
SecurityID	SYMBOL	基金代码
FullName	STRING	基金全称
Name	STRING	基金简称
Management	SYMBOL	基金公司
Type	SYMBOL	基金类型
Custodian	SYMBOL	托管人
IssueShare	DOUBLE	成立规模
InceptDate	DATE	成立日期
MFee	DOUBLE	管理费率
CFee	DOUBLE	托管费率
SFee	DOUBLE	销售服务费率
Closed	DOUBLE	封闭期
Status	INT	状态
字符串字段使用 SYMBOL 类型和 STRING 类型存储的差异,参考:数据类型 — DolphinDB 2.0 文档的字符串部分内容。1.2 公开市场数据导入
截止 20227 月,已经面市的公募基金总数约 1 万多只,公开市场数据表的行数与面市公募基金总数相等,所以这个表的数据量相对比较小,建议使用 DolphinDB 的维度表进行存储。以 csv 数据文件导入 DolphinDB 维度表为例,具体代码如下:10 万行以下的单表数据建议用 DolphinDB 的维度表存储。csvDataPath = "/ssd/ssd2/data/fundData/publicFundData.csv"
dbName = "dfs://publicFundDB"
tbName = "publicFundData"
// create database and one-partition table
if(existsDatabase(dbName)){dropDatabase(dbName)
}
timeRange = 1990.01.01 join sort(distinct(yearBegin(2016.01.01..2050.01.01)))
db = database(dbName, RANGE, timeRange, engine = 'TSDB')
names = `SecurityID`FullName`Name`Management`Type`Custodian`IssueShare`InceptDate`MFee`CFee`SFee`Closed`Status
types = `SYMBOL`STRING`STRING`SYMBOL`SYMBOL`SYMBOL`DOUBLE`DATE`DOUBLE`DOUBLE`DOUBLE`DOUBLE`INT
schemaTB = table(1:0, names, types)
db.createTable(table=schemaTB, tableName=tbName, sortColumns=`InceptDate)
// load CSV data
tmp = ploadText(filename=csvDataPath, schema=table(names, types))
loadTable(dbName, tbName).append!(tmp)
1.3 公开市场数据基础分析
1.3.1 数据概览
数据导入后,可以执行相关 SQL 语句对维度表数据进行预览,执行下述代码加载包含元数据的表对象,此步骤并未加载维度表数据到内存,所以执行耗时非常短,变量 fundData 几乎不占用内存资源:fundData = loadTable("dfs://publicFundDB", "publicFundData")
查询维度表中的前 10 条记录,并将查询数据一次性从服务端取到客户端后在 Data Browser 显示:如果单次 SQL 查询返回的结果较大,必须将查询的结果返回给一个变量,然后双击 GUI 的 Variables 进行分页查看,因为分页查看的话数据是分段传输的,而不是一次性从服务端传输回客户端,避免 GUI 客户端被阻塞的情况。select top 10 * from fundData
01.publicFundDataTop10因为公开市场数据表中的总数据量比较小,所以可以对其进行全表查询,并将返回的查询结果赋值给一个内存表变量 publicFundData,然后双击 GUI 的 Variables 处的 publicFundData 进行数据分页浏览:publicFundData = select * from fundData
02.publicFundData1.3.2 查询综合费率最低的基金
在选购基金的时候,综合费率也会是投资者考量的因素之一。针对上述公开市场数据,综合费率为管理费率、托管费率和销售服务费率的总和:查询公开数据表的数据,并计算综合费率 Fee,最终将查询结果赋值给内存表变量 fundFee , 具体代码如下:fundFee = select *, (MFee + CFee + SFee) as Fee from fundData
查询综合费率最低的 50 只债券型公募基金, 具体代码如下:select top 50 * from fundFee where Type == "债券型" order by Fee
查询综合费率最低的 50 只债券型且不是指数型的公募基金, 具体代码如下:select top 50 * from  fundFee where Type == "债券型", not(FullName like "%指数%") order by Fee
1.3.3 按基金类型分组后的信息摘要
DolphinDB 的 stat 函数可以快速生成数据的统计信息,包括平均值、最大值、最小值、计数、中位数和标准差等,quantile 函数可以快速计算分位数,可以通过 def 自定义一个信息摘要统计函数,然后对 Type 列进行分组计算,具体代码如下:// user defined summary statistics function
def describe(x){y = stat(x)q_25 = quantile(x, 0.25)q_50 = quantile(x, 0.50)q_75 = quantile(x, 0.75)return y.Count join y.Avg join y.Stdev join y.Min join q_25 join q_50 join q_75 join y.Max join y.Median}// query the summary of public fund fees
select describe(Fee) as `count`mean`std`min`q_25`q_50`q_75`max`median from fundFee group by Type
03.fundFeeSummary1.3.4 按基金类型分组后的分布直方图
/**plot fees histogram*/
// Type="REITs"
(exec Fee from fundFee where Type="REITs").plotHist(binNum=100)
// Type="保本型"
(exec Fee from fundFee where Type="保本型").plotHist(binNum=100)
// Type="债券型"
(exec Fee from fundFee where Type="债券型").plotHist(binNum=100)
// Type="另类投资型"
(exec Fee from fundFee where Type="另类投资型").plotHist(binNum=100)
// Type="商品型"
(exec Fee from fundFee where Type="商品型").plotHist(binNum=100)
// Type="混合型"
(exec Fee from fundFee where Type="混合型").plotHist(binNum=100)
// Type="股票型"
(exec Fee from fundFee where Type="股票型").plotHist(binNum=100)
// Type="货币市场型"
(exec Fee from fundFee where Type="货币市场型").plotHist(binNum=100)
04.feesHistogram

参考:https://gitee.com/dolphindb/Tutorials_CN/blob/master/public_fund_basic_analysis.md#1-%E5%85%AC%E5%8B%9F%E5%9F%BA%E9%87%91%E5%85%AC%E5%BC%80%E5%B8%82%E5%9C%BA%E6%95%B0%E6%8D%AE%E5%9F%BA%E7%A1%80%E5%88%86%E6%9E%90

这篇关于公募基金公开市场数据基础分析实例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

MyBatis-Plus通用中等、大量数据分批查询和处理方法

《MyBatis-Plus通用中等、大量数据分批查询和处理方法》文章介绍MyBatis-Plus分页查询处理,通过函数式接口与Lambda表达式实现通用逻辑,方法抽象但功能强大,建议扩展分批处理及流式... 目录函数式接口获取分页数据接口数据处理接口通用逻辑工具类使用方法简单查询自定义查询方法总结函数式接口

JSONArray在Java中的应用操作实例

《JSONArray在Java中的应用操作实例》JSONArray是org.json库用于处理JSON数组的类,可将Java对象(Map/List)转换为JSON格式,提供增删改查等操作,适用于前后端... 目录1. jsONArray定义与功能1.1 JSONArray概念阐释1.1.1 什么是JSONA

MySQL中的LENGTH()函数用法详解与实例分析

《MySQL中的LENGTH()函数用法详解与实例分析》MySQLLENGTH()函数用于计算字符串的字节长度,区别于CHAR_LENGTH()的字符长度,适用于多字节字符集(如UTF-8)的数据验证... 目录1. LENGTH()函数的基本语法2. LENGTH()函数的返回值2.1 示例1:计算字符串

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

SQL中如何添加数据(常见方法及示例)

《SQL中如何添加数据(常见方法及示例)》SQL全称为StructuredQueryLanguage,是一种用于管理关系数据库的标准编程语言,下面给大家介绍SQL中如何添加数据,感兴趣的朋友一起看看吧... 目录在mysql中,有多种方法可以添加数据。以下是一些常见的方法及其示例。1. 使用INSERT I

Python使用vllm处理多模态数据的预处理技巧

《Python使用vllm处理多模态数据的预处理技巧》本文深入探讨了在Python环境下使用vLLM处理多模态数据的预处理技巧,我们将从基础概念出发,详细讲解文本、图像、音频等多模态数据的预处理方法,... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

MySQL 删除数据详解(最新整理)

《MySQL删除数据详解(最新整理)》:本文主要介绍MySQL删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

MyBatisPlus如何优化千万级数据的CRUD

《MyBatisPlus如何优化千万级数据的CRUD》最近负责的一个项目,数据库表量级破千万,每次执行CRUD都像走钢丝,稍有不慎就引起数据库报警,本文就结合这个项目的实战经验,聊聊MyBatisPl... 目录背景一、MyBATis Plus 简介二、千万级数据的挑战三、优化 CRUD 的关键策略1. 查

python实现对数据公钥加密与私钥解密

《python实现对数据公钥加密与私钥解密》这篇文章主要为大家详细介绍了如何使用python实现对数据公钥加密与私钥解密,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录公钥私钥的生成使用公钥加密使用私钥解密公钥私钥的生成这一部分,使用python生成公钥与私钥,然后保存在两个文