#はじめに
某社でクオンツアナリストとして働いておりますhalと申します。
本記事は自分の勉強も兼ねて、金融実務者の方向けに典型的なポートフォリオ最適化を通じて、
"量子アニーリング"の紹介&デモンストレーションをしていきます。
pythonの導入されたPCがあればどなたでも無料で試せるので、興味がある方は実際に動かしてみてください。
#D-Wave Leap
https://www.dwavesys.com/take-leap
カナダのD-Wave社が提供している量子アニーリングのサービスです。
2019/3/26にようやく北米以外でも解禁となり、日本からでも利用できるようになりました。
登録するだけで、無料で1分間量子コンピュータを利用できます。(GitHubアカウントを連携させれば毎月1分間利用できます)
有料プランも用意されていて1時間あたり$2000ほどで購入できるようです(高い...)
まぁ本体を購入すると$15Mくらいらしいので妥当ではあるのでしょうか
さて今回はこちらのサービスを利用していききます。
上記のアドレスから簡単にSign upできます。
動作のイメージなどはマイページのResourcesからチュートリアルが見れるので、そちらも参考にすると良いかと思います。
##D-Wave Oceanの導入
Leapにはpythonから簡単に利用する為のD-Wave OceanというSDK(ソフトウェア開発キット)が配信されているので、今回はこれを利用していきます。
pip を使用すれば以下のコマンドでインストールできます。
(公式では仮想環境にインストールすることが推奨されていますが、わからなければスルーで大丈夫です)
pip install dwave-ocean-sdk
インストール後自分のアカウントを利用できるように設定をしていきます。
設定には自分のアカウントのAPIトークンとAPIエンドポイントが必要です。
###APIトークン
マイページのDashboardから取得できます。(赤で囲ってある箇所です)
###APIエンドポイント
Dashboard の下部に表示されています。
###設定の登録
ターミナルからdwave config create
を実行し以下のように入力します。
Configuration file not found; the default location is: #############
Confirm configuration file path (editable):
Profile (create new): prod
API endpoint URL (editable): 取得したAPIエンドポイント
Authentication token (editable): 取得したAPIトークン
Client class (qpu or sw): qpu
Solver (can be left blank): {"qpu": true}
Proxy URL (can be left blank):
Configuration saved.
実行後dwave solovers
でエラーが発生しなければ成功です!
##試しに動かしてみる
from dwave.system.samplers import DWaveSampler
from dwave.system.composites import EmbeddingComposite
sampler = EmbeddingComposite(DWaveSampler())
response = sampler.sample_ising({'a': -0.5, 'b': 1.0}, {('a', 'b'): -1})
print(response)
以下のような結果が帰ってきたら成功
a | b | energy | num_oc. | chain_. |
---|---|---|---|---|
-1 | -1 | -1.5 | 1 | 0.0 |
#実際にポートフォリオ最適化を解いてみる
#リンク
金融のための量子アニーリングことはじめ1 | D-wave Leap導入編(本記事)
金融のための量子アニーリングことはじめ2 | ポートフォリオ最適化 1
金融のための量子アニーリングことはじめ3 | ポートフォリオ最適化 2