Java金融场景编码解决方案



给定一组具有以下属性的库存债券:

price, asset class, credit rating, quantity
such as $60.46, Corporate, AA, 20
Asset class: corporate, sovereign, municipal
Credit Rating: AAA, AA, A, BBB, BB, B

给定dealId及其总价:

DealId, Price
such as: D1, $4000

给定dealId及其最小资产类别要求:

DealId, min Asset Requirement
such as D1, 20% Sovereign
D1, 60% Corporate
D2, 50% Municipal

给定dealId及其最小信用评级要求:

DealId, min Credit Requirement
such as D1 80% AAA
D1 20% AA

从库存来满足分配债券交易,这样您就可以尽可能减少你借的债券。

谁能解释一下我们该如何解决上述问题?

这看起来像是多维背包问题的一个版本,您希望将资产优化分配到特定的桶/需求。

您有一个需求列表(资产类别需求&评级需求),你需要满足。它们基本上告诉你是否可以将给定的债券分配到需要填充的"桶"中。

你可以用一种非最优的方式解决这个问题,用贪婪算法,你只分配符合条件的第一个资产。所以你看一遍要求,然后找第一个符合标准的键。你会继续下去,直到你用完所有的要求或约束来满足它们。这叫做启发式。它会很快产生解决方案,但很可能不是最好的。

这将产生一些解决方案。你可以通过成本函数来衡量它有多好。成本函数是你还需要从市场上获得多少债券来满足剩余的需求。

如果你想要更好或最好的解决方案,这就变成了一个难题。线性规划算法可以提供帮助。Google OR-tools是运行这种优化的成熟库之一。

你不会相信有多少银行和金融公司使用"愚蠢"的算法,以及他们因不采用更聪明的策略而损失了多少。

最新更新