二次錐計画法
二次錐計画法 (SOCP) は、線形計画法 (LP) を二次 (ローレンツまたはアイスクリーム) 錐で拡張した凸最適化です。解の探索領域は、アフィン線形多様体と二次錐のデカルト積の交差です。
以下の図は、3変数のSOCP問題の実行可能領域の例を示しています。
SOCPは、工学、制御理論、定量的金融から二次計画法や堅牢最適化まで、幅広い応用分野に現れます。その強力な性質により、金融最適化の重要なツールとなっています。内点法 (IPM) は、その理論的な多項式複雑性と実用的な性能により、SOCP問題を解くための最も一般的なアプローチです。
このディレクトリには、PythonでnAGのSOCPソルバーを使用するデモンストレーションが含まれています。
基本的なSOCP例
CVXPYへのインターフェース
CVXPY は、凸最適化問題のためのPython組み込みモデリング言語です。ソルバーが要求する制限的な標準形ではなく、数学に従った自然な方法で問題を表現することができます。nAGのSOCPソルバーはCVXPY内から使用できます。
二次制約付き二次計画法 (QCQP) としてのポートフォリオ最適化
このデモンストレーションは、nAGライブラリの二次錐計画法を使用したポートフォリオ最適化におけるモデリング技術の解説です。ポートフォリオ最適化のモデルには以下が含まれます:
- 二次計画法 (効率的フロンティア)
- 二次制約付き二次計画法 (TEVポートフォリオ)
- 二次と線形の分数を目的関数とする最適化 (シャープレシオ)
nAGは、二次目的関数と制約を簡単に定義するための2つの関数を提供しています。その後、二次錐計画法ソルバーを直接呼び出して、再定式化の追加作業なしに問題を解くことができます。
- portfolio_optimization_qcqp.htm Jupyterノートブック
- portfolio_optimization_qcqp.pdf 静的PDFバージョン
- portfolio_optimization_qcqp.html 静的HTMLバージョン
ユーザーは、QCQPの問題を手動で二次錐計画法モデルに変換することもできます。以下のノートブックには、SOCPの再定式化の基本的な考え方をユーザーが理解するための2つの一般的な関数が含まれています。
- portfolio_optimization_using_socp.htm Jupyterノートブック
- portfolio_optimization_using_socp.pdf 静的PDFバージョン
- portfolio_optimization_using_socp.html 静的HTMLバージョン
nAGライブラリを使用したポートフォリオ最適化におけるロバスト線形計画法
ランダムに生成されたデータを使用した確率制約付きの平均分散モデル。
- robust_lp.htm Jupyterノートブック
- robust_lp.html 静的HTMLバージョン
データ
- stock_price.pkl - 2018年3月から2019年3月までのDJIAの30銘柄の日次価格を含むピクルス化されたデータファイル。サンプル外の期待リターンと共分散行列を推定するために使用されます。
- djia_close_price.csv - 2018年3月から2019年3月までのDJIAの30銘柄の日次価格のCSVバージョン。