問題タブ [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 - 制約付きの R でのロング/ショート ポートフォリオの最適化
かなり一般的な (そして単純な) 最適化問題を解決したいと思いますが、これに関する投稿はないようです: ロング/ショート マーケット ニュートラル 最小分散最適化. 「R 疑似コード」での最適化の形式:
他の質問に欠けているこの質問の鍵は、「本のサイズ」の制約です。ロング/ショート最適化では、この制約が必要です。そうしないと、ナンセンスな結果が得られます。これは二次最適化問題ですが、制約の「abs」のために、非線形制約があります。「abs」制約を非線形制約から線形制約に変換するためのよく知られた(私が推測する特定のサークルでは)トリックがあります。方程式に補助変数を導入することでこれを行います ( lp_solve リファレンス ガイド: 絶対値でこの説明を参照してください)。
多因子リスクモデルの入力が与えられた場合に、最小のポートフォリオ分散の重みを計算するために、この関数を作成しました。
次の単体テストで呼び出します(多要素モデル入力のスプーフィング):
これにより、次のエラーがスローされます。
そのため、私の質問は、Rのsolve.QPでロング/ショート最適化にabs制約をどのように実装するのですか?
さらなる注意として、Paper Portfolio Optimization with Transaction Costsは、Matlab でこれを行う方法を示していますが、R の solve.QP では機能しないようです。
c++ - QuadProg++: QuadProgPP への未定義の参照。1 つの終了ステータスを返しました
初めて QuadProg++ ライブラリを使用しようとしています。インストールのすべての指示に従いました。私のシステムには Boost もあります。サンプル二次最適化問題を解く例を含む main.cc ファイルをコンパイルしようとすると、次のエラーが発生します。
誰かがすでにこのライブラリを使用している場合は、何か洞察を提供していただければ幸いです。私はこのライブラリを実際に使い始めたわけではないので、C++ と互換性のある二次計画法ソルバーを提供する優れたライブラリを提案できれば、それも素晴らしいでしょう。
c++ - QuadProg++ のボックス制約
現在、二重の問題を解決するために QuadProg++ を使用しています。この問題には、いくつかのボックス制約、つまり、変数が 2 つの値の間に収まるように制限する制約もあります。ただし、QuadProg++ には、そのような制約を組み込むことを可能にする規定はありません。等式と不等式の制約のみを取り込みます。一方、MATLAB の同等の二次計画法ツールには、ボックス制約を含めるための規定があります。
私が話していることを確認するには、次のリンクをご覧 ください。 http://www.mathworks.in/help/optim/ug/quadprog.html
基本的に、lb < x < ub に相当する制約があります。これを不等式制約として追加しようとしましたが、うまくいきません。制約が線形従属であるというエラーが発生します。ただし、入力している制約が相互に直線的に依存しているわけではないことは確かです。
回避策、または C++ の他の二次プログラミング ツールを提案してください。ありがとう!
r - 不等式による規範の制約
N株の時系列データがあります。
sample.data<-replicate(10,rnorm(1000))
、ここで各列は、時間の経過に伴うさまざまな株式のリターンを示しています。
ポートフォリオの重みベクトルを構築して、リターンの分散を最小限に抑えようとしています。
目的関数:
ここで、w は重みのベクトル、\sum
は共分散行列、e_{n}^{T}
は 1 のベクトル、C
は定数です。2 番目の制約 ( \left \| w \right \|
) は不等式制約です。
この問題を解決するために、次のコードを使用しました。
このコードを実行すると、次のエラー メッセージが表示されます。
私が間違っているかもしれないアイデアはありますか?開始パラメーター ベクトルに問題はありますx0
か?
performance - ヘッセ行列の計算によるパフォーマンス
[編集] "f" に関する部分が解決されました。これが私がしたことです:使用する代わりに:
私は今使用しています:
これにより、大幅な高速化が実現します。それでも、f の Hessian の問題は残ります。[/編集]
だから、Matlabで解決しようとしている二次最適化問題で、いくつかの深刻なパフォーマンス「問題」を抱えています。問題は最適化自体ではなく、ターゲット関数とヘッシアンの計算です。現在、このようになっています (F と Y はまったくランダムではなく、実際のデータを持ちます。また、必ずしも制約がないわけではありません。その場合、解はもちろん (F'F)^-1*F'*Y になるためです) ):
問題は、f と H の計算に時間がかかることです。
Matlabはこのようなものに最適化されているため、これを大幅に高速化する方法があるとは思っていません。しかし、誰かがいくつかのオープンライセンスソフトウェアを知っているかもしれません。それはMatlabとほぼ同じくらい高速なので、より高速なマシン(残念ながらMatlabライセンスはありません...)でそのソフトウェアを使用してfとHを計算し、Matlabに最適化を任せることができます。
今、私はこれでちょっと迷っています:/
事前にどうもありがとうございました。ここでは、「ソフトウェア xy を探す」のようないくつかのキーワードでも役に立ちます。
r - quadProg ライブラリによる制約付き二次最適化
A
長さのベクトルがありN
ます。また、私はN*N
マトリックスを持っていC
ます。次の方程式を最大化したい:
ここw
で、 は length のベクトルで、それぞれが非負であり、すべての合計が 1 でN
あるという制約があります。w
w
というパッケージを見たことがありますquadProg
。そこで指定する必要があります:
Dmat = C
、dvec = A
、およびbvec = w
しかし、上記の制約をそこに適用する方法がわかりません。
私は、すべての非負Amat
を維持する恒等行列を提供できると思います。w
しかし、正規化を維持する方法がわかりませんw
(合計がゼロに等しい)。実際、後で正規化することもできますが、ここでそれを行うことができるかどうかはまだ疑問です.