4

我希望这不会关闭,因为它与我无法弄清楚的算法有关(它也很长,因为我对它是如何完成的感到很困惑)。基本上很多年前,我曾经在一家共同基金工作,我们使用不同的工具来选择优化投资组合以及对冲现有投资组合。我们将获取这些结果并进行自己的修改,然后将它们出售给客户。在我的公司缩小规模后,我决定尝试一下(创建软件并包括我的自定义),但我不知道如何为软件实际生成组合。

经过 6 个月的尝试,我接受了我的方法是不可能的。我试图使用 Knuth 书中的组合算法,并bit尝试在纽约证券交易所(5,000 多只股票)上找到所有可能的投资组合(我将其限制为 30 只股票)。但根据与我交谈过的每个人的说法,这将花费我数十亿年才能获得一天的结果(对我来说,在 GPU 上我在 2 天的直接处理后停止了它)。

那么我错过了什么?我们将输入我们的风险承受能力和市场观点(股市增长预期、通胀预期、联邦基金预期等),它将在几秒钟/几分钟内为我们提供理想的投资组合(理论上......)。拥有数千种可能性和数万亿种可能的股票权重组合,他们如何能够如此快速(甚至根本)计算结果?作为系统管理员,我知道我们每天都会下载一个文件(小于 100 mb 并加载到 mssql 数据库中可能只是市场数据..所以我们并不是完全有可能。使用我上面的方法我会得到 5 gig在做我的 Knuth 版本的几分钟内提交文件 s 组合算法)和应用程序脱机工作(所以它一定是在台式机/笔记本电脑 cpu 上本地而不是在某个地方的大型超级计算机上运行,​​并且需要一两分钟才能运行..15 分钟是全球基金最长的包括世界上所有的股票)。之所以如此令人困惑,是因为他们的工作需要整个基金的相关性(我不认为他们只是发送了他们预先计算的顶级股票,因为每个人都得到了不同的结果)。因此,如果我想要一只 30 只股票基金,它给我 2% 的回报,并且与市场呈负相关,并且 60% 被对冲,那么软件如何能如此迅速地从数十亿种可能性中生成该投资组合呢?请注意,我不是在问数学或财务部分,我

那么这是如何以编程方式完成的呢?我开始相信他们没有使用 Knuth 的组合算法来生成所有可能性,但他们的结果似乎不是随机选择的,并且单独选择股票似乎错过了相关性部分。这么多的投资软件怎么会做这样的事情?

4

2 回答 2

3

这样的算法几乎肯定不会产生所有的可能性——正如你正确地观察到的那样,这是不切实际的。

然而,投资组合选择很容易用其他技术来完成,这些技术会给你一个很好的答案。最有可能的两个是:

  • 如果您对风险/回报做出简化假设,您可以在数学上求解最佳投资组合(请参阅http://en.wikipedia.org/wiki/Capital_asset_pricing_model了解一些数学)
  • 对随机样本投资组合进行变异/交叉操作的遗传算法将很快找到一个非常好的解决方案。您可以将其与蒙特卡洛风格的建模方法结合起来,以了解可能结果的范围。

就个人而言,我可能会建议遗传算法方法 - 虽然它在数学上不是那么纯粹,但它会给你很好的答案,并且应该能够很容易地处理你想要抛出的任何限制(例如投资组合中的最大股票数量)

于 2012-05-20T02:24:49.527 回答
2

现代投资组合理论本身就是一门学科,有诸如“现代投资组合理论和投资分析”之类的书籍,以及http://en.wikipedia.org/wiki/Modern_portfolio_theory的介绍。

获得可以实际解决的问题的一种方法是将其视为数学优化问题。如果你有一个向量,它给出了你购买的每只股票的数量,那么——在各种假设下——回报是这个向量的线性函数,风险是这个向量的二次函数。最大化给定风险的回报,或最小化给定回报的风险,是一个很好理解的数学问题,即使对于非常大量的股票 - http://en.wikipedia.org/wiki/Quadratic_programming

一个实际问题是,你得到的答案可能会告诉你购买市场上几乎所有股票的一小部分。我的猜测是,现实生活中的程序使用了一些不能保证完美答案的“秘诀”启发式,受制于您实际准备购买的股票数量的限制,但在实践中效果很好。返回完美答案似乎是一个难题 - 参见例如http://arxiv.org/ftp/arxiv/papers/1105/1105.3594.pdf

于 2012-05-20T05:11:05.657 回答