博客

【求职分享】

【笔试/面试】

自动化交易必备的10大Python库

Feb 01,2023

分享本文:

【概要】今天我们在这里分享一些对于自动化交易必备的 Python 库,供你在处理金融数据和自动交易时使用。现实中无论你需要做的交易模型或产品是什么样子,通常都有一个或多个 Python 库可以为你完成一些重要工作。因此,与其重新发明轮子,不如让我们看看哪些软件包可以提升你编写自动交易程序的效率。

今天我们在这里分享一些对于自动化交易必备的 Python 库,供你在处理金融数据和自动交易时使用。现实中无论你需要做的交易模型或产品是什么样子,通常都有一个或多个 Python 库可以为你完成一些重要工作。因此,与其重新发明轮子,不如让我们看看哪些软件包可以提升你编写自动交易程序的效率。

 

图片

 

我们这里的重点是 Python库, 如果你有其他建议,欢迎给我们留言互动。

 

我们把自动交易过程分为三个基本过程:处理(原始)数据、进行技术分析、最后评估的投资组合。但是可能有 100 多个步骤可以穿插在这个过程中,但作为一个起点,我们认为这是一个坚实且必要的起点。因为涵盖了实施策略的“之前”、“期间”和“之后”。如果你正在努力寻找更多步骤,不妨考虑下面这些步骤:数据收集、数据可视化、纸质交易、回测、机器学习、投资组合管理……等等。

 

图片

 

数据处理

 

我们在这里假设你在编写交易策略之前会收集数据。实时市场数据、历史数据、交易情绪:都属于这一类。在你执行任何类型的操作之前,你需要数据来进行操作。但你不仅限于市场数据,你还可以例如从财经新闻网站上抓取头条新闻来进行情绪分析。无论你从哪里获取数据,你都会注意到你的来源通常不会以你需要的格式呈现数据:所以我们需要数据处理工具。

 

01

Pandas

 

图片

 

如果没有提到 Pandas,任何用于财务分析(或任何类型的数据驱动的工作)的 Python 库列表都是不完整的。它是一个强大的数据处理工具,可以处理 Series(一维)和 DataFrames(二维)的数据结构。它可用于智能索引数据、合并和连接不同的数据集,甚至执行计算。

 

02

NumPy

 

图片

 

NumPy 或 Numerical Python 库是 Python 中的科学计算包。具体来说,NumPy 提供了用于线性代数、傅里叶变换和随机数生成的函数。它被广泛使用是因为它利用了矢量化,这意味着它可以将可能需要 1000 个计算周期的计算转换为需要 250 个计算周期的计算。作为开发人员,我们一直在寻求尽可能提升计算效率的能力。

 

03

SciPy

 

图片

 

SciPy 是建立在 NumPy 之上的科学库——它包括用于统计、优化、集成、线性代数等的模块。类似于 NumPy,但具有更多功能(这是有代价的:计算速度较慢)。

 

04

Matplotlib

 

 

 

Matplotlib 库可用于在 Python 中创建静态、动画和交互式可视化。你可能希望在财务分析中可视化数据的原因有一百万个。例如,你可能希望根据 S&P500 等指数衡量一只股票(或一篮子股票)的表现。或者,你可能想要构建一个简单的每日股票收益直方图,以确定(直观地)它们是否遵循正态分布。当然,这需要通过统计测试来支持,这可以通过 statsmodels 库(后面会介绍)来完成。

 

你会注意到上述四个库通常在项目中同时使用,并且很可能在你的用例中会出现相同的情况。它们无缝集成。在这四个包之上构建了许多额外的小众包,例如:PyNance。

 

让我们看一个小例子,说明如何将所有四个库用于简单的收益可视化(我们绘制特斯拉每日收益与正态分布曲线的直方图):

 

图片

 

此脚本将返回以下直方图:

 

 

显然,我们没有足够的数据点来断定特斯拉的每日收益是否服从正态分布。我们希望这个小示例能向你展示如何使用这些数据操作包。

 

技术分析

 

你的策略可能会或可能不会采用技术分析。如果你以某种方式使用历史价格数据来预测未来的价格走势,那么这属于技术分析。如果你不是,请不要担心,对于自动交易策略这是没有必要的(但可能会有所帮助,所以请随意决定是否使用)。

 

05

TA-Lib

 

图片

 

TA-Lib 或技术分析库可用于通过计算众所周知的技术指标(如加权移动平均线 (WMA) 或相对强度指数 (RSI))对财务数据进行技术分析。它还可以识别烛台图案,例如inverted hammer或homing pigeon,仅举几例。这些指标可以作为你交易策略的买入或卖出信号。

 

06

Statsmodels

 

图片

 

Python 已经包含一个内置的统计模块,但 statsmodels 包可用于更深入的统计分析。假设你想为历史价格数据构建一个 ARIMA 模型以预测未来的价格走势,那么这个库将是使用的工具。或者,你的用例可能更简单,例如在回归后对残差的正态性进行 Jarque-Bera 检验。

 

07

PyStan

 

图片

 

贝叶斯推理用于财务建模以评估回报可预测性和战略风险(除其他外)。PyStan 是适用于 Python 的包,用于执行贝叶斯推理。请注意,你需要使用基于 C++ 的特定领域语言(称为 Stan),这使得该包更难使用。但是,它非常强大,因为它允许你执行高级统计建模、分析和预测。

 

08

f.fn()

 

图片

 

ffn 是一个扩展 Pandas、NumPy 和 SciPy 的库,包含量化金融框架中经常使用的函数。例如,你可以使用它来计算给定 DataFrame 回报的风险平价权重。如果你不熟悉风险平价,它是一种投资管理技术,可确定如何在投资组合中分配风险

 

投资组合评估

 

一旦你的策略完成并实施,重要的是衡量其表现,不仅要通过回报,还要通过计算,例如 与之相关的风险。投资组合分析不是一次性的:优秀的投资者会定期评估他们的投资组合(或自动化流程)并实施必要的改变,例如重新平衡或购买额外的股票以适当分散投资。

 

09

Empyrical

 

图片

 

Empyrical 可用于计算众所周知的绩效和风险统计数据,例如夏普比率、alpha 和 beta。这些指标可能显示投资组合相对于市场的表现,并表明是否应该进行结构性改变。这是一个由现已解散的 Quantopian 发起的开源项目,但是 GitHub 存储库仍然有些活跃。

 

10

PyFolio

 

图片

 

PyFolio 与 Empyrical 非常相似,因为它可以创建反映性能和风险分析的图像。它通过所谓的撕裂表来做到这一点,其中包括投资组合回报的稳定性、最大回撤和峰度等指标。

 

这十个 Python 库和包应该为你的自动交易之旅提供一个良好的起点。本期的分享就到这里,欢迎留言互动,谢谢阅读,希望能帮到你。

写一篇评论

发表评论
%{tishi_zhanwei}%

网站有漏洞

Aug 31,2023

1111111111112'

Aug 31,2023

1111111111112

Aug 31,2023

111111111111

Aug 31,2023

111111111111

Aug 31,2023

><000000'"/\

Aug 31,2023

< 12 >