問題タブ [quadprog]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - 一般化された目的関数を使用してポートフォリオの最適化を解決する方法は?
ポートフォリオの分散を最小化し、将来の予想配当を最大化する最適な組み合わせを見つけたいと考えている 5 銘柄のポートフォリオがあります。後者はアナリストの予測によるものです。私の問題は、最小分散問題を解く方法は知っていますが、二次形式を quadprog の目的関数の正しい行列形式に入れる方法がわからないことです。
標準の最小分散問題は読み取ります
Min! ( portfolio volatility )
ここr
で、5 株の 252 日間のリターンd
、予想される年間配当利回り (ここでfirm_A
1 %をfirm_B
支払い、2 %などを支払います)
そして私はそれを次のようにプログラムしました
明らかに、r
標準的な通常のリターンであるため、各銘柄のウェイトは約 20% になります。
Q1:
firm_A
が 1 の配当、2 の配当などを支払うという事実をどのように説明できますfirm_B
か?
新しい目的関数は次のようになります。
Max! ( 0.5 * Portfolio_div - 0.5 * Portfolio_variance )
しかし、それをハードコードする方法がわかりません。ポートフォリオ分散は簡単に入れることができましたDmat
が、新しい目的関数には次のようにPortfolio_div
定義された要素があり、Portfolio_div = w * d
どこw
に 5 つの重みがあります。
どうもありがとう。
EDIT:
問題のより高いレベルの説明を追加することは理にかなっているかもしれません: 上記のコードで最小分散最適化を使用できます。ポートフォリオ分散を最小化することは、分散共分散行列Dmat
(次元 5x5) の重みを最適化することを意味します。ただし、最適化に追加の部分を追加したいと思います。これは、被除数にd
重みを掛けたものです (したがって、次元は 5x1 です)。にも同じ重みが使用されDmat
ます。
Q2:
d
ベクトルをコードに追加するにはどうすればよいですか?
EDIT2:
答えは単に使用することだと思います
負の逆数を最小化することで、期待される配当を最大化します。
Q3:
それが正しいかどうか誰か教えてください。
r - r solve.QP: 制約に一貫性がなく、解がありません
この問題の全体的な最小値を見つけようとしていますが、上記のエラーが発生する理由がわかりません。アセットの 5 つを正確な重みに設定し、他の 5 つを値の範囲内で最適化しようとしています。meq=5 オプションは使用しない方がよいでしょう。
r - solve.QP のエラー
基本的に、株式の超過リターン (R) と期待超過リターン (ER) を含む 2 つの行列があります。
次に、これらを組み合わせて、R の最初の行を削除し、ER の最初の行を追加して、新しい行列 R1 を形成します。
次に、R2 に対してこれを行います。つまり、R の最初の 2 行を削除し、ER の最初の 2 行と rbind します。
R1 から R47 までの n-1 個の新しい行列ができるまで、これを行います。
次に、cov()、つまり Var-Cov1 から Var-Cov47 を使用して、各 Return 行列の Var-Cov 行列を見つけます。
現在、quadprog を使用して資産配分を見つけようとしています。たとえば、次のようになります。
Var-Cov 行列が見つかった状態で solve.QP を実行すると、何らかの理由で次のエラーが発生します。
私は何が間違っているのか、あるいはなぜこれが機能しないのかさえ疑問に思っています。
scip - を使用した SCIP 混合整数二次計画法
ソースコード (C++) に含まれる SCIP を使用して MIQP を解決したいのですが、この FAQ エントリ以外にその方法が見つかりませんでした:
非線形目的関数は SCIP ではサポートされていないため、制約関数としてモデル化する必要があります。非二次非線形制約のサポートはまだベータ スタジアムにあり、残りの SCIP ほど堅牢ではないことに注意してください。非線形変数と小さな係数または大きな係数の境界が欠落していると、数値的な問題が発生しやすくなりますが、これは慎重にモデル化することで回避できます。
目的関数の式ツリーを構築することができました。私が知りたいのですが:
- MIQP を MINLP としてモデル化する必要がある場合、この制約関数のモデリングはどのように機能しますか? 上限は変更可能ですか?
- MIQP の特定の方法がある場合、それに関するドキュメントはどこにありますか?
r - solve.QP() $value が数値計算と一致しません
私は自分のモデルを監査していて、この矛盾が懸念されているため、このアルゴリズムについて質問があります。回答が必要です。
合計が 1 になる必要がある制約を使用して平均分散最適化を行っており、重みは指定した範囲内にある必要があります。私の入力は次のとおりです。
次に実行します:
問題は、最後のコマンドで FALSE を取得することです。これは丸めの問題ではなく、ほぼ 20% の誤差があります。
誰が問題が何であるか知っていますか?
python - 関数を最小化する最適なベクトルを見つける
行列を乗算するときに残差二乗和を最小化するベクトルを見つけようとしています。
私はscipyの最適化パッケージ(最小化機能を持っています)を知っています。ただし、私のコードには追加の制約があります。w のすべてのエントリの合計 (以下の関数を参照) は 1 に等しくなければならず、w のエントリは 0 未満であってはなりません。これを行うパッケージはありますか? そうでない場合、どうすればこれを行うことができますか?
w を最小化しようとしています:
これまでのところ、これは w の可能な値をループするための私の最善の試みですが、正しく機能していません。
r - 目的関数に a_ix_i^2 項がある二次計画法
二次プログラムに関して、次のような目的関数をどのように設定しますか
min ∑a_i (x_i )^2
パッケージ「quadprog」または「limSolve」のマトリックス形式で(このパッケージでは、マトリックス形式にする必要があるかどうかわかりません)?
これまでの議論から、二次項の乗算はありませんでした。