Skip to main content
IBM Quantum Platform

Quantum Portfolio Optimizer API リファレンス

  • Qiskit Functions

    Qiskit Functions — パートナー組織によって開発された既成のツール — ソフトウェア開発ワークフローの一部を抽象化することで、ユーティリティ規模でのアルゴリズムの発見とアプリケーション開発を簡素化し、加速させます。 このQiskit関数のガイドを表示するには、ここをクリックしてください。


入力

この関数の入力引数については、以下のリストに説明があります。 アセットデータやその他の問題仕様を提供する必要があります。さらに、最適化プロセスをカスタマイズするために、VQE設定を含めることも可能です。

assets

タイプ: `json`

資産価格を掲載した辞書。 データは、特定の日付における金融資産の終値に関する情報を格納するJSONオブジェクトとして構成されている必要があります。 形式は以下のようになります。

  • 主キー(文字列):金融資産の名称またはティッカーシンボル(例:「 8801.T 」)。
  • 副キー(文字列):YYYY-MM-DD形式の日付。
  • 値(数値):指定された日付における当該資産の終値。 価格は正規化された形式でも、正規化されていない形式でも入力できます。

すべての辞書は、同じセカンダリキー(日付)を持つ必要があることに注意してください。 特定の資産に、他の資産にはある日付が欠けている場合、一貫性を保つためにそのデータを補完する必要があります。 例えば、その資産の直近の終値を使用することで、これを行うことができます。

  • 必須:はい
  • 例:
{
    "8801.T": {
        "2023-01-01": 2374.0,
        "2023-01-02": 2374.0,
        "2023-01-03": 2374.0,
        "2023-01-04": 2356.5,
        ...
    },
    "AAPL": {
        "2023-01-01": 145.2,
        "2023-01-02": 146.5,
        "2023-01-03": 147.3,
        "2023-01-04": 148.1,
        ...
    },
    ...
}
{
    "asset_name": {
        "date": closing_value,
        ...
    },
    ...
}

資産データには、少なくとも(入力セクション qubo_settings を参照)のタイム (nt+1) * dt スタンプ(例:日)における終値が含まれている必要があります。

qubo_settings

タイプ: `json`

QUBOの設定。 次の表は、辞 qubo_settings 書のキーについて説明しています。 時間ステップ数 nt、解像度クビット数 nq、および を指定して max_investment 辞書を作成するか、その他のデフォルト値を変更します。

名前
タイプ
説明
必須
デフォルト
ntint時間ステップ数はい-4
nqint解像度量子ビット数はい-4
max_investment浮動小数点全資産における投資通貨単位の最大数はい-10
dt*int各時間ステップで考慮される時間窓。 このユニットは、アセットデータ内のキー間の時間間隔と一致しますいいえ30時間まで-
risk_aversion浮動小数点リスク回避係数いいえ1000-
transaction_fee浮動小数点取引手数料率いいえ0.01-
restriction_coeff浮動小数点QUBO形式化において問題の制約を課すために用いられるラグランジュ乗数いいえ1-
  • 必須:はい

ansatz_settings

タイプ: `json`

デフォルト値: `None`

アンザッツの設定。 デフォルトのオプションを変更するには、以下のキーを持つ パラメータ ansatz_settings 用の辞書を作成してください。 デフォルトでは、ansatz は に設定されており "real_amplitudes"、2つの追加オプション(次の表を参照)はいずれも に設定されています False

名前
タイプ
説明
必須
デフォルト
ansatz*str使用するアプローチいいえ"real_amplitudes"
multiple_passmanager**ブール値複数のPassManagerサブルーチンを有効にします(Tailored Ansatzでは利用不可)いいえFalse
dd_enableブール値動的なデカップリングを追加しますいいえFalse

* 利用可能なアプローチ

  • real_amplitudes
  • cyclic
  • optimized_real_amplitudes
  • tailored (バックエンド ibm_torino 専用、アセット7個、タイムステップ4、解像度4の量子ビット)

** が に設定 multiple_passmanager されている False場合、この関数は を指定したデフォルトの Qiskit optimization_level=3 パスマネージャーを使用します。 に設定すると True、この multiple_passmanager サブルーチンは3つのパスマネージャーを比較します。具体的には、以前のデフォルトのQiskitパスマネージャー、QPUのファーストネイバーチェーン上の量子ビットをマッピングするパスマネージャー、 およびAIトランスパイラー サービスです。 その後、推定累積誤差が小さいパスマネージャーが選択される。

  • 必須:いいえ

optimizer_settings

タイプ: `json`

デフォルト値: `None`

オプティマイザーの設定。 このパラメータは、最適化プロセスの調整可能なオプションをいくつか含む辞書です。

名前
タイプ
説明
必須
デフォルト
primitive_optionsjsonプリミティブの設定いいえ-
optimizerstr厳選された古典的最適化アルゴリズムいいえ"differential_evolution"
optimizer_optionsjsonオプティマイザの設定いいえ-

現在、利用可能なオプティマイザーのオプションは のみです "differential_evolution"

および optimizer_options キー primitive_options の下に、以下のパラメータを持つ辞書を設定します:

primitive_options

名前
タイプ
説明
必須
デフォルト
sampler_shotsintサンプラーのショット数。いいえ100000-
estimator_shotsintエスティメーターの撮影回数。いいえ25000-
estimator_precision浮動小数点期待値の望ましい精度。 指定された場合、小数点以下の桁数(precision)が、 estimator_shots. の代わりに使用されます。いいえNone0.015625 · (1 / √4096)
max_timeint または strランタイムセッションが強制終了されるまで、開いたままにできる最大時間。 秒数(int型)または文字列(例 "2h 30m 40s":)として指定できます。 システムで定められた上限値未満でなければなりません。いいえNone"1h 15m"

optimizer_options

名前
タイプ
説明
必須
デフォルト
num_generationsint世代数いいえ20
population_sizeint人口規模いいえ20
mutation_rangeリスト最大および最小の変異係数いいえ[0, 0.25]
recombination浮動小数点組換え因子いいえ0.4
max_parallel_jobsint並列で実行されるQPUジョブの最大数いいえ3
max_batchsizeint最大バッチ・サイズいいえ200
  • 初期個体群も含まれるため、差分進化によって評価される世代数は +1 num_generations となります。

  • 回路の総数は次のように計算されます (num_generations + 1) * population_size

  • 一般的に、母集団の規模を大きくし、世代数を増やすことで、最適化結果の質が向上する。 ただし、個体群の規模を120を超えたり、世代数を20以上(例えば、 120 * 21 = 2520 総回路数)にしたりすることは推奨されません。これを行うと回路数が過剰になり、計算負荷が高くなり、処理に時間がかかる可能性があるためです。

  • この関数を使用すると、以前の最適化を再開することができます。また、世代数を増やすこともいつでも可能です(とを除き previous_session_id 、その他の入力は同じままにし、を増加させることで num_generations)。

  • 必須:いいえ

backend

タイプ: `str`

QPUバックエンド名

  • 必須:いいえ
  • 例: ibm_torino

previous_session_id

タイプ: `list` of `str`

デフォルト値: Empty list

過去の実行データを取り出すためのセッションIDの一覧。 以前の1つ以上のセッションで処理されたジョブの実行を再開したり、それらのジョブを取得したりするには、 previous_session_id パラメータにセッションIDのリストを渡す必要があります。 これは、最適化タスクが処理中のエラーにより完了できなかった場合で、実行を完了させる必要がある場合に特に役立ちます。 これを実現するには、最初の実行時と同じ引数に加え、説明通りに previous_session_id リストを指定する必要があります。

  • 必須:いいえ
  • 例: ["session_id_1", "session_id_2"]

apply_postprocess

タイプ: `bool`

デフォルト値: `True`

ノイズを考慮したSQD後処理を適用する。

  • 必須:いいえ
  • 例: True

tags

タイプ: `list` of `str`

デフォルト値: Empty list

実験を特定するためのタグの一覧。

  • 必須:いいえ
  • 例: ["optimization", "quantum_computing"]
警告

前回のセッションからデータを読み込む(最適化を再開するため)には、最大1時間の通常の計算時間が必要になる場合があります。 これは量子ランタイムリソースを消費しません。

IBM Quantum Compute Service のジョブ制限を確実に遵守してください。

  • サンプル: sampler_shots <= 10_000_000.
  • 推定量: max_batchsize * estimator_shots * observable_size <= 10_000_000 (この関数については、観測量のすべての項が可換であるため、 observable_size=1)。

詳細については、「 ジョブの制限 」ガイドをご覧ください。


出力

この関数は2つの辞書( "result" ディクショナリ)を返します。1つは "metadata"、最適解とその対応する最小目的関数コストを含む、最良の最適化結果が格納された辞書です。もう1つは、最適化プロセス中に得られたすべての結果のデータと、それぞれの評価指標が格納された辞書です。

最初の辞書は、最も優れたパフォーマンスを発揮するソリューションに焦点を当てているのに対し、2つ目の辞書は、目的関数のコストやその他の関連指標を含め、すべてのソリューションに関する詳細な情報を提供しています。

result 辞書

タイプ: dict[str, dict[str, float]]

時間の経過に伴う投資戦略が含まれており、各タイムスタンプには資産ごとの投資ウェイトが対応付けられています(各ウェイトは、総投資額で正規化された投資額です)。

  • 例: {'time_1': {'asset_1': 0.2, 'asset_2': 0.3, ...}, ...}

metadata 辞書

タイプ: dict[str, Any]

分析中に生成されたデータ(解決策、コスト、指標など)。

名前
タイプ
説明
session_idstrIBM Quantum セッションの一意の識別子。"d0h30qjvpqf00084fgw0"
all_samples_metricsdict各後処理済みサンプルに対するコストや制約など、さまざまなメトリクスを格納した辞書。説明を参照
sampler_counts[d] ictstr, intキーがサンプリングされた解のビット列表現であり、値がその出現回数である辞書。{"101010": 3, "111000": 1}
asset_order[liststr]投資戦略における各時点での資産の投資順序を記載したリスト。["Asset_0", "Asset_1", "Asset_3"]
QUBOリスト[ [listfloat] ]この問題のQUBO行列。[[-6.96e-01, 5.81e-01, -1.26e-02, 0.00e+00], ...]
resource_summarydict[文字列, [辞]書文字列, 浮動小数点数]プロセスの各段階におけるCPUおよびQPUの使用時間の概要(秒単位)。{'RUNNING: EXECUTING_QPU': {'CPU_TIME': 412.84, 'QPU_TIME': 87.22}, ...}

辞書の all_samples_metrics 説明

名前
タイプ
説明
investment_trajectories[リストリスト]量子状態の解読から導き出された投資戦略。[[1, 2, 2], [1, 2, 1]]
counts[リスト]各投資経路がサンプリングされた回数。 インデックスが一致します investment_trajectories[5, 3]
objective_costs[リストフロート]各投資経路における目的関数の値(低い順から高い順に並べたもの)。[0.98, 1.25]
sharpe_ratios[リストフロート]各投資経路におけるリスク調整後リターン(シャープレシオ)。 索引順に並べ替えられています。[1.1, 0.7]
returns[リストフロート]各投資シナリオにおける期待リターン。 索引順に並べ替えられています。[0.15, 0.10]
rest_breaches[リストフロート]各投資経路における制約からの最大逸脱量。 索引順に並べ替えられています。[0.0, 0.25]
transaction_costs[リストフロート]各投資シナリオに関連する推定取引コスト。 索引順に並べ替えられています。[0.01, 0.02]
このページは役に立ちましたか?
バグや誤字の報告、またはコンテンツの要求はGitHubで行ってください。