65.9K
CodeProject 正在变化。 阅读更多。
Home

是时候改进您的 Excel 财务模型了

starIconstarIconstarIconstarIconstarIcon

5.00/5 (3投票s)

2020年8月17日

CPOL

6分钟阅读

viewsIcon

4912

如何通过使用 Eikon Data API (DAPI)、Python 和 xlwings 自动化计算,让 Excel 构建的财务模型提供更快、更深入的洞察?

  1. 使用 Excel 构建的财务模型存在挑战。将实时数据输入基于 Excel 的模型并非易事,而且复杂的模型可能会受到 Excel 功能的限制。
  2. 用于 Python 的 Eikon DAPI 提供广泛金融工具的实时和历史数据。同时,xlwings 使高级用户能够用 Python 编写 Excel 宏和函数。
  3. Eikon DAPI、xlwings 和 Excel 协同工作,帮助数据科学家、量化分析师、交易员和开发人员构建更复杂的模型,以更快地获得独特、更深入的洞察。

如需更多数据驱动的洞察,请订阅 Refinitiv Perspectives 每周时事通讯

Excel 是金融专业人士不可或缺的工具。然而,它并非没有局限性,在某些情况下,复杂的 Excel 模型可能会导致 PC 或 Mac 运行速度大大降低。

在 Excel 中,大型数据集和数据透视表有时无法处理复杂的 Faça-dimensional 分析。Visual Basic for Applications (VBA) 似乎是一种过时的脚本语言,缺乏现代语言中可用的库。因此,从互联网复制粘贴代码片段是一种常见的解决方法。

Excel 中的版本控制也很麻烦。很难了解模型随时间的变化情况,除非我们在进行更改之前保存一个单独的副本,否则不可能回到模型的早期版本。

一种智能的 Excel 适应方法是使用Refinitiv Eikon DAPI 和 Python来增强电子表格工具,并部署 Refinitiv 合作伙伴 xlwings 来连接Python和 Excel。

让我们更仔细地看看这些工具,然后观察它们在实际应用中的功能。

Eikon DAPI:利用 Refinitiv API 识别符合波动率标准(相对于市场)的股票,以满足目标风险画像

Eikon DAPI Python 库

Eikon Data API 提供对实时和历史市场数据以及新闻头条的访问,所有这些数据都可在 Eikon 平台中获得。

在检索市场数据时,Eikon DAPI 支持不同的工具标识符:RIC、ISIN、IMO、PermID、OrgID 等。

在许多情况下,定价只是要求的一部分。DAPI 为许多工具提供相关新闻和财务报表,并且为了进行更深入的分析,DAPI 可以使用链式 RIC 来查找相关的期货和期权。

DAPI 和 Python 可用于简化模型。为了加快 PC 或 Mac 上的计算速度,我们可以将 DAPI 数据输入到 NumPy 等 Python 库中,对于大型数据集,其速度比 VBA 快 50 到 100 倍。

使用 xlwings 连接 Excel 和 Python

Eikon DAPI 是解决方案的核心,而xlwings充当 Excel 和 Python 之间的双向桥梁。这使我们能够用 Python 运行模型和分析,然后将结果输入到准备好的工作表中。

此解决方案提供了两全其美:由 DAPI 支持的更快的模型,以熟悉的 Excel 界面呈现。xlwings 甚至可以实时更新工作表,并结合 DAPI,它可以将 Excel 变成强大的报告引擎。

Eikon DAPI 实战

让我们使用 Eikon DAPI、xlwings 和 Python 来解决一个实际问题:通过历史模拟计算风险价值 (VaR)。

我们使用 VaR 来帮助在给定的置信水平下理解我们的市场敞口,并通过计算投资组合中每个工具的每日收益来计算 VaR。我们使用该收益来计算利润或亏损,具体取决于购买该工具的资本。

接下来,让我们将投资组合中所有工具的利润或亏损相加,并应用置信水平百分位数,以得出任何给定日期的资本风险。

此历史 VaR 计算依赖于大量历史数据。这些数据的可用性越高,计算出的 VaR 就越准确。值得一提的是,对于大型投资组合,手动在 Excel 中输入数据非常艰巨。

然而,使用 Eikon DAPI、xlwings 和 NumPy 等 Python 库可以简化 VaR 计算的生成。一旦程序到位,就很容易更改历史日期范围和投资组合构成。

要在 Python 中运行计算:定义投资组合、每个工具的资本支出、数据检索的开始日期和结束日期以及 VaR 置信水平,如下所示。

portfolio     = ['IBM', 'F', 'AMZN.O']
start_date    = '2019-01-01'
end_date      = '2020-04-10'
dollarValue   = 1000
varConfidence = 95

投资组合由 IBM、Ford 和 Amazon 组成。每个工具的价值为 1,000 美元。我们正在寻找 95% 置信度下的 VaR。

我们使用 Eikon DAPI 来检索这些历史数据

varDf = ek.get_timeseries(portfolio,
                          fields='*',
                          start_date=start_date,
                          End_date=end_date)

这一切足以获取投资组合中每个工具的所有市场数据。只需计算每个工具的每日收益和每日损益,然后在投资组合级别进行汇总。

当所有原始数据计算完成后,它被放入一个 Python 数据帧(在示例中命名为 'varDf')。然后,我们使用 NumPy 的 'percentile' 函数来计算 VaR。

var = np.percentile(varDf['Portfolio'], 100-varConfidence)

最后,我们可以将数据显示在 Excel 电子表格中,供投资组合经理进行分析。

wb = xw.Book()
wb.sheets[0]['A1'].value = 'Value at Risk 95%'
wb.sheets[0]['B1'].value = var
wb.sheets[0]['A4'].value = varDf

当我们运行程序时,将显示一个新的 Excel 工作簿,如下所示

通过添加几行 Python 代码,就可以从电子表格中读取原始投资组合信息,从而通过 Eikon DAPI 和 xlwings,在不到十二行代码的情况下,完成从 Excel 到 Python,再回到 Excel 的完整循环。

观看:Eikon Data API 入门

专注于 Excel 的优势

虽然在 Excel 中为大型投资组合计算 VaR 可能非常耗时,但我们可以结合使用 Eikon DAPI、xlwings 和 Python,快速将 VaR 计算结果导入 Excel。

通过解决 Excel 的局限性并专注于其优势,上述示例表明,在更改投资组合构成或日期范围后,可以轻松地重新运行模型。

更好的是,Python 代码比 VBA 更易于维护,并且可以进行版本控制,因此可以轻松跟踪更改。并且通过将模型代码存储在中央存储库中,就不再需要依赖运行在单个 PC 或 Mac 上的不透明 VBA 模型。

量化分析师、开发人员和分析师通常专注于在更短的时间内完成更多工作。要全面了解 Eikon DAPI 的功能,请先查阅技术产品文档、教程和API 库,其中包含涵盖多种用例的实际示例。

然而,使用 Eikon DAPI 来解决您自己的问题是了解其价值的最佳方式。开始之前,请联系我们获取免费的 Eikon 试用版(包括 DAPI)。

观看:如何生成您的 Eikon Data API App Key

© . All rights reserved.