finagg:Python 金融数据聚合工具包
finagg 是一个 Python 包,专门提供热门免费金融 API 的实现,帮助用户将这些 API 获得的历史数据聚合到 SQL 数据库中,并将聚合数据转化为适用于分析和人工智能/机器学习的特征。
快速开始
安装
用户可以通过 pip
安装最新的稳定版本:
pip install finagg
或者从 GitHub 安装最新的不稳定版本:
git clone https://github.com/theOGognf/finagg.git
pip install ./finagg/
还可以选择从第三方 API 安装推荐的数据集(例如,经济数据、公司财务、股票历史等)到本地 SQL 数据库中:
finagg install -ss economic -ts indices -z -r
安装过程将指导用户如何获得免费 API 密钥,并将这些密钥存储在本地的 .env
文件中。用户可以通过运行 finagg install --help
查看更多安装选项和细节。
基本用法
本部分提供了一些 finagg 的使用示例。对于支持的所有 API 和功能,请参阅相关文档。
-
直接探索 API
- 需要互联网访问和 API 密钥/用户代理声明。
>>> finagg.bea.api.gdp_by_industry.get(year=[2019]).head(5)
-
利用已安装的原始数据探索热门特征
- 需要下载和安装原始数据。
>>> finagg.fred.feat.economic.from_raw().head(5)
-
利用已安装的特征探索原始数据的精炼汇总
- 需要通过安装命令载入精炼数据。
>>> finagg.sec.feat.quarterly.industry.from_refined(ticker="AAPL").head(5)
配置
API 密钥和用户代理
大多数 API 需要 API 密钥和用户代理声明。可以通过设置环境变量或程序化地传递这些信息来配置 finagg。
BEA_API_KEY
:用于获取经济分析局的 API 密钥。FRED_API_KEY
:用于获取联邦储备经济数据的国家 API 密钥。SEC_API_USER_AGENT
:证券交易委员会的 API 用户代理声明,格式为FIRST_NAME LAST_NAME E_MAIL
。
数据位置
finagg 的根路径、HTTP 缓存路径和数据库路径均可通过环境变量进行配置。
FINAGG_ROOT_PATH
:指向./findata
目录的父目录,默认为当前工作目录。FINAGG_HTTP_CACHE_PATH
:指向 HTTP 请求缓存的 SQLite 存储,默认为./findata/http_cache.sqlite
。FINAGG_DATABASE_URL
:指向 finagg 数据存储,默认为./findata/finagg.sqlite
。
依赖项
- pandas:用于快速、灵活和富有表现力的关系数据表示。
- requests:用于对第三方 API 的 HTTP 请求。
- requests-cache:用于缓存 HTTP 请求以避免被第三方 API 服务器限速。
- SQLAlchemy:用于 SQL 的 Python 接口。
- yfinance:用于从 Yahoo! Finance 获取历史股票数据。
相关项目
- FinRL:集合金融强化学习环境和工具。
- fredapi:FRED API 的实现。
- OpenBBTerminal:Bloomberg 终端的开源版本。
- sec-edgar:文件型 SEC EDGAR 解析器的实现。
- sec-edgar-api:SEC EDGAR REST API 的实现。
常见问题解答
-
应该从哪里开始?
聚合数据、创建分析笔记本,或利用实现的数据特征和 SQL 表创建 RL 环境。
-
为什么特定标的或经济数据系列无法安装特征?
API 可能相对新,未提供特定标的或经济数据的相应数据。
-
支持哪些 Python 版本?
支持 Python 版本 3.10 及以上。
-
支持哪些操作系统?
在 Linux 和 Windows 上开发和测试,推荐在实践中使用 Linux 或 WSL。