金融行业的流行 Python 库

2024 年 08 月 29 日 | 阅读 9 分钟

在新冠疫情期间,金融科技行业在全球范围内实现了增长。根据报告,未来 4-6 年,金融科技公司将完成超过十亿美元的投资。金融科技根植于银行、保险、贷款、交易和其他支付服务。许多行业正在采用 Python 来解决风险管理、交易、定价、合规和分析等挑战性问题,方法是利用其库和框架。Python 语言以更简单的语法更快地解决复杂问题的能力,使其成为金融行业的最佳编程语言。

除了 R 和 Java 之外,Python 正在成为数据分析领域的最佳语言。Python 提供的独特库使得分析任何数据集都更加容易。在 Python 库的帮助下,金融专家对其分析和财务报告有了更清晰的认识。

此列表包含金融行业中使用最广泛的 Python 库,每一位有抱负的金融数据科学家都应该了解它们。

1. Pandas

Pandas 是一个开源的 Python 库,广泛用于数据分析和数据科学,它构建在 Numpy 等其他库之上。其主要目的是对结构化数据执行数据分析,并侧重于基本的数据处理。

这个高性能的数据分析和操作工具提供了一个名为 pandas data reader 的扩展,可以从 Yahoo Finance、Google Finance 和 Bing Finance 等网站收集最新的金融数据。

安装命令

# 读取 FRED 数据

Pandas 的主要特点

  • 带有默认和自定义排序的快速高效 DataFrame 对象。
  • 用于从许多文件格式将数据加载到内存数据对象中的工具。
  • 数据对齐和缺失数据的一致处理。
  • 日期数据集的重塑和透视。
  • 基于名称的切片、索引和大型数据集的子集。
  • 可以删除或插入数据结构中的列。
  • 用于聚合和转换的数据分组。
  • 高性能的数据合并和连接。
  • 时间序列功能。

2. NumPy

NumPy,与 Pandas 类似,主要专注于科学计算,并专门从事数组操作。NumPy 包附带了各种数学函数,使其成为学术界和金融行业的重要库。

注意:随着 numpy-financial 包(一个包含所有金融功能的库)的最新发布,NumPy 中的金融功能的使用已经过时。

好处

1. NumPy 数组占用空间更小。

NumPy 数组比 Python 列表占用的空间小。Python 列表可能需要高达 20MB,而数组可能只需要 4MB。数组易于访问,方便读写。

2. 速度性能也很出色。它执行的计算比 Python 列表更快。

由于它是开源的,因此免费使用,并且使用一种非常流行的编程语言 Python,它几乎对所有任务都有很好的库。此外,将现有的 C 代码与 Python 解释器连接很容易。

3. 职业发展

Python 是创建大小动态内容的最强大工具之一。Python 具有更快的代码可读性和简洁性,代码行数更少,因为 Python 是一种高级编程语言。在编程语言中,Python 是 IT 领域的一项热门技术。Python 的职业机会在全球范围内迅速增加。

Python 广泛用于 Web 开发、脚本编写、测试以及应用程序和更新的改进。因此,要成为 Python 专家,有许多职业选择,例如可以成为 Python 开发人员、Python 测试人员,甚至是数据科学家。

3. SciPy

在 NumPy 之后,Python 提供了另一个数值函数和计算库,称为 SciPy。它是 NumPy 的一个扩展,用于金融计算和其他金融行业的数值组合。如果您正在寻找高级数据可视化和并行编程,SciPy 是理想的选择。

安装命令

为什么要使用 SciPy

  • SciPy 包含子包集合,有助于解决与科学计算相关的大多数常见问题。
  • Python 中的 SciPy 包是使用最多的科学库,仅次于 C/C++ 或 Matlab 的 GNU Scientific Library。
  • 易于使用和理解,同时具有快速的计算能力。
  • 它可以与多种 NumPy 库配合使用。
  • NumPy 用 C 编写,用于数值计算。它比其他 Python 库快;但是,SciPy 是在 NumPy 之上构建的。
  • NumPy 是数据科学执行基本计算的最有用的库。Python 中的 SciPy 模块是线性代数的一个突出版本,而 NumPy 包含大量功能。
  • NumPy 仅包含数组数据类型,它执行排序、塑形、索引等最基本的操作。大多数新的数据科学功能都可以在 SciPy 中找到,而不是在 NumPy 中。

4. Pyfolio

在 Pyfolio 的帮助下,可以轻松评估交易绩效。这是一个开源库,根据回报提供风险分析报告和金融投资组合的绩效结果。它由 Quantopian 开发,并与 Zipline(一个回测库,我稍后会讨论)配合良好。Pyfolio 专注于创建表现图模型和贝叶斯分析。有各种绘图功能可概览您的投资组合。

安装命令

# 获取苹果股票

5. Statsmodel

Statsmodel 正在成为一个日益增长的强大 Python 统计和金融分析工具。您可以使用 statsmodel 提供的函数和类构建各种统计模型。Statsmodel 中一些最好的模型包括线性回归模型、离散模型、时间序列分析和贝叶斯分析。其他重要功能包括统计数据探索和统计检验。

安装命令

基本功能

1. 线性回归模型

  • 普通最小二乘法
  • 广义最小二乘法
  • 加权最小二乘法
  • 具有自回归误差的最小二乘法
  • 分位数回归
  • 递归最小二乘法

2. 混合线性模型,包含混合效应和协方差组件

  • GLM:广义线性模型,支持所有单参数指数族分布
  • 二项分布和泊松分布的贝叶斯混合 GLM
  • GEE:用于单向分组或纵向数据的广义估计方程

3. 离散模型

  • Logit 和 Probit
  • 多项 Logit (MNLogit)
  • 泊松和广义泊松回归
  • 负二项回归
  • 零膨胀计数模型
  • 具有多种 M 估计量支持的稳健线性模型。

4. 时间序列分析:用于时间序列分析的模型

  • 完整的状态空间模型框架
  • 季节性 ARIMA 和 ARIMAX 模型
  • VARMA 和 VARMAX 模型
  • 动态因子模型
  • 非观察组件模型
  • 马尔可夫切换模型 (MSAR),也称为隐马尔可夫模型 (HMM)
  • 单变量时间序列分析:AR, ARIMA
  • 向量自回归模型、VAR 和结构 VAR
  • 向量误差修正模型、VECM
  • 指数平滑、Holt-Winters
  • 时间序列的假设检验:单位根、协整等
  • 用于时间序列分析的隐藏统计和过程模型

5. 生存分析

  • 比例风险回归 (Cox 模型)
  • 生存函数估计 (Kaplan-Meier)
  • 累积风险函数估计

6. 多变量

  • 主成分分析(含缺失数据)
  • 因子分析(含旋转)
  • MANOVA
  • 偏相关

7. 非参数统计

  • 单变量和多变量核密度估计器
  • 数据集:用于模型和测试的数据集
  • 统计:大量统计检验
  • 诊断和详细检验
  • 拟合优度和正态性检验
  • 多重检验功能
  • 各种其他统计检验
  • 使用 MICE、回归测量和高斯归因进行归因
  • 干预分析
  • 包括用于数据和模型结果可视化分析的绘图功能

8. I/O

  • 用于读取 Stata .dta 文件的工具,但 pandas 有更新的版本
  • 表结果输出到 ascii、csv 和 html

9. 杂项模型

  • Sandbox:statsmodels 包含一个处于不同开发阶段代码的沙盒目录,它不被认为是“可测试的生产就绪代码”。这包括,除其他外:
  • 广义矩估计量
  • 分部回归
  • scipy.stats.distributions 的各种扩展
  • 面板数据模型
  • 信息论度量

6. Pynance

Pynance 对于股票交易者来说将创造奇迹。它是一个开源的 Python 包,可以从股票衍生品中检索、分析和可视化数据。使用此库,您可以为机器学习模型生成信号和特征。要使此库正常工作,建议安装 numpy、pandas 和 matplotlib,或者预先安装其中任何一个。

安装命令

Pynance 依赖项

已测试

  1. matplotlib3.3
  2. pandas-datareader9.0
  3. NumPy19.5
  4. mplfinance12.7a5
  5. Pandas2.1
  6. Python9.1

PyNance 也可以与不同版本的 Python 和 Python 包一起使用。要检查它是否与您的兼容,只需运行数据检索的单元测试,然后尝试使用您检索到的测试数据绘制一些图表。

pynance.options 模块的其他依赖项

  1. html5lib999
  2. lxml4.2
  3. BeautifulSoup43.2

7. Zipline

如前所述,Zipline 是最常用的开源 Python 工具,用于回测和实时交易。它主要用于算法交易。它也由 Quantopian 维护和开发。这个算法模拟器库可以模拟各种费用剪切、交易和滑点。该库具有可用性,并支持其他用于数值分析的 Python 库。

由于其易于访问、易于使用以及充足的科学库(如 Pandas、NumPy、PyAlgoTrade、Pybacktest 等)的存在,Python 已成为金融交易领域开发人员最受欢迎的语言之一。

Python 对于交易频率较低/中等的自动化交易来说是一个绝佳的选择,即对于持续时间不到几秒钟的交易。它有许多可以连接的 API/库,使其成为理想的选择,成本更低,并允许对不同交易想法进行更大的探索性开发。

由于这些原因,Python 拥有非常活跃的用户在线社区,他们共享、转发并评审彼此的工作或代码。最受欢迎的在线回测系统之一是 QuantConnect。

QuantConnect 使用 C# 和 Python。它以提供大量历史数据而自豪。QuantConnect 自 2015 年以来一直支持与 Interactive Brokers 的实时交易。

Zipline 是一个用于交易应用程序的 Python 库。它是一个事件驱动的系统,支持回测和实时交易。

在本文中,我们将学习如何安装 Zipline,然后如何实现移动平均交叉策略并计算损益、投资组合价值等。

安装命令

Zipline 的优点

  • 便利性
  • Zipline 是“自带电池”的,因为许多常用指标(如移动平均和线性回归)都可以直接从用户编写的算法中访问。
  • 历史数据输入和绩效指标输出基于 Pandas DataFrame,可以很好地融入现有的 PyData 生态系统。
  • matplotlib、scipy、statsmodels 和 sklearn 等绘图和机器学习库支持构建、分析和可视化先进的交易系统。

8. Quandl

任何 Python 库列表都不应该缺少 Quandl。这是最大、最强大的市场,汇集了现代格式的金融、经济和另类数据,供金融分析师使用。它是一个由 NASDAQ 开发的平台,旨在帮助对冲基金等专业人士及时了解市场动态。Quandl Python 模块可以直接将金融数据提取到 Python 中。

Quandl 的缺点和优点是什么?

优点

  • Quandl 提供海量数据(超过 2000 万个数据集)。
  • 所有数据集都可以直接以任何首选格式下载。
  • Quandl 上的所有数据集都可以通过相同的 API 访问,无论最初发布数据的人是谁,也无论是什么格式。
  • 数据是透明的。
  • 数据集易于查找和清理。
  • Quandl 的一些部分是免费的,对所有人开放。
  • 每周都会添加新数据。
  • Quandl 可用于多种项目(Excel、Python、R、Ruby、MATLAB…)
  • 您可以使用 Quandl 出售您的数据。

缺点

  • 许多更奇特的数据集不是免费的。
  • 在构建分析或查找信息时,他们提供的支持有限。
  • 对新手不太友好。
  • 它们不提供实时或延迟的股票价格数据。
  • 它们没有专业安全列表。

安装命令

总而言之,Python 凭借其强大的库和有用的工具,正在改变金融行业的格局。金融领域还使用了许多其他库,但其中大多数都基于流行的库 Pandas 和 Numpy。Python 在科技行业的应用是许多初创公司的原因。预测市场价格、预测回报、风险分析和交易对于金融数据科学家来说是一项艰巨的任务,而 Python 库和工具简化了这些任务。