跳转到主要内容

金融市场最佳 Python 工具

Saeed Amen
Saeed Amen
Founder of Cuemacro

如今,在整个金融市场上都可以感受到Python的数据科学优势。Saeed Amen带我们领略了iOS专用的Python编辑工具和库——“ Pythonista”。

本文亮点

  1. Python在金融市场上的重要性日益提高,反映在庞大的数据科学库生态系统,例如NumPy或pandas。
  2. 许多基金用Python进行金融市场建模。JP Morgan和Bank of America等银行也托管了广泛基于Python的基础架构。
  3. Refinitiv提供Python API,允许用户从任何内部或第三方应用程序无缝访问Eikon数据,并与Python库集成。

对于紧盯金融数据的人士而言,过去的情况是交易员只会用Excel。虽然量化用户可能已经使用MATLAB来完成更复杂的任务,但Excel在处理较小的数据集时表现得很好。

处理较大的数据集时Excel显示出了局限性,即使可以通过使用VBA在某种程度上减少这种限制。如今,开源编程语言R和Python在金融市场上取得了重大进展。

Python是一种可用于Web开发和数据科学等任务的多用途语言,由于其在人工智能和机器学习中的作用而得以广泛应用。

它相对容易学习,并且用户可以访问大量在线社区以获取帮助。

现在,许多基金都广泛使用Python对金融市场进行建模,其中包括著名的量化公司AHL。大型银行(例如JP Morgan和美国银行)也拥有广泛的基于Python的基础构架。

Refinitiv提供了易于使用的Python API,允许用户从任何内部或第三方应用程序无缝访问Eikon数据,并与Python库集成。

将市场数据接入应用程序后,您需要对其进行分析。

我发现Python对于分析金融市场非常有价值,无论是回溯测试交易策略还是任何其他形式的数字运算。

使用finmarkepy回测外汇交易策略

Python与pandas

Python越来越重要的主要原因是其庞大的数据科学库生态系统。包括众所周知的库,例如NumPy和pandas,分别用于处理矩阵和时间序列。

在机器学习方面,有scikit-learn(一种用于Python的机器学习库)。最近几年,诸如TensorFlow(来自Google)和PyTorch(来自Facebook)也已非常流行。

使用scikit-learn进行网络分析以识别2019年外汇交叉汇率之间的关系

然而,这些并不是Python数据科学家唯一使用的工具。实际上,有很多针对金融市场的鲜为人知的Python工具,它们同样价值非凡。

Python的一个很棒的使用场景是文本分析,以及诸如文本匹配和替换之类的功能。最重要的是,有许多自然语言处理(NLP)库。

其中包括最经典的自然语言处理 Python库NLTK。TextBlob也是基于NLTK封装的一个库,根据我的经验,它更易于使用。还有一些更新更快的库,例如spaCy。

使用spaCy识别已命名实体

令Python加速的方法

尽管Python比许多其他语言更容易编写,这也是令它流行的原因之一。但在执行过程中可能会很慢。即便专门为它量身定做的Pythonista也是如此,必须承认这一点。

幸运的是,我们可以借助许多解决方案来使Python代码运行更快。我们可以使用NumPy进行向量化处理,从而加快许多数学计算的速度。

另一种选择是使用Cython编写类似Python的代码,然后将其转换为C语言代码,这可以显着加快Python中的循环计算。

还有许多用于并行化的Python库,可以帮助改善I / O绑定的进程,例如线程库。对于受CPU约束的进程,标准的多处理器库也是一个起点。

实际上,可以使用更高级别的库,例如Concurrent.futures,asyncio和Joblib,它们为较低级别的线程和多进程处理库提供了更方便的简化抽象。

跨机拆分任务

为了在分配任务方面具有更大的灵活性,Celery是一个很好的解决方案,我经常使用这一解决方案。它在配置方面具有足够的灵活性,并且可以在多台计算机之间拆分任务。

Celery使用消息代理(例如Redis)在各工作人员之间进行通信。主要问题是Celery的学习曲线可能很陡峭,需要花一些时间来学习各种技巧才能使其高效运行。

鉴于金融市场中时间序列的普遍性,pandas是最常用的库。但是,pandas有时可能会受到限制,尤其是当使用大于内存的大型数据集时,这迫使用户将任务拆分成较小的批次。此外,它也不总是能利用现代多核CPU提供的并行优势。

可视化和Python工具

可视化是您向他人展示研究结果的关键。Python堆满了各种可视化工具。如Matplotlib,它是SciPy的一部分。

用vaex可视化外汇中间价直方图

像Plotly这样的较新工具现在也非常流行,它们提供了一种简单的方法来创建交互式的Java图表,所有这些都可以从Python中获得。Plotly还是跨平台工具,可以通过其他语言(包括R)来实现。

另一个类似的基于JavaScript的图表库是bokeh。我还写了一个开源封装器Chartpy,创建了一个统一的API用于Matplotlib,Plotly和bokeh。还有许多Python工具可用于处理金融市场数据。

在开始构建特定功能之前,通常值得在GitHub上搜索一下,以确保您不会重复劳动。无论是机器学习,文本分析还是时间序列分析,都有可能找到你所需要的代码。