博客
【求职分享】
【笔试/面试】
自动化交易必备的10大Python库
Feb 01,2023
分享本文:
今天我们在这里分享一些对于自动化交易必备的 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 库和包应该为你的自动交易之旅提供一个良好的起点。本期的分享就到这里,欢迎留言互动,谢谢阅读,希望能帮到你。
下一页
下一页