用 Python 快速获取基金持仓增减情况 | 更新版

来源:Python数据之道 (ID:PyDataLab)

作者:阳哥

01写在前面

大家好,我是阳哥。

大家知道,在财经领域,Python是有着广泛的用途的。2021年,量化基金开始成为弄潮儿。有不少消息称,量化基金贡献了相当比例的成交量,量化基金对成交量的贡献到底有多大,咱也不知道。

我们所知道的是,在金融量化领域,Python 是主力编程语言之一。

在2021年9月,阳哥曾分享过 用 Python 快速获取基金持仓增值与减持情况 这个内容,由于使用的工具 akshare 获取数据的接口发生变化,有不少同学在运行代码时遇到问题,本次将更新下文章内容,以及代码文件。

在财经领域,之前阳哥分享过部分Python实践应用的主题,包括:

  1. 用Python来做一个投资计划

  2. 用Python快速追踪基金的收益情况

  3. 视频:Plotly 和 Dash 在投资领域的应用

  4. 视频:Plotly中绘制股票交易图表

  5. Plotly中绘制三种经典的股票交易图表

  6. 神器Tushare,财经数据必备工具!

  7. 用 Python 读取巴菲特近期持仓数据

大家知道,近几年,不少同学都是经由基金进入到股市中的。2020年就很流行“买股不如买基”的说话,至于股票和基金到底谁更好,这个仁者见仁智者见智,恐怕一时半会儿也说不清楚。

本文中,阳哥给大家分享的主题是 用 Python 来追踪和更新基金的持仓结构以及基金的股票增持和减持情况,涉及到的Python库主要是 pandasakshare

最终实现的效果包括两个方面:

  • 单支基金的不同季度持仓变化情况

  • 多支基金的十大持仓的历史信息

效果如下:

0047b76a9bdb5edf7ea173e03f9a2972.png
单支基金
6527d06b651f22ef0fac67b5df6fe598.png
多支基金

02akshare 介绍

Tushare 类似, akshare 是国内比较的优秀的财经数据工具。

AKShare 是基于 Python 的财经数据接口库, 目的是实现对股票、期货、期权、基金、外汇、债券、指数、加密货币等金融产品的基本面数据、实时和历史行情数据、衍生数据从数据采集、数据清洗到数据落地的一套工具。

在使用 akshare 之前,需要进行安装,使用命令如下:

pip install akshare

在安装好 akshare 后,导入相关 Python库,如下:

import akshare as ak
import pandas as pd
import numpy as np

print(f'pandas version: {pd.__version__}')
print(f'akshare version: {ak.__version__}')

# pandas version: 1.3.2
# akshare version: 1.3.41

2022.1.12 更新内容:

本文中, akshare 使用的版本为 1.3.41

03单支基金

对于单支基金的持仓情况变化,主要是通过对比临近的两个季度,来观察基金持仓的股票增持与减持情况,从而来跟踪基金的趋势变化。

由于基金季度报告中,1季度和3季度只披露前十大股票的持仓情况,而半年度(Q2)和年度(Q4)报告会披露全部持仓的情况,因此,也可以通过对更详细信息的对比来挖掘有些趋势信息。

下面,将详细的介绍获取并对比两个季度的持仓数据。

分步骤介绍

首先,咱们通过 akshare 来获取基金的季度持仓数据,以 易方达蓝筹精选基金(基金代码:005827)为例,获取2019-2021年的持仓数据情况,代码如下:

# 易方达蓝筹精选,005827
# 前海开源公共事业股票,005669
years = ['2019','2020','2021']

data = pd.DataFrame()
for yr in years:
    # df_tmp = ak.fund_em_portfolio_hold(code="005827",year=yr) # akshare version: 1.0.91
    df_tmp = ak.fund_portfolio_hold_em(code="005827",year=yr) # akshare version: 1.3.41
    data = data.append(df_tmp)

data['季度']=data['季度'].apply(lambda x:x[:6])
data['季度'] = data['季度'].str.replace('年','Q')
data['占净值比例'] = pd.to_numeric(data['占净值比例'])
data

2022.1.12 更新内容:

基金持仓数据获取的接口,在 akshare 1.3.41 版本中,更新为 fund_portfolio_hold_em

结果如下:

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值