我希望这不会关闭,因为它与我无法弄清楚的算法有关(它也很长,因为我对它是如何完成的感到很困惑)。基本上很多年前,我曾经在一家共同基金工作,我们使用不同的工具来选择优化投资组合以及对冲现有投资组合。我们将获取这些结果并进行自己的修改,然后将它们出售给客户。在我的公司缩小规模后,我决定尝试一下(创建软件并包括我的自定义),但我不知道如何为软件实际生成组合。
经过 6 个月的尝试,我接受了我的方法是不可能的。我试图使用 Knuth 书中的组合算法,并bit
尝试在纽约证券交易所(5,000 多只股票)上找到所有可能的投资组合(我将其限制为 30 只股票)。但根据与我交谈过的每个人的说法,这将花费我数十亿年才能获得一天的结果(对我来说,在 GPU 上我在 2 天的直接处理后停止了它)。
那么我错过了什么?我们将输入我们的风险承受能力和市场观点(股市增长预期、通胀预期、联邦基金预期等),它将在几秒钟/几分钟内为我们提供理想的投资组合(理论上......)。拥有数千种可能性和数万亿种可能的股票权重组合,他们如何能够如此快速(甚至根本)计算结果?作为系统管理员,我知道我们每天都会下载一个文件(小于 100 mb 并加载到 mssql 数据库中可能只是市场数据..所以我们并不是完全有可能。使用我上面的方法我会得到 5 gig在做我的 Knuth 版本的几分钟内提交文件 s 组合算法)和应用程序脱机工作(所以它一定是在台式机/笔记本电脑 cpu 上本地而不是在某个地方的大型超级计算机上运行,并且需要一两分钟才能运行..15 分钟是全球基金最长的包括世界上所有的股票)。之所以如此令人困惑,是因为他们的工作需要整个基金的相关性(我不认为他们只是发送了他们预先计算的顶级股票,因为每个人都得到了不同的结果)。因此,如果我想要一只 30 只股票基金,它给我 2% 的回报,并且与市场呈负相关,并且 60% 被对冲,那么软件如何能如此迅速地从数十亿种可能性中生成该投资组合呢?请注意,我不是在问数学或财务部分,我
那么这是如何以编程方式完成的呢?我开始相信他们没有使用 Knuth 的组合算法来生成所有可能性,但他们的结果似乎不是随机选择的,并且单独选择股票似乎错过了相关性部分。这么多的投资软件怎么会做这样的事情?