问题描述
我一直在开发负责投资组合历史数据处理的 .NET 5 应用程序。它基本上通过运行后台服务来编排计算,该服务在处理结束时将数据写入 AWS aurora 内的 MysqL 5.7.12 数据库。
数据库建模由 4 个主表表示:3 个列是通过 REST API 从外部数据集请求数据写入的,1 个列是根据前 3 个表的数据计算和写入的。
由于应用程序处理大量数据,因此几乎所有计算都是通过使用数学技巧完成的,该技巧包括使用当前参考日期的数据以及前一天的数据。通过这样做,应用程序可以节省计算资源并提高性能。
但是,货币加权收益率计算不能通过使用这个技巧来完成,因为修改的迪茨方法需要自投资组合创建以来的数据。 >
澄清一下,之所以选择修正的迪茨方法是因为最常见的内部收益率计算不适合公司的财务需求。
所以,公式如下:
MWR = (InitialBalance - CurrentBalance - SUM(CashFlows_i)) / (CurrentBalance - SUM(Weight_i * CashFlows_i))
SUMS 均在日期间隔(从第一个日期到参考日期)和 Weight_i = ni/n 上定义,其中n = 现金流量表的长度。
获得 InitialBalance
和 CurrentBalance
不是问题,但与 CashFlows
相关的整个历史是。
强调,没有数学技巧可以仅使用参考日期及其前一天的数据来获取从 MWR_n 到 MWR_n+1 的数据,并且此外,每次应用程序处理新的一天时从整个历史记录中获取所有数据的操作也远非执行。
如何才能使应用程序能够在不影响性能的情况下计算 MWR?
自投资组合创建以来,在不构建定时炸弹的情况下获取数据的可能解决方案是什么(每次处理都会检索整个数据历史记录,因此随着时间的推移,需要更多数据)?
现在的公司通常如何使用改良迪茨法计算MWR?
提前致谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)