C# 如何计算历史股价的复利

C# 如何计算历史股价的复利,c#,math,C#,Math,从标准普尔指数诞生以来,我一直在研究它 1927年12月30日的初始开盘价为17.66 93年后的12月12日,价格收于3663.46点。(33950天) 总收益率为2064439.39%(总收益率=(收益/成本)*100) 我如何在复利的基础上计算呢?换句话说,我想说“平均复合年回报率是xx%,我认为这更有意义。” 更具体地说,我如何用c#计算它 我是一名程序员,不是数学专业的学生,因此如果我的数学概念太幼稚,我深表歉意。正如评论所说,你应该寻找你真正想要计算的东西 如果你只想要一个简单的复合

从标准普尔指数诞生以来,我一直在研究它

1927年12月30日的初始开盘价为17.66

93年后的12月12日,价格收于3663.46点。(33950天)

总收益率为2064439.39%(总收益率=(收益/成本)*100)

我如何在复利的基础上计算呢?换句话说,我想说“平均复合年回报率是xx%,我认为这更有意义。”

更具体地说,我如何用c#计算它


我是一名程序员,不是数学专业的学生,因此如果我的数学概念太幼稚,我深表歉意。

正如评论所说,你应该寻找你真正想要计算的东西

如果你只想要一个简单的复合年回报率,你只需要寻找第n个根。也就是说

在C#中,这将是

Math.Pow(3663.46 / 17.66, 1.0 / 93)

这将导致5.9%左右的年收益率令人失望。但我们没有考虑其他因素,如分配的股息。如果我们谈论股息,我们可能还想寻找股息再投资回报。这将需要更多信息,如每日收盘价和指数信托基金的股息记录。然后我们我想我们是否应该考虑时间的重量,或货币的重量回报。但是这超出了这个规划问题的范围。

你的第一步是查找如何计算你正在寻找的。提示:尝试“内部收益率”。“。然后,你需要决定你是按日、月还是按年的复利计算。你也可以连续计算它(在这种情况下,它只是一个指数)。试着让它先在Excel上工作(不使用内置函数)谢谢你,JackySky,我的收益率是按上面的方法正确工作的。现在,对于股息,我在一个数据库中有了相关时期的每日收盘价,以及年度股息信息。假设所有股息都被重新投资,我会在收益率计算中包括哪些内容?@GregGum,恐怕这将是一个更复杂的问题。一个人并不简单“买指数——我们可以买一只跟踪指数表现的指数基金,但最早的指数基金直到1975年才存在。如果你真的想计算自1927年以来投资于SPX的回报,你可能必须模拟买入指数成份股,然后逐季度再投资股息。索引组件也会不时变化,因此您也必须考虑到这一点。也许你的问题没有一个简单的解决方案。这只是一个研究,所以它不一定是完美的——也就是说,我假设人们可以从一开始就购买指数。我只有年度股息信息可供参考,因此我将尝试使用该信息每年进行再投资,看看结果如何。这主要是为了给我一个学习经验。我知道这不是小事,但编程方面对我来说很简单(专业的c#guy),但数学概念有点模糊,所以这有助于我学习。我很感激你的输入案例,任何人都想知道,我完成了这项研究,在1927年到2020年间,我在标准普尔得出的复合回报(包括股息再投资)是9.9%。有趣的是,这与市场总体回报的文章中通常提到的几乎相同。这是一个有趣的发现。谷歌搜索伯克希尔自成立(1965年)以来的年回报率为20.5%,甚至没有超过同期的标准普尔。我想早年真的拖累了它的表现?