【第一章】金融数据的获取——金融量化学习入门笔记

前言

要分析金融数据,首先就需要获取到金融数据,不同于平时在支付宝或者财经网,随便点点就能看到各种图表数据,这次需要我们自己获取到数据并保存在本地,方便后面的回测和分析。

本文仅用于为学习金融量化知识提供参考,并不构成任何投资建议。请时刻记住"投资不是投机,您和您的家人才是自己最宝贵的财富",原诸君共勉。

一、主流的数据获取方案

经过检索和整理,我了解到,主流的获取金融数据的方法有以下四种方案,各有利弊:

1、通过一些免费的小API网站,但是只能得到黄金的实时价格数据,并没有历史数据,这对于回测显然是不够的。

2、要么是通过阿里云金融数据API接口聚合数据这一类的国内大厂提供的限时或限次数的免费策略。

其中阿里云的接口目前查询到的政策是提供免费1个月试用100次调用。

聚合数据则是提供似乎是长期免费的每天50次调用。

上述大厂提供的金融API方案虽然数据范围和功能都很广阔,但是使用的次数都受到了较大的限制,并且阿里的接口评论区的风评似乎不太好,有人反映它延迟高、不够稳定。

还有一家蛮有名气的国内厂商是Tushare数据

它们提供了会员积分制的接口访问服务,根据你对平台的贡献或者直接为平台赞助来获取积分,积分达到一定程度后才能调用更多的接口,并且积分有效期似乎是一年,我需要的ETF黄金基金相关数据需要几千分才可以调用,也不太满足需求。

3、国际接口平台例如比较有名的finnhub.io,不过它们基本都只提供国际金价数据,国际金价与国内金价的浮动并不是一致的,依然不能满足我的需求。

4、最终,我找到了一个叫AKShare的开源项目,它提供了本地化的完全免费获取各个公开的金融网站数据的方法,完美契合了我的需求。

在此对AKShare的开发团队以及各大财经数据网站致以最高的敬意。

二、部署AKShare

1.确认本地环境

我使用的是VScode,并安装了Anaconda

ctrl+shift+p并输入python:select interpreter

查找在vscode上默认运行的python版本。

若下面的解释器列表里没有看到你的python路径,也可以通过"输入解释器路径"来找到你本地安装的Anaconda下的python.exe的位置进行添加。

上述步骤是为了防止在电脑上安装过多个python版本,导致环境混乱。

2.安装AKShare

使用命令行即可一键安装

复制代码
pip install akshare

不过官方文档中更推荐的是使用清华源进行安装

复制代码
pip install akshare --upgrade --user -i https://pypi.tuna.tsinghua.edu.cn/simple

同时注意:程序运行时,文件名、文件夹名不能是:akshare。

由于各大财经网站有可能更新接口数据结构,您可能也需要更新akshare库,可使用如下指令:

复制代码
pip install akshare --upgrade

3.使用AKShare获取黄金基金数据

首先需要找到我们目标基金的编号,随便进入一个财经网站,例如东方财富网站,即可查询,例如支付宝上可买的华安黄金ETF联接C对应编号为(000217)。

然后再简单写两行代码:

复制代码
import akshare as ak
import pandas as pd
from datetime import datetime, timedelta
from tabulate import tabulate

# 基金代码
fund_code = "000217"

# 获取历史净值数据
df = ak.fund_open_fund_info_em(fund_code, indicator="单位净值走势")

# 转换日期列
df["净值日期"] = pd.to_datetime(df["净值日期"])

# 筛选最近一个月的数据
today = datetime.today()
one_month_ago = today - timedelta(days=30)
df_last_month = df[df["净值日期"] >= one_month_ago].copy()

# 新增一列:换算金价 = 单位净值 * 270
df_last_month["换算金价"] = df_last_month["单位净值"] * 270

print(tabulate(df_last_month, headers="keys", tablefmt="psql", showindex=True))

上述代码中关于净值与华安黄金价格的换算来源于支付宝上华安黄金基金的换算公式,截止本文发稿,该换算方式为:

华安黄金基金的换算比例为每1克黄金对应270份黄金基金份额。

以净值3.0955为例子,华安黄金金价=3.0955*270=835.7850

由此我们得到了最近一月的黄金数据,并将其以图标格式显示到控制面板,输出结果如下:

总结

通过本文我们学习到了使用akshare获取金融数据并简单进行华安黄金金价的换算。

相关推荐
孟健9 小时前
Karpathy 用 200 行纯 Python 从零实现 GPT:代码逐行解析
python
码路飞10 小时前
写了个 AI 聊天页面,被 5 种流式格式折腾了一整天 😭
javascript·python
曲幽13 小时前
FastAPI压力测试实战:Locust模拟真实用户并发及优化建议
python·fastapi·web·locust·asyncio·test·uvicorn·workers
敏编程17 小时前
一天一个Python库:jsonschema - JSON 数据验证利器
python
前端付豪17 小时前
LangChain记忆:通过Memory记住上次的对话细节
人工智能·python·langchain
databook18 小时前
ManimCE v0.20.1 发布:LaTeX 渲染修复与动画稳定性提升
python·动效
花酒锄作田1 天前
使用 pkgutil 实现动态插件系统
python
前端付豪1 天前
LangChain链 写一篇完美推文?用SequencialChain链接不同的组件
人工智能·python·langchain
曲幽1 天前
FastAPI实战:打造本地文生图接口,ollama+diffusers让AI绘画更听话
python·fastapi·web·cors·diffusers·lcm·ollama·dreamshaper8·txt2img
老赵全栈实战1 天前
Pydantic配置管理最佳实践(一)
python