短いバージョン:実現のリストによって与えられる2つの確率変数を最も効率的に表現して追加する方法は?
やや長いバージョン: ワークプロジェクトの場合、それぞれが値のリストによって与えられるいくつかの確率変数を追加する必要があります。たとえば、ランドの実現。var。Aは{1,2,3}であり、Bの実現は{1,6,7}です。したがって、私が必要としているのは、A + Bの分布、つまり{1 + 5,1 + 6,1 + 7,2 + 5,2 + 6,2 + 7,3 + 5,3 + 6,3 + 7 }。そして、さまざまな確率変数(C、D、...)に対して、この種の加算を数回行う必要があります(この加算数をCOUNTと表記します。COUNTは720に達する可能性があります)。
問題: Aの各実現とBの各実現を合計するこの愚かなアルゴリズムを使用すると、COUNTでは複雑さが指数関数的になります。したがって、各rvが3つの値で与えられる場合、COUNT=720の計算量は3^720〜3.36xe ^ 343であり、計算するのに私たちの日々の終わりまで続きます:)実際にはそれは言うまでもありません人生では、各rvの長さは5000以上になります。
ソリューション: 1 /最初の解決策は、丸めに問題がないという事実を使用することです。つまり、実現の整数値を使用します。このように、私は各rvをベクトルとして表すことができ、実現に対応するインデックスでは、値は1になります(rvがこの実現を1回持つ場合)。したがって、rv Aと0から10までのインデックスが付けられた実現のベクトルの場合、Aを表すベクトルは[0,1,1,1,0,0,0 ...]になり、Bの表現は[0、 0,0,0,0,1,1,1,0,0,10]。ここで、これらのベクトルを調べてA + Bを作成し、上記と同じことを行います(Aの各実現とBの各実現を合計し、同じベクトル構造にコード化して、ベクトルの長さを2次複雑にします)。このアプローチの利点は、複雑さが制限されることです。このアプローチの問題は、実際のアプリケーションでは、Aの実現が[-50000、
2 /配列を短くするには、ハッシュマップを使用できます。これにより、理論スパンの重要な部分[-50K、 50K]は決して実現されません。ただし、ますます多くの確率変数の合計を続けると、実現の数は指数関数的に増加しますが、スパンは直線的にしか増加しないため、スパン内の数の密度は時間の経過とともに増加します。そして、これはハッシュマップの利点を殺してしまいます。
したがって、問題は、この問題を効率的に行うにはどうすればよいかということです。このソリューションは、すべての分布が経験的に与えられ、通常の分布とは異なり、式が役に立たず、シミュレートすることしかできない電力取引でVaRを計算するために必要です。
数学を使用することは、私たちの部門の半分として最初の選択肢と見なされていました。数学者です。ただし、追加するディストリビューションの動作は悪く、COUNT=720は極端です。より可能性が高いのは、毎日のVaRにCOUNT=24を使用することです。追加する分布の悪い振る舞いを考慮に入れると、COUNT = 24の場合、中心極限定理はあまり厳密には成り立たなくなります(SUM(A1、A2、...、A24)の分布は通常に近くなりません)。考えられるリスクを計算しているので、できるだけ正確な数値を取得したいと思います。
使用目的は次のとおりです。ある操作から1時間ごとにcasflowが発生します。1時間のキャッシュフローの分布はrvAです。次の1時間は、rv Bなどです。そしてあなたの質問は、99%のケースで最大の損失は何ですか?したがって、これらの24時間のそれぞれのキャッシュフローをモデル化し、これらのキャッシュフローを確率変数として追加して、1日全体の総キャスフローの分布を取得します。次に、0.01分位数を取得します。