龙空技术网

python金融建模

甘道实研 208

前言:

今天各位老铁们对“python建模”大致比较关心,姐妹们都想要了解一些“python建模”的相关知识。那么小编在网上网罗了一些对于“python建模””的相关内容,希望姐妹们能喜欢,你们快快来学习一下吧!

Python 编程语言的流行至少部分归功于它提供的多功能性。除了 Web 和应用程序开发中的大量用例之外,Python 还提供了用于构建和实现任何类型的科学或数学模型的工具,无论数据的来源或类型如何。这种多功能性是由广泛的标准库实现的,该库提供了一系列旨在增强语言功能和可移植性的工具。对于更具体的应用程序,Python 包索引 (PyPI) 提供了额外的包,这些包扩展了 Python 的功能以满足每个领域的需求。

由于这些原因,Python 已被证明是开发新型金融技术的强大工具。从处理原始数字到创建美观但直观的图形用户界面 (GUI),有无数软件包可以帮助用户构建自己的财务模型。在本文中,我将通过一些基本示例重点介绍我的 10 大金融和金融建模软件包。所有这些包(quantlib 除外)都在 ActiveState 平台上可用,以包含在您的运行时环境中。

最有用的金融 Python 包

金融技术领域广阔,涵盖从保险、贷款和交易到电子银行和其他支付服务的方方面面。本文重点介绍特定于量化金融的应用程序,这些应用程序需要诸如数据导入和转换、时间序列和风险分析、交易和回测、excel 集成和数据可视化等编程任务。我采样了一些最好的包来完成每项任务。

#1 NumPy

从根本上说,所有财务模型都依赖于处理数字。我在列表中的前几个包提供了这样做的框架。第一个是 NumPy。NumPy 是 Python 中科学和数学计算最重要的包。它不仅将 n 维数组和矩阵引入 Python,还包含一些基本的数学函数来操作这些数据结构。本列表后面提到的大多数用于金融的高级 Python 包都依赖于 NumPy。

例如,要创建两个 2×2 复数矩阵并打印总和:

import numpy as npa = np.array([[1+2j, 2+1j], [3, 4]])b = np.array([[5, 6+6j], [7, 8+4j]])print(a+b) 

输出:

[[6.+2.j   8.+7.j] [10.+0.j 12.+4.j]]

并取其中之一的复共轭:

 np.conj(a) 

可以在此处找到有关如何使用 NumPy 的更多信息。

#2 SciPy

NumPy 包提供了用于操作和存储数据的基本数学结构。但是为了基于这些数据构建复杂的模型,需要一个包含更高级统计工具和操作的存储库。进入 SciPy。该软件包提供了对构建任何统计模型所需的高级科学计算至关重要的函数和算法。这些包括用于插值、优化、聚类、转换和数据集成的算法。在执行任何类型的数据分析或构建任何类型的预测模型时,这些操作都是必不可少的。

为了演示插值,我首先使用 NumPy 用任意函数创建一些数据点,然后比较不同的插值方法:

from scipy.interpolate import interp1dimport pylabx = np.linspace(0, 5, 10)y = np.exp(x) / np.cos(np.pi * x)f_nearest = interp1d(x, y, kind='nearest')f_linear  = interp1d(x, y)f_cubic   = interp1d(x, y, kind='cubic')x2 = np.linspace(0, 5, 100)pylab.plot(x, y, 'o', label='data points')pylab.plot(x2, f_nearest(x2), label='nearest')pylab.plot(x2, f_linear(x2), label='linear')pylab.plot(x2, f_cubic(x2), label='cubic')pylab.legend()pylab.show() 
#3 pandas

NumPy 和 SciPy 奠定了数学基础。另一方面,panda 的包建立了一个直观且易于使用的数据结构,一个 DataFrame,专门用于分析和模型构建。它基于 NumPy 引入的数组,并针对表格、多维和异构数据进行了优化。最常见的操作,例如 groupby、加入、合并或填充、替换和输入空值,可以在一行中执行。此外,该包还提供了从各种标准格式导入数据的功能,以及其他用于快速绘图、检索基本统计数据或输出数据的功能。

要创建数据帧:

import pandas as pddf_1 = pd.DataFrame({'col1': [1,2], 'col2': [3,4]}) 

并将两个数据帧连接在一起:

df_2 = pd.DataFrame({'col3': [5,6], 'col4': [7,8]})df = pd.concat([df_1,df_2], axis = 1) 

输出:

    col1   col2    col3    col40      1      3       5       7 1      2      4       6       8

进行简单的过滤操作,提取满足逻辑条件的行:

 df[df.col3 == 5]   

可以在此处的文档中找到更多示例。

# 4 statsmodels

SciPy 提供了一个统计工具库,允许用户构建模型,而 Pandas 使其易于实现。statsmodels 包通过对不同统计模型进行更高级的测试来构建在这些包上。每个估计器的结果统计和诊断的广泛列表可用于任何给定模型,目的是为用户提供模型性能的全貌。结果根据现有的统计包进行测试,以确保它们是正确的。

例如,我导入一个内置数据集:

import numpy as npimport statsmodels.api as smrand_data = sm.datasets.randhie.load(as_pandas=False)rand_exog = rand_data.exog.view(float).reshape(len(rand_data.exog), -1)rand_exog = sm.add_constant(rand_exog, prepend=False) 

并使用泊松模型拟合数据集:

poisson_mod = sm.Poisson(rand_data.endog, rand_exog)poisson_res = poisson_mod.fit(method="newton")print(poisson_res.summary()) 

输出应如下所示:

更多信息可以在这里找到。

# 5 Quandl

到目前为止,我列出的包对于所考虑的数据类型是不偏不倚的。当然,在考虑财务模型时,我们需要财务数据。这就是 Quandl 出手相救的地方。Quandl Python 模块使用户可以访问从中央银行、政府、跨国组织和许多其他来源收集的大量经济、金融和市场数据。大多数原始数据集在注册时可以免费访问(您需要一个 API 密钥),更高级和更深入的数据集需要付费使用。

可以在此处找到包文档。

#6 zipline

Zipline 是一个将统计信息、数据结构和数据源联系在一起的包。它是一个强大的 Python 算法交易库,它为 Quantopian 提供支持,这是一个用于构建和执行交易策略的免费平台。来自 Quandl 的数据很容易导入,自定义算法也很容易设计、测试和实现。这包括算法回测和实时交易。基本算法如下所示:

from zipline.api import order, record, symboldef initialize(context):    passdef handle_data(context, data):    order(symbol('AAPL'), 10)    record(AAPL=data.current(symbol('AAPL'), 'price')) 

我们从 zipline 中导入 order、record 和 symbol 函数,以构建记录 Apple 股价的算法。有关算法的更多示例,请参阅文档。

# 7 pyfolio

在 zipline 中设计和测试算法后,pyfolio 包提供了一种生成包含性能统计信息的撕样的简单方法。这些统计数据包括年/月回报、回报分位数、滚动贝塔/夏普比率、投资组合周转率等等。要在单个库存上生成样本撕样:

import pyfolio as pfstock_rets = pf.utils.get_symbol_rets('FB')pf.create_returns_tear_sheet(stock_rets, live_start_date='2015-12-1') 

输出将是一系列包含性能指标的表格和图表。

该文档还有一些更详细的示例。

该文档还有一些更详细的示例。

#8 TA-Lib

接下来的两个包是使用 zipline 和 pyfolio 的替代方案。第一个是技术分析库,或简称为 TA-Lib。该项目是用 C++ 编写的,但存在 Python 的包装器。与 zipline 一样,TA-Lib 提供了常见的金融工具,例如重叠研究、动量指标、交易量指标、波动率指标、价格转换、周期指标、模式识别和纯统计功能。

#9 QuantLib

zipline 和 pyfolio 的第二个替代品是 QuantLib。与 TA-Lib 类似,QuantLib 是用 C++ 编写的,然后导出到 Python。QuantLib 项目旨在创建一个免费的开源库,用于建模、交易和风险管理。该软件包包含用于设计和实施高级算法的工具,其中包括市场惯例、收益率曲线模型、求解器、PDE、蒙特卡罗等功能。

该项目已经存在了将近 20 年,并且有大量的文档。

# 10 Matplotlib

上述金融python包建立了金融数据源、金融数据的优化数据结构以及统计模型和评估机制。但没有一家提供最重要的金融建模 Python 工具之一:数据可视化(本文中的所有可视化均由 matplotlib 提供支持)。

可视化不仅对于理解财务数据中的趋势很重要,而且对于向非技术人员传达见解也很重要。Python 中有多个数据可视化包,每个包都有正面和负面(参见我的文章),但最容易实现金融建模的是 matplotlib。这主要是因为这个列表中的许多包已经依赖于 matplotlib。此外,文档丰富,语法简单明了。

结论

在本文中,我挑选了 10 个最有用的金融 Python 包。有趣的是,自上次 ActiveState 对金融 Python 包进行汇总(2010 年)以来,许多顶级包都发生了变化,但 numpy、scipy 和 matplotlib 仍然是关键。

要开始使用此列表中的软件包,请创建一个免费的 ActiveState Platform 帐户,然后下载我们的“Top 10 Finance Packages”版本。该版本包含一个 Python 3.8 版本和本文中列出的大多数软件包,因此您可以自己测试它们。

安装环境的最简单方法是首先安装 ActiveState 平台的命令行界面 (CLI),即状态工具。

如果你在 Linux 上,你可以使用 curl 来安装状态工具:

sh <(curl -q )

安装状态工具后,只需运行以下命令即可下载构建并自动将其安装到虚拟环境中:

state activate Pizza-Team/Top-10-Finance-Packages/

所有这些包(quantlib 除外)都在 ActiveState 平台上可用,以包含在您的运行时环境中。ActiveState 平台的主要优势之一是它的“按需构建环境”功能,允许您从源代码构建包含 C 代码的包,而无需设置您自己的环境或源您自己的编译器。如果代码来源对您的组织有价值,ActiveState 平台可以帮助您减少花费在采购和构建运行时上的时间和资源。

标签: #python建模