ある粒子が同時に二つの場所に存在する現象を説明する数学は、ポートフォリオが同時に二つのポジションを取る状況も記述できる。ここでは、量子力学の構造を自律型トレーディングエージェントに変換する方法と、そのアナロジーが現実でなくマーケティングになる境界線を示す。

1. なぜ量子なのか、そしてなぜ今なのか
世界中のすべてのヘッジファンドが、同じ三つのアイデアを磨き続けている:モメンタム、平均回帰、そしてオーダーフローに対する機械学習のバリエーションだ。アドバンテージは薄れ続けている。なぜなら、誰もが共有する 市場のモデル が同一、つまり古典的であり、価格は単一の数値で未来は単一のノイズの多い経路だと仮定しているからだ。
量子力学は異なるデータモデルを提供する。量子系は決して一つの状態にはない。それはすべての可能な状態の 重ね合わせ の中に存在し、各状態は複素数の 確率振幅 を持つ。これは、トレードを 実行する前 の市場の驚くほど正確な記述となる:資産は同時に上昇し、下降し、横ばいになり、それぞれの結果に確率が重み付けられ、あなたの注文が現実を一つに選ぶまで続く。
ここがほとんどのスレッドが省略する部分なので、最初に明確にしておく。これらに物理的な量子コンピュータは必要なく、以下で説明する内容のほとんどは文字通りの量子ではない。 これは 量子インスパイア の手法である:状態ベクトル、複素振幅、ハミルトニアン、アニーリング、干渉といった量子力学の数学的構造を借用し、あなたがすでに所有する GPU 上で動作する古典的アルゴリズムだ。価値は構造にあり、量子ビットにあるのではない。この区別を正直に扱うことが、実用的なフレームワークとバズワードを分ける。
銀行やクオンツショップ(Goldman Sachs、JPMorgan、HSBC、そして Multiverse Computing などの専門企業)は、デリバティブ価格設定、モンテカルロリスク、ポートフォリオ最適化のための量子および量子インスパイア手法について積極的に研究し、発表してきた。理論は公開されている。しかし、それを 自律型エージェント(自ら知覚、判断、実行、学習するシステム)に組み込む方法を文書化したものはほとんど存在しない。それがここで構築するものだ。
2. 量子から市場への対応辞書
コードの前に、対応関係を理解する必要がある。以下の各量子概念には、正確なトレーディング上のアナロジーがある。このセクションを、以降のすべての概念的な契約として扱ってほしい。
確率振幅は確信度にマッピングされるが、位相が付加される。 古典的な確率は単なる非負の数値である。量子振幅は 複素数 であり、各々が大きさと 位相角 を持つ。位相こそがアップグレードの本質である。これにより、二つの強気シグナルが 破壊的干渉を起こして打ち消し合ったり、弱い二つのシグナルが 建設的干渉で強力なシグナルに変わったり する。正の確率を平均化する古典的なアンサンブルでは、物理的にこれができない。せいぜい希釈するだけだ。位相は、シグナルが互いに積極的に拒否権を行使することを可能にする。
エンタングルメントは、切り離せない相関関係にマッピングされる。 二つの資産がリンクしたレジームとして動くとき(例えば、主要なコインとその流動性に乗るミームコイン)、一方を他方なしに正直に記述することはできない。エージェントはこれを非分離状態としてエンコードし、静的な相関行列が平坦化して過小評価しがちな、特にテール部分でのレジームリンクした共変動を捉える。
ハミルトニアンはリスク/リターンのコスト関数にマッピングされる。 物理学では、ハミルトニアン H は系のエネルギーをエンコードする。トレーディングでは、目的(期待リターンの最大化、分散の最小化、ポジションと予算制約の遵守)をエネルギーランドスケープとしてエンコードする。最適なポートフォリオは 基底状態、つまり H の最も低いエネルギー配置となる。ポートフォリオ構築はエネルギー最小化問題となり、これは非常に研究が進んだ解決対象である。
測定と崩壊は執行にマッピングされる。 注文を送信した瞬間、重ね合わせは一つの実現結果に崩壊する。エージェントの真の仕事は、いつ、何を測定するかを選択 して、崩壊が利益の出る配置に落ち着くようにすることだ。さらに、ハイゼンベルクのアナロジーによる内在的なリスク原則もある:あるポジションの正確な価格と正確なモメンタムを同時に無制限の精度で確定することはできない。一方の確実性を高める要求は、他方の確実性を犠牲にする。これはアナロジーであり、金融の法則ではないが、有用なものであり、後で具体的なポジションサイジングルールに変換される。

3. 量子トレーディングエージェントのアーキテクチャ
エージェントは 6 つのモジュールからなる閉ループである。この投稿に添付されたアーキテクチャ図が全サイクルを示している。以下は各段階の説明である。

1. 知覚(Perception)。 生の市場データ(オーダーブック、OHLCV、資金調達レート、オンチェーンフロー)を取り込み、特徴ベクトル x に正規化する。これは通常のクオンツ配管であり、まだ量子の要素はない。
3. ハミルトニアン構築(Hamiltonian builder)。 リスク/リターンの目的と制約を QUBO / イジングハミルトニアン H に変換する。ここで、予算制限、リスク回避度、期待リターンがエネルギーランドスケープに組み込まれる。
4. 量子インスパイアソルバー(Quantum-inspired solver)。 H の基底状態(最適な資産選択)を、シミュレーテッドアニーリング、シミュレータ上の QAOA 回路、またはテンソルネットワークソルバーによって見つける。このモジュール こそ ポートフォリオオプティマイザであり、意図的に交換可能となっている。
5. 測定による意思決定(Decision by measurement)。 状態を具体的なポジションとサイズに崩壊させ、ハイゼンベルク式のルールで不確実性が高いときにエクスポージャーを縮小する。
6. 執行とフィードバック(Execution and feedback)。 注文をルーティングし、実現損益を観測し、確率振幅を更新する。測定された結果は翌日の事前確率となる。これは強化学習ループであり、エージェントが固定戦略を実行するのではなく適応することを可能にする。
4. コード:市場を量子状態としてエンコードする
状態計算には numpy を使用し、量子インスパイア部分には qiskit / pennylane の慣習を参考にする。ここには実際の量子ハードウェアは不要で、ラップトップで動作する。
干渉が全ての鍵なので、エンコードでは、確率を取る前にシグナルが 複素数として加算 されるようにする必要がある。各アルファモデルは、各 市場シナリオに対して複素数の振幅(大きさ=確信度、位相=タイミングまたはレジームアライメント)を寄与する。モデル全体の寄与を合計し、その後でボルンの規則を適用する。
1import numpy as np23def combine_signals(contributions: np.ndarray) -> np.ndarray:4 """5 contributions: complex matrix of shape [n_signals, n_scenarios].6 |value| = a model's conviction for a scenario,7 angle = its phase (timing / regime alignment).8 returns: normalized state |psi> over the scenarios.9 """10 amplitudes = contributions.sum(axis=0) # signals INTERFERE here11 return amplitudes / np.linalg.norm(amplitudes)1213# Scenarios: [up, down, chop, breakout]14# Two momentum models both lean 'up' -- but they are out of phase, so they partly cancel.15signal_A = np.array([0.7+0j, 0.1+0j, 0.2+0j, 0.3+0j]) # bullish, phase 016signal_B = np.array([0.6*np.exp(1j*2.7), 0.15, 0.2, 0.25]) # bullish but ~anti-phase1718psi = combine_signals(np.vstack([signal_A, signal_B]))1920# Probability of each scenario = |amplitude|^2 (the Born rule)21probs = np.abs(psi) ** 222print(probs.round(3)) # -> [0.147 0.102 0.26 0.491]
重要な行は ボルンの規則(Born rule) である:確率は振幅の絶対値の二乗に等しい。二つの強気シグナルが二乗前に複素数として加算されるため、それらの位相がずれた成分は 打ち消し合い、混雑した「上昇」シナリオは単純な確率平均の 0.76 から 0.147 に抑制される。エージェントは自動的に過剰相関したコンセンサスベットをフェードアウトする。これが、単なる確率平均アンサンブルとの具体的かつ測定可能な違いであり、この投稿に添付された干渉図が同じ数値を並べて示している。

5. 誰も教えてくれない難しい部分:位相はどこから来るのか?
「量子トレーディング」を売り込むスレッドは、こっそりと位相をハードコードし、あなたが気づかないことを期待している。上記のスニペットでは、私は np.exp(1j\2.7) を手書きした。実際のシステムでは、位相を発明することが研究課題全体*であり、そうでないふりをすることは自己欺瞞への最短経路である。
したがって、位相を飾りではなく第一級のモデリング対象として扱う。推測ではなく位相を導き出すための、実用的な方法をいくつか示す:
タイミング / サイクル位相。 各シグナルをヒルベルト変換またはウェーブレット分解にかけ、支配的なサイクルの瞬時位相を読み取る。同じ方向で発火するが異なるサイクル位相を持つ二つのモメンタムモデルは、実際に部分的に打ち消し合うべきである。それがまさに検出したい混雑である。
リードラグ位相。 シグナルと将来のリターンとの間の相互相関ラグを推定する。そのラグを角度に変換する。価格をリードするシグナルにはある位相が与えられ、単に追従しているだけのラガードには別の位相が与えられる。これにより、ラガードはリーダーと破壊的干渉を起こし、二重計上を防ぐ。
レジーム位相。 レジーム分類器(トレンド vs レンジ、高ボラティリティ vs 低ボラティリティ)を角度にマッピングし、レジームが回転するにつれてシグナルの寄与も回転するようにする。そうすれば、ブレイクアウトモデルと平均回帰モデルは自然にほぼ逆位相に位置する。
規律は単純である:シグナルがなぜその位相を持つのか説明できないなら、位相を使う資格はない。 すべてに位相 0 を使うなら、それは古典的なアンサンブルに戻るだけであり、それでも問題はなく正直である。位相が強力なのは、それが苦労して得られるものだからだ。
6. コード:基底状態探索としてのポートフォリオ
制約下でのポートフォリオ選択は組合せ最適化である。予算とリスク制限の下で最適な資産のサブセットを選ぶ。これはまさにアニーリングが構築された問題の形である。ここでは「保有する資産」を、イジングハミルトニアンの古典的な双子である QUBO(Quadratic Unconstrained Binary Optimization)としてエンコードする。
1import numpy as np23def build_portfolio_hamiltonian(expected_returns, cov, risk_aversion=1.0,4 budget=3, penalty=5.0):5 """6 Build a QUBO matrix Q so that minimizing x^T Q x (x in {0,1}^n)7 picks the best 'budget' assets: maximize return, minimize risk,8 and softly penalize breaking the budget constraint.9 """10 n = len(expected_returns)11 Q = np.zeros((n, n))1213 # return (negated, since we minimize) plus a risk term from the covariance14 for i in range(n):15 Q[i, i] += -expected_returns[i] + risk_aversion * cov[i, i]16 for j in range(i + 1, n):17 Q[i, j] += 2 * risk_aversion * cov[i, j]1819 # budget constraint (sum x_i - budget)^2 as a soft penalty20 for i in range(n):21 Q[i, i] += penalty * (1 - 2 * budget)22 for j in range(i + 1, n):23 Q[i, j] += 2 * penalty24 return Q2526def simulated_anneal(Q, steps=20000, T0=5.0):27 """Quantum-inspired annealing: slowly cool the system into its ground state."""28 n = Q.shape[0]29 x = np.random.randint(0, 2, n)30 def energy(x): return x @ Q @ x31 e = energy(x)32 for t in range(steps):33 T = T0 * (1 - t / steps) # linear temperature schedule34 i = np.random.randint(n)35 x_new = x.copy(); x_new[i] ^= 1 # flip one asset in/out36 e_new = energy(x_new)37 # accept improvements always, and worse moves sometimes (that is how it escapes local minima)38 if e_new < e or np.random.rand() < np.exp(-(e_new - e) / max(T, 1e-9)):39 x, e = x_new, e_new40 return x, e4142returns = np.array([0.12, 0.09, 0.15, 0.04, 0.11])43cov = np.array([44 [0.10, 0.02, 0.01, 0.00, 0.03],45 [0.02, 0.08, 0.02, 0.01, 0.01],46 [0.01, 0.02, 0.18, 0.00, 0.02],47 [0.00, 0.01, 0.00, 0.03, 0.00],48 [0.03, 0.01, 0.02, 0.00, 0.09],49])50Q = build_portfolio_hamiltonian(returns, cov, risk_aversion=2.0, budget=2)51selection, ground_energy = simulated_anneal(Q)52print("Hold assets:", np.where(selection == 1)[0], "| energy:", round(ground_energy, 3))
スケールに関する正直な注意点。5 つの資産ならアニーリングは不要であり、32 通りの組合せを総当たりで調べられる。アニーリングが真価を発揮するのは、数百の資産にハード制約がある場合で、探索空間が爆発し、厳密なソルバーが機能しなくなる時だ。小規模でこのように書く理由は、インターフェースが決して変わらないからである:simulated_anneal を実際のバックエンド(D-Wave のアニーラ、Qiskit シミュレータ上の QAOA 回路、Multiverse が提供するようなテンソルネットワークソルバー)に交換しても、エージェントの他の部分は一切動かない。ソルバーはプラグとして機能する。
7. コード:エージェントループ(知覚から崩壊、執行まで)
ここでそれらを結びつける。これは自律型エージェントの骨格である。LLM エージェントが使用するのと同じ知覚/判断/行動の制御ループだが、テキストの代わりに量子スタイルの状態をワールドモデルとして使用する。
1class QuantumTradingAgent:2 def __init__(self, universe, risk_aversion=2.0, budget=2, gross_leverage=1.0):3 self.universe = universe4 self.risk_aversion = risk_aversion5 self.budget = budget6 self.gross_leverage = gross_leverage7 self.memory = [] # feedback / RL buffer89 def perceive(self, market):10 contributions = self.model_conviction(market) # your alpha models -> complex matrix11 return combine_signals(contributions) # -> state |psi> over scenarios1213 def deliberate(self, market):14 Q = build_portfolio_hamiltonian(15 market["expected_returns"], market["cov"],16 self.risk_aversion, self.budget)17 selection, _ = simulated_anneal(Q)18 return selection1920 def measure(self, psi, selection, market):21 """22 Collapse into orders. Two things happen here:23 1) a GLOBAL conviction gate from the scenario state (directional + Heisenberg vol shrink)24 2) a PER-ASSET weight so the chosen assets are sized by their own expected return25 """26 scenario_probs = np.abs(psi) ** 227 directional = scenario_probs[0] + scenario_probs[3] # P(up) + P(breakout)28 vol = market["volatility"]29 gate = directional / (1.0 + self.risk_aversion * vol) # shrink in high vol / low conviction3031 idx = np.where(selection == 1)[0]32 if len(idx) == 0:33 return {}34 edge = np.clip(market["expected_returns"][idx], 0, None) # only long positive-edge names35 weights = edge / edge.sum() if edge.sum() > 0 else np.ones(len(idx)) / len(idx)3637 sizes = self.gross_leverage * gate * weights38 return {int(a): round(float(s), 4) for a, s in zip(idx, sizes)}3940 def act(self, market):41 psi = self.perceive(market)42 selection = self.deliberate(market)43 orders = self.measure(psi, selection, market)44 # execute(orders) <- route to exchange / broker here45 self.memory.append((market, orders))46 return orders
measure() を詳しく見てほしい。以前のナイーブなバージョンには実際の欠陥があった。選択されたすべての資産に同一のサイズを適用し、それぞれの実際の良さを無視していた。このバージョンでは 2 段階で修正されている。グローバルゲート はシナリオ状態(方向性確信度、つまり P(up) + P(breakout) をボラティリティ項で割ったもの)を読み取る。この割り算がハイゼンベルク式のリスク管理ルールである:市場が正確な価格付けに抵抗すればするほど(つまりボラティリティが高いほど)、エージェントの総コミットメントは小さくなる。次に 資産ごとのウェイト がその予算を選択された銘柄に、それぞれの期待されるエッジに比例して分配し、期待リターンがマイナスの銘柄はロングしない。確信度が賭けの額を決め、資産ごとのエッジがその行き先を決める。
8. ウォール街の現実チェック
これは実際にどこで利益を生み、どこで美しいデモに過ぎないのか。ここで具体的にすることが、残りの部分の信頼性を高める。
今日、古典的ハードウェア上で真のアドバンテージがある分野:
大規模なポートフォリオ最適化。 数百の資産とハード制約がある場合、アニーラやテンソルネットワーク手法は、ナイーブな平均分散ソルバーよりも組合せと制約をより優雅に、そして多くの場合より高速に処理する。これは最も成熟しており、誇大広告が最も少ないアプリケーションである。
量子振幅推定によるリスク推定。 理論上、VaR と CVaR の古典的モンテカルロに対して二次の高速化を提供する。これは大銀行で最も活発に研究されている方向性の一つである。なぜならリスク実行はコストがかかり、常時実行されるからだ。注意点:話題の高速化は理論上の漸近的結果であり、今日のハードウェアではまだ本番規模で実現されていない。
干渉によるシグナル結合。 確信度に位相を持たせ、混雑した過剰相関トレードを打ち消すようにモデル化することは、真に有用なリフレーミングであり、すでに所有している GPU 上で今日動作する。この記事で最も即座に実用的なアイデアである。ただし、セクション 5 の位相問題を正直に解決することが前提である。
まだ大部分は研究段階:
実際の量子ハードウェア上でのエンドツーエンドのデリバティブ価格設定。 原理的には有望だが、ノイズと量子ビット数が今日では制限となる。
「量子 ML」による価格予測。 非常に誇大広告されている。古典的な市場データを量子状態にロードするコストが、通常、期待した高速化を食いつぶす。これを売り込む人には非常に懐疑的であるべきだ。
正直な結論:量子インスパイアエージェントは今すぐ構築可能でバックテスト可能である。 なぜならすべてのモジュールが古典的ハードウェア上で動作するからだ。重ね合わせた仮説、混雑に対する破壊的干渉、ハミルトニアンに基づく最適化といった構造的アイデアを、フォールトトレラントな量子コンピュータを待たずに活用できる。ハードウェアが成熟したら、モジュール 4 を交換し、残りはそのまま維持する。

9. 本番環境でこれを実際に殺すもの
すべての戦略は市場に直面するまで輝いて見える。1 ドルもリスクにさらす前に、特に量子インスパイアエージェントを静かに破壊する 4 つのことを内面化しよう。
取引コストとスリッページ。 干渉レイヤーは新しいデータが到着するたびに確信度を再シャッフルするため、エージェントはポジションを頻繁に売買したくなる。手数料とスリッページは、あなたの状態ベクトルがどれほど洗練されていようと気にしない。ハミルトニアンに直接売買回転率ペナルティを追加して再実行せよ。現実的なコストを課すと、多くの「エッジ」は消え去る。
位相への過適合。 位相は自由パラメータの追加セット全体を与え、自由パラメータはバックテストが嘘をつく方法である。昨年の数字が素晴らしく、来年が悲惨になるように位相を調整するのは非常に簡単だ。理論(セクション 5)から位相ルールを固定し、リターンを見る前に決定せよ。バックテストに位相を選ばせては決してならない。
ループ全体でのデータスヌーピング。 これは閉じたフィードバックループであるため、漏洩が増幅される。確信度モデル、共分散推定、またはレジームラベルのいずれかが将来をほんの少しでも覗き見れば、エージェント全体がその嘘を継承する。シグナル単独ではなく、ループ全体 をウォークフォワードテストせよ。
共分散のレジーム脆弱性。 QUBO は共分散行列に依存しており、共分散はまさに必要な時に暴騰する。暴落時には相関が 1 に急上昇する。穏やかな市場の共分散だけでなく、ショックを受けた共分散の下で基底状態の選択をストレステストせよ。そうしなければ、オプティマイザーは紙の上でのみ分散されたポートフォリオを喜んで提供するだろう。
10. 構築チェックリスト
これを実際にリリースしたい場合、以下が手順の順序である。
量子インスパイアソルバー から始める。プレーンな numpy とシミュレーテッドアニーリングを使用する。ハードウェアもアカウントも依存関係も不要である。
手動調整された振幅を、学習された確信度モデル に置き換え、combine_signals に供給し、位相はフィッティングではなく理論から導出する。
コストを含めたループ全体をバックテスト する。シグナルだけではない。現実的な手数料とスリッページを課し、売買回転率ペナルティを追加し、ウォークフォワードテストを行う。エッジと自己欺瞞の両方が隠れているのは、干渉とサイジングのロジックである。
シミュレーションで抽象化が元を取った後にのみ、実際のバックエンド(最初は Qiskit または PennyLane シミュレータ、次に D-Wave、その後ハードウェア)に手を伸ばすべきである。モジュール 4 の交換は、設計上、1 行の変更で済む。
市場は常に確率の波だった。ほとんどすべての人が依然としてそれを単一の数値として取引している。そして、その二つの見方の間のギャップこそが全体の機会である。
もしこれが市場に対する考え方を変えたなら、トップをリポストし、フォローしてください。完全なオープンソースエージェントリポジトリは次に公開されます。 ⚛️
免責事項。 これは投資助言ではなく、リターンの保証でもありません。量子インスパイアは量子保証を意味しません。これを機能させているものの大部分は、量子のコートを着た規律ある古典的モデリングです。実際のコストですべてをバックテストしてください。市場はあなたの準備ができているかどうかに関わらず、あなたの波動関数を崩壊させます。





