原文链接

和金融相关的python包

0 摘要

包(package)可以理解为他人制作的工具,通常是为了解决某种特定的经常性的需求而诞生的。

为什么要重视包?

1. 包的使用可以极大地提升效率。比如,你需要计算某种复杂的金融指标或构建衍生品模型,如果从头开始构建是费时费力的。这时,借助别人写好的包,使用现成的模型,写几行代码,只需输入参数即可。

2. 包的发现可以扩展知识面。包的诞生从来都是为了解决某种问题的,而发现越多的包,便可以扩大知识的广度。

3. 包的发现可以侦查到技术热点。对于新的问题,可能需要新的工具解决。因此,关注新诞生的包或包的更新说明,可以发掘到技术上的热点。

对于同一个问题,包的数量可能太多了,如何选择适当的包?

1. 历史悠久的,常见的。

2. GitHub中star多的。

3. 社区活跃的。

4. 最好选择有中文文档的。

5. 更新频繁的。

6. 功能强大,功能齐全的。

数据分析大致可分为三个部分,针对金融数据的分析也不例外。因此,下面按照这三个部分来介绍和金融相关的python包。

 

1 数据存储与获取

1.1 数据接口

抛开python,一般的获取金融数据的方法有哪些呢?从媒体上获取、从交易所官网获取、从财经网站获取。这些网站一般都会提供一个接口(API),使用各种编程语言都可以通过接口来直接获取数据。

名称 网址 简介
yfinance 雅虎金融数据接口
findatapy 用于通过 Bloomberg、Quandl、Yahoo 等下载市场数据
googlefinance 从 Google Finance API 获取实时股票数据
yahoo-finance 雅虎金融数据接口
pandas-datareader 将各种金融数据转换为pandas格式
pandas-finance 用于访问和分析财务数据的高级 API
pyhoofinance 快速查询 Yahoo Finance 的多个股票代码并返回键入的数据进行分析
yfinance-api 金融API
yql-finance 简单快捷,返回当前时间段的股票收盘价和当前股票代码
ystockquote 从雅虎财经检索股票报价数据
wallstreet 实时股票和期权数据
stock_extractor 股票数据获取
Stockex 雅虎金融数据接口
finsymbols 获取 SP500、AMEX、NYSE 和 NASDAQ 的股票代码和相关信息
FRB FRED的 Python 客户端
inquisitor  的 Python 接口
yfi 雅虎金融数据接口
chinesestockapi 中国股票价格
exchange 获取当前汇率
ticks 获取股票行情数据的简单命令行工具
pybbg 彭博
ccy 货币市场
coinmarketcap 比特币等价格
tiingo 实时数据
iexfinance 实时数据
pyEX IEX 的 Python 接口
alpaca-trade-api-python 用于从 Alpaca API 检索实时和历史价格以及交易执行的 Python 接口
MetaTrader5 外汇和金融市场的交易平台
yahooquery 雅虎金融数据接口
investpy 从  中提取财务数据
yliveticker 雅虎金融数据接口
alpha_vantage 从Alpha Vantage获取数据
FinanceDataReader 丛FinanceData.KR获取数据
Quandl 免费+付费。数据大而全
tushare 中文。免费+付费。 包含财经资讯数据
JQData 中文。免费+付费。 包含因子数据
baostock 中文。数据比较少,使用方便
AKShare 中文
DTShare 中文
GoPUP 中文。各种其他数据
easyquotation 中文

1.2 python 操作excel

有时我们获得的数据是本地excel数据,这时就需要通过python读取excel数据,比如pandas中 read_excel 和 read_csv 便可以实现。如果想进行更高级更精细的操作,就可以使用专门的包来实现。

名称 网址 简介
xlwings python操作excel
openpyxl python操作excel
xlrd python操作excel
xlsxwriter python操作excel
datanitro 在excel中使用python
Grid Studio 在excel中使用python
ExPy 在excel中使用python
PyXLL 在excel中使用python
XLLoop 用于在服务器上实现 Excel 用户定义函数

2 数据处理与分析

2.1 通用数据处理

处理任何领域的数据、进行各种场景的数学计算都需要使用的包。

名称 网址 简介
NumPy 数组处理
SciPy 科学计算
pandas 必须学的包,相当于excel
quantdsl 金融和交易的定量分析的特定领域语言
statistics python内置统计库
SymPy 符号计算
pymc3 概率

2.2 交易日历

帮助获取交易日的信息,算是辅助功能。

名称 网址 简介
exchange_calendars 证券交易所交易日历
bizdays 各国交易日
pandas_market_calendars 基于pandas的交易日历

2.3 指标计算

进行金融分析时,有很多常用的金融指标,本质是一堆公式。这些公式无需重新编写,通过调包即可。比如 finta 中的:

PHP
* Simple Moving Average 'SMA'
* Simple Moving Median 'SMM'
* Smoothed Simple Moving Average 'SSMA'
* Exponential Moving Average 'EMA'
* Double Exponential Moving Average 'DEMA'
名称 网址 简介
pandas_talib 基于Pandas技术分析指标
finta 财务指标
Tulipy 金融技术分析指标
lppls LPPLS模型

2.4 金融工具和定价

包含各种衍生品模型的包

名称 网址 简介
PyQL QuantLib的Python移植
pyfin 期权(已不再维护)
vollib 计算期权价格、波动率和希腊值
QuantPy 量化金融的框架
Finance-Python 金融计算库
ffn 金融函数库
pynance 检索、分析和可视化股票和衍生品市场的数据
tia 整合和分析
hasura/base-python-dash 搭建数据可视化界面
hasura/base-python-bokeh 用bokeh库实现数据可视化
pysabr SABR模型
FinancePy 金融衍生品的定价和风险管理
gs-quant 量化金融的工具
willowtree 衍生品定价
Financial-engineering 蒙特卡罗方法在金融工程项目中的应用
optlib 期权定价
tf-quant-finance 量化金融的高性能TensorFlow库

2.5 交易与回测

主要是各种量化平台,回测工具。

名称 网址 简介
TA-Lib 技术分析平台
zipline Pythonic算法交易
QuantSoftware Toolkit 投资组合
quantitative 量化金融与回溯
analyzer 实时金融和回溯交易策略的框架
bt 回测
backtrader 交易策略的回测库
pybacktest 回测
pyalgotrade 算法交易库
tradingWithPython 函数和量化交易
Pandas TA Pandas的扩展,自带技术指标
ta 技术指标分析
algobroker 算法交易引擎
pysentosa 针对sentosa自动化交易系统的接口
finmarketpy 用于回测交易策略和分析金融市场
binary-martingale 期权自动交易
fooltrader 已停止更新
zvt 量化系统
pylivetrader 兼容zipline的在线交易系统
pipeline-live zipline和IEX实时交易
zipline-extensions Zipline插件
moonshot 基于QuantRocket 的回测和交易引擎
PyPortfolioOpt 金融组合最优化,包含经典和最新模型
Eiten 投资组合策略
riskparity.py 基于TensoRFlow 2.0 的风险平价策略
mlfinlab 机器学习在金融中
pyqstrat 回测
NowTrade 技术分析、回测
pinkfish 回测和债券分析
aat 异步算法交易引擎
Backtesting.py 回测交易策略
catalyst 加密资产交易
quantstats 投资组合
qtpylib 交易算法
Quantdom 溯交易策略框架和分析金融市场
freqtrade 免费、开源的加密交易机器人
algorithmic-trading-with-python 教程
DeepDow 基于深度学习的投资组合优化
Qlib 微软开发的量化平台
machine-learning-for-trading 学习资料
AlphaPy 使用 Python、scikit-learn、Keras、XGBoost、LightGBM 和 CatBoost 的自动化机器学习 [AutoML]
jesse 加密的交易机器人
rqalpha 支持多种证券的交易框架
Finrl-Library 用于量化金融自动交易的深度强化学习库
bulbea 基于深度学习的股市预测和建模
ib_nope IBKR TWS上NOPE策略的自动交易系统
OctoBot 用于高频、套利、TA 和社交交易的开源加密货币交易机器人,具有高级 Web 界面
bta-lib pandas 中的技术分析库,用于回测算法和定量分析。
Stock-Prediction-Models 收集用于股票预测的机器学习和深度学习模型,包括交易机器人和模拟
tda-api 通过 TDAmeritrade 收集数据和交易股票、期权和 ETF

2.6 风险分析

构建投资组合与风险分析的包。

名称 网址 简介
pyfolio 投资组合和风险分析
empyrical 共同的财务风险和绩效指。
fecon235 金融经济学的计算工具
finance 金融风险计算
qfrm 衡量、管理和可视化金融工具和投资组合风险的出色 OOP 工具
visualize-wealth 投资组合构建和定量分析
VisualPortfolio 用于可视化投资组合的表现
universal-portfolios 在线投资组合选择算法的集合
FinQuant 用于金融投资组合管理、分析和优化的程序
Empyrial 投资组合的风险和绩效分析以及回报预测

2.7 因子分析

名称 网址 简介
alphalens alpha因子的性能分析
Spectre GPU 加速的并行量化交易库

2.8 时间序列

时间序列在金融建模中是一个绕不开的话题,针对时间序列,我进行过一个更为细致的整理,详见:

名称 网址 简介
ARCH ARCH模型
statsmodels 统计模型
dynts 时间序列分析和操作
PyFlux 贝叶斯概率
tsfresh 时间序列特征
hasura/quandl-metabase 使用 Metabase 可视化 Quandl 的时间序列数据集
Facebook Prophet 为具有线性或非线性增长的多季节性产生多种季节性的高质量预测的工具
tsmoothie 时间序列平滑和异常值检测

3 数据展示与报告

3.1 通用数据可视化

金融数据的可视化和其他领域的数据可视化既有重叠,又有不同。重叠的是基本的图表,如箱型图、概率分布图;不同的是金融领域的专业图,如蜡烛图。

我整理的数据可视化包,详见 

3.2 金融数据可视化

针对金融的数据可视化,下图是 finplot 的示例图。

 

 

名称 网址 简介
dtale 基于pandas
mplfinance 基于matplotlib
finplot 金融绘图
finvizfinance 金融绘图

通用数据可视化的包中也可能有针对金融的数据可视化,比如 cufflinks 中的蜡烛图

 

参考资料

 

 

posted on 2022-07-10 17:17  风生水起  阅读(1531)  评论(0编辑  收藏  举报