Type/to search
2
Follow
484
Followers
暗号資産市場におけるRWAマルチアセット動的ウェイト配分:リスク・パリティ戦略
Discussions
Created 2026-04-08 16:37:16  Updated 2026-04-20 18:13:03
 0
 206

img

暗号資産市場は最近厳しい状況が続いています。BTCは高値から下落し、アルトコインはさらに悲惨で、多くの人が様子見を始め、さらには市場から撤退しています。しかし、そんな中、別の動きが静かに加熱しています——RWA、すなわち現実資産のトークン化です。金、米国株、原油といった従来の市場の資産が、契約の形で暗号資産取引所に登場し始めています。各取引所は順次、SPY(S&P500 ETFを代表)、金XAU、原油CLなどの銘柄を上場し、元々あるBTCと合わせて、米国株、金、原油、暗号通貨をカバーするマルチアセット取引環境が、初めてオンチェーンで形になりました。

この構成を見て、頭に浮かんだアイデアがあります。伝統的な金融には「リスクパリティ」という非常に古典的な考え方があります。簡単に言えば——全ての卵を一つの籠に入れず、各籠に入れる量は、その籠がどれだけ危険かによって決めるというものです。このロジックは伝統的な金融の世界で数十年使われてきました。この弱気相場の中で、誰もが単一の資産に依存しない生存方法を模索しており、今や暗号資産市場にもこれらの資産の契約が登場したので、このロジックを移して試してみることにしました。


まずリスクパリティを明確にしてから、先に進む

具体的な方法を説明する前に、リスクパリティという言葉をしっかり理解しておかないと、以降のロジックが追いにくくなります。

普通の人が資産を配分する場合、例えば「資金を均等に4つに分けて、各資産に25%ずつ入れる」と考えるかもしれません。一見バランスが取れているように聞こえますが、問題はBTCが1日に10%動くのに対し、金は1日に0.5%しか動かない可能性があることです。同じ25%のポジションでも、BTCがもたらすリスクは金の20倍になります。表面上は4つの資産が均等に配分されていても、実際にはポートフォリオの運命はほぼBTCだけに支配され、残りの3つは単なる脇役に過ぎません。

リスクパリティの考え方は逆転しています。資金を均等にするのではなく、リスクを均等にします。BTCの変動が大きければ割合を少なくし、金が安定していれば多くする——しかし、これは第一歩に過ぎません。さらに重要なのは、資産間は独立しておらず、BTCと米国株は特定の相場で一緒に下落することがあるため、2つの資産の相関が高い場合、個々の変動率に大きな差があっても、それらのリスクを平準化する効果は限定的です。真のリスクパリティは、各資産の変動率と他の資産との相関を同時に考慮し、共分散行列を用いて各資産がポートフォリオ全体のリスクにどれだけ貢献しているかを測り、最終的に各資産のリスク貢献度がほぼ等しくなるようにします。このロジックの利点は、特定の資産が突然暴落しても、ポートフォリオ全体が打撃を受けることはないという点です。

img

まず適切な資産を選び、分散に意味を持たせる

リスクパリティを行うには、最初にポートフォリオに入れる資産を選ぶ必要があります。資産の選択が適切でなければ、その後の計算がどれだけ精密でも無意味です。

資産プールには、SPY、XAU、CL、BTCの4つを選びました。この選択には論理的な根拠があります。これらの値動きは通常、完全には同期しません。景気が良いときは株が上昇し、リスク回避のムードが強まると金が上昇し、インフレ期待が高まると原油と金がともに上昇し、暗号資産市場は時に株と連動し、時に完全に乖離します。これらの資産間の相関が低いからこそ、組み合わせることでリスク分散に意味が生まれます。もし4つの資産が毎日一緒に上がったり下がったりするなら、分散は幻想に過ぎず、どんな方法でも救えません。

資産を選んだ後、次の問題は、各資産にどれだけの割合を配分すべきかということです。これこそがリスクパリティが実際に計算する必要のある部分です。

img

各資産の配分比率の計算方法

戦略の計算ロジックは2段階に分かれます。

第一段階では、4つの資産のローソク足データを取得し、タイムスタンプで揃えます。戦略は1時間足(PERIOD_H1)をデータ入力として使用します。このステップは単純に見えますが、実際にはRWA契約の銘柄によってはデータが欠落することがあります。特定の時点でSPYに価格がない場合、その時点のデータ行全体を削除し、4つの資産全てに価格が存在する時点のみを保持して、以降の計算を行います。

javascript
for (var k = 0; k < keys.length; k++) { var row = timeMap[keys[k]], ok = true; for (var i = 0; i < LABELS.length; i++) { if (row[LABELS[i]] === undefined) { ok = false; break; } } if (ok) timestamps.push(parseInt(keys[k])); }

データを揃えた後、終値の系列を対数収益率に変換します。すなわち ln(現在価格 / 前期価格) です。単純な騰落率ではなく対数収益率を用いる理由は、時間加法性を持つためです——複数期間の累積がそのまま総対数収益に等しくなり、扱いが容易になります。また、資産価格が幾何ブラウン運動に従うという一般的な仮定の下では、対数収益率は正規分布に従い、その後の共分散行列の計算フレームワークと互換性があります。ただし、暗号資産の実際の収益率は裾の厚い分布を持つことが多く、これは注意すべき仮定のバイアスであり、共分散行列は極端な相場では実際のリスクを過小評価する可能性があります。

javascript
function calcLogReturns(prices) { var r = []; for (var i = 1; i < prices.length; i++) { var prev = prices[i - 1], cur = prices[i]; if (!prev || !cur || prev <= 0 || cur <= 0) { r.push(0); continue; } r.push(Math.log(cur / prev)); } return r; }

第二段階では、これらの収益率系列を用いて共分散行列を計算します。単純な過去平均共分散では粗すぎるため、ここではEWMA加重を用います——最近のデータに高いウェイトを与え、共分散行列が市場状態の変化をより迅速に感知できるようにします。

javascript
for (var t = T - 1; t >= 0; t--) { var w = Math.pow(lambda, T - 1 - t); c += w * (retMat[i][t] - means[i]) * (retMat[j][t] - means[j]); ws += w; } cov[i][j] = c / ws; cov[j][i] = cov[i][j];

lambda は減衰係数で、戦略はデフォルトで EWMA_LAMBDA = 0.94 を使用します。この値はRiskMetricsが日次データに対して設定した経験値を参考にしています。ただし、RiskMetricsの0.94は日次データ向けに設計されており、戦略は1時間データを使用するため、頻度が高くなっています。共分散行列が最近の変化に対する感度を日次の0.94と一致させたい場合、理論的には1に近い値に換算する必要があります。しかし、実際の使用では0.94は時間足でも許容可能な出発点であり、最近のデータのウェイトが高く、過去の影響がより早く減衰する構成を表しており、実際のバックテスト結果に応じてさらに調整することができます。lambda が1に近いほど、過去のデータの影響が長く続き、共分散行列が最近の変化に対して鈍感になります。lambda が小さいほど、戦略は市場状態の変化に敏感になりますが、短期的なノイズによって不要なリバランスが発生しやすくなります。

計算後、対角線に正則化項を加え、係数は対角線の平均の0.1%に設定します(eps = diagMean * 0.001)。0.001倍の係数はテストを経て選定され、数値的に行列の正定性を保証するのに十分であり、共分散構造への影響は無視できます。また、注意すべき簡略化があります。EWMA共分散の厳密な計算では、加重平均を用いて偏差を求めるべきですが、コードでは全ルックバックウィンドウの単純算術平均を使用しています。収益率の平均がゼロに近い場合(金融資産の短期収益率の一般的な状態)、この簡略化の結果への影響は無視できますが、平均がゼロから有意に乖離するシナリオでは微小なバイアスが生じます。

共分散行列が求まったら、次は真のリスクパリティの求解です——各資産のポートフォリオリスクへの貢献度がほぼ等しくなるようなウェイトのセットを見つけます。反復を開始する前に、戦略はすでに等ボラティリティポートフォリオの共分散を通じて各資産の方向性を判断しており、その結果は signs[] 配列に格納されています(+1 はロング、-1 はショート)。反復プロセスでは、この事前に判断された固定符号を一貫して使用し、ウェイトの大きさのみを調整し、方向性は変更しません——これはエンジニアリングの安定性のためであり、数値的な摂動によって反復中にウェイトが方向性を繰り返し変動するのを防ぐためです。

この問題には解析解がないため、反復による近似を行います。各ラウンドで現在のリスク貢献度を計算し、貢献度が大きすぎる資産のウェイトを下げ、小さすぎる資産のウェイトを上げ、収束するまで繰り返し調整します。

javascript
for (var iter = 0; iter < 2000; iter++) { var trc = riskContribs(w, scaledCov); var pv = portVol(w, scaledCov); var target = pv / n; var obj = 0; for (var i = 0; i < n; i++) { for (var j = i + 1; j < n; j++) { var d = Math.abs(trc[i]) - Math.abs(trc[j]); obj += d * d; } } if (obj < 1e-12) break; var nw = [], ns = 0; for (var i = 0; i < n; i++) { var rc = Math.abs(trc[i]); var sign = signs[i]; // 事前に判定した固定符号を使用 var a = target / rc; var v = sign * Math.max(Math.abs(w[i]) * Math.pow(a, 0.5), 1e-6); nw.push(v); ns += Math.abs(v); } // 絶対値で正規化し、各資産のウェイトの絶対値の合計を1にする for (var i = 0; i < n; i++) w[i] = nw[i] / ns; }

収束基準は、すべての資産のリスク寄与度の差分の二乗和が 1e-12 未満になることです。この時点で各資産のリスク寄与度が十分に近づいたとみなし、反復を停止します。最大反復回数は2000回に制限しており、共分散行列が悪条件の場合に無限ループするのを防ぎます。実際には通常数百回以内に収束します。上限に達しても収束しない場合は、入力データまたは共分散行列に問題があると判断し、戦略は等ウェイト・ロングに格下げされるため、システムが空転することはありません。

各資産のリスク寄与度は、そのウェイトに限界リスク(周辺リスク)を乗じたものとして定義され、結果はマイナスになることもあります。これはその資産がポートフォリオ全体のボラティリティを低下させていることを示します。

javascript
function riskContribs(w, cov) { var sv = matVecMul(cov, w); var pv = portVol(w, cov); var trc = []; for (var i = 0; i < w.length; i++) trc.push(w[i] * sv[i] / pv); return trc; }

ウェイトがマイナスになる場合、すなわち空売り

標準的なリスクパリティ戦略は通常ロングのみですが、先物市場では空売りが可能なため、この戦略ではウェイトをマイナスにする拡張を行っています。

判断ロジックは次の通りです。まず等ボラティリティ・リファレンス・ポートフォリオ(高ボラティリティ資産は低ウェイト、低ボラティリティ資産は高ウェイト)を計算し、各資産とこのリファレンス・ポートフォリオとの共分散が正か負かを確認します。共分散が負の場合、その資産はポートフォリオ全体と逆方向に変動する傾向があるため、空売りすることでポートフォリオ全体のリスクを低下させるのに役立ち、ウェイトをマイナスに設定します。これは先物市場では売り建て(ショート)に対応します。

ただし、これは標準的なマルチ空売りリスクパリティの理論的解法ではなく、工学的な近似であることに留意が必要です。厳密なマルチ空売りリスクパリティでは、完全な共分散行列に基づく制約付き最適化が必要となり、計算コストが高くなります。ここでの近似は、多くの市場状況で妥当な方向性判断を提供しますが、複数の資産が同時にリファレンス・ポートフォリオと負の共分散を持つ場合、それらすべてを同時に空売りしてもポートフォリオリスクを低減できるかどうかは、ケースバイケースで検証する必要があります。

javascript
var invVols = [], sumInvVol = 0; for (var i = 0; i < n; i++) { var vol = Math.sqrt(Math.max(scaledCov[i][i], 1e-16)); invVols.push(1 / vol); sumInvVol += 1 / vol; } var eqVolWeights = []; for (var i = 0; i < n; i++) { eqVolWeights.push(invVols[i] / sumInvVol); } var covWithPortfolio = 0; for (var j = 0; j < n; j++) { covWithPortfolio += eqVolWeights[j] * scaledCov[i][j]; } var dir = covWithPortfolio < 0 ? -1 : 1; Log('[方向判断]', LABELS[i], 'と等ボラティリティ・ポートフォリオの共分散:', _N(covWithPortfolio, 8), '→', dir < 0 ? '🔴 空売り(short)' : '🟢 買い持ち(long)');

方向は一旦決定されると固定され、signs[] 配列に格納され、反復求解プロセス全体を通じて変更されません。反復ではウェイトの大きさのみを調整し、方向は変えません。方向が決まったら、次にポートフォリオ全体にどれだけのレバレッジをかけるかを処理する必要があります。


レバレッジは高ければ良いわけではなく、ボラティリティに従う

戦略にはレバレッジ調整メカニズムが組み込まれており、ポートフォリオ全体のボラティリティをあらかじめ設定された目標水準付近に制御することを目的としています。例えるなら、車を運転するときに目標速度を時速60キロとします。高速道路では状況が良いのでアクセルを多めに踏めますが、市街地では状況が複雑なので控えめにします。戦略のレバレッジメカニズムも同様で、市場全体のボラティリティが低いときは適度にレバレッジを上げてポートフォリオのリスク水準を目標に到達させ、市場のボラティリティが高いときは自動的にレバレッジを下げ、エクスポージャーを縮小します。

戦略は1時間足を使用しており、1年はちょうど8760本あるため、年率換算係数は直接 sqrt(8760) を採用します。他の時間足を使用する場合は、この係数を同時に調整する必要があります:15分足なら sqrt(35040)、4時間足なら sqrt(2190)、日足なら sqrt(365) となります。

javascript
function calcLeverage(w, cov) { var pv = portVol(w, cov) * Math.sqrt(8760); if (!isFinite(pv) || pv <= 0) return 1; return Math.min(TARGET_VOL / pv, MAX_LEVERAGE); }

ポートフォリオの年率ボラティリティを目標ボラティリティで割ることで、かけるべきレバレッジ倍率を算出し、上限を設定して極端な状況でのレバレッジ暴走を防ぎます。これは最大のリターンを追求するものではなく、リスク予算管理です。どれだけのリスクを取ってどれだけのリターンを得るかは事前に決められており、相場の動きに応じて漂流することはありません。

レバレッジが計算されると、ポートフォリオはポジションを構築できます。同時に、戦略は現在のボラティリティの高さに応じて、メインループのポーリング間隔を自動的に調整します。ボラティリティが高いほど更新頻度が高くなり、ボラティリティが低いとペースを落とし、不要な計算や取引摩擦を減らします。

javascript
function getAdaptiveSleep(w, cov) { var av = portVol(w, cov) * Math.sqrt(8760); if (av > 0.50) return FAST_INTERVAL; // 15分 else if (av > 0.30) return MID_INTERVAL; // 30分 else return SLOW_INTERVAL; // 60分 }

いつリバランスするか

市場は日々変動するため、ウェイトは最初の設計から徐々に乖離していきます。放置すると、時間の経過とともにポートフォリオが実際に負うリスクが当初の想定から大きくかけ離れてしまいます。戦略ではリバランスをトリガーする条件を2つ設定しています。1つは定時リバランスで、一定時間ごとに強制的にウェイトを再計算します。もう1つは乖離超過で、ある資産の実際のウェイトと目標ウェイトの偏差がしきい値を超えた場合、またはロング・ショートの方向が反転した場合に、即座にリバランスをトリガーし、次の定時を待ちません。

相対乖離を計算する際、分母は前回のウェイトの絶対値です。ある資産のウェイトが極端に小さくなると(ゼロに近づく)、相対乖離が拡大され、頻繁なリバランスを誘発する可能性があります。戦略ではこれを防ぐため、lastWeights[i] がゼロの場合は乖離チェックをスキップし、ゼロ除算による誤トリガーを回避します。

javascript
if (!lastWeights) { needRebal = true; rebalReason = '首次建仓'; } else if ((now - lastTime) > REBALANCE_HOURS * 3600000) { needRebal = true; rebalReason = '定时再平衡(' + REBALANCE_HOURS + 'h)'; } else { for (var i = 0; i < weights.length; i++) { if ((weights[i] >= 0) !== (lastWeights[i] >= 0)) { needRebal = true; rebalReason = LABELS[i] + ' 方向翻转(多↔空)'; break; } if (lastWeights[i] !== 0 && Math.abs(weights[i] - lastWeights[i]) / Math.abs(lastWeights[i]) > DRIFT_THRESHOLD) { needRebal = true; rebalReason = LABELS[i] + ' 权重漂移超阈值'; break; } } }

リバランスがトリガーされた後、戦略は各資産の目標名目金額を計算します。正の値はロング、負の値はショートを表します。その後、現在のポジションと比較し、増やす、減らす、または方向転換を決定します。方向転換の際は、まず逆方向のポジションをクローズしてから新しい方向をオープンし、ロングとショートの両方向を同時に保有しないようにします。

javascript
if (targetSide === 'long' && shortQty > 0) { exchange.CreateOrder(sym, "closesell", -1, shortQty); } if (targetSide === 'short' && longQty > 0) { exchange.CreateOrder(sym, "closebuy", -1, longQty); } if (diffQty > 0) { exchange.CreateOrder(sym, targetSide === 'long' ? "buy" : "sell", -1, diffQty); } else if (diffQty < 0) { exchange.CreateOrder(sym, targetSide === 'long' ? "closebuy" : "closesell", -1, Math.abs(diffQty)); }

これにより、頻繁な取引で大量の手数料が発生することも、ポートフォリオが設計意図から長時間乖離することも防げます。通常、リバランスメカニズムはほとんどの市場変化に対応できます。しかし、市場は時として異常になるため、もう一段の保険が必要です。


もう一つの緊急サーキットブレーカー

通常のリバランスに加えて、戦略には緊急減倉メカニズムがあります。各メインループで現在の全ポジションをチェックし、前回記録した価格と比較して、各方向の不利な変動幅を確認します。ロングで大きく下落、またはショートで大きく上昇した場合(5%超)、戦略は自動的に半分のポジションを削減し、損失を抑え、次のリバランスを待ちません。

javascript
if (pos.side === 'long') { drop = (last - cur) / last; } else if (pos.side === 'short') { drop = (cur - last) / last; } if (drop >= EMERGENCY_DROP) { Log('🚨 緊急リスクトリガー! [' + label + '][' + pos.side + '] 不利変動:', _N(drop * 100, 2) + '%', '前回:', _N(last, 4), '→ 現在値:', _N(cur, 4)); if (mode === 'live') emergencyReduceLive(sym, label, pos.side, EMERGENCY_REDUCE); else emergencyReducePaper(sym, label, cur, pos.side, EMERGENCY_REDUCE); }

実モードでは取引所のクローズ注文を呼び出し、ペーパーモードではローカル状態で証拠金と現金を更新し、ポジション比率に応じて該当する証拠金を解放し、現在の損益を計算して取引記録に書き込みます。

ここで設計上の詳細を説明します:緊急減倉がトリガーされた後、基準価格はすぐにはリセットされず、次のチェックではトリガー前の価格を参照基準とします。つまり、資産が継続的に不利な方向に動く相場では、このメカニズムは各ループで繰り返しトリガーされ、ポジションが枯渇するか、次の通常のリバランスで基準価格がリセットされるまで段階的に減倉します。これは意図的な設計です——極端な一方向相場では、1回減らして止めるよりも継続的に減らす方が損失を抑えられます。ただし、副作用として、価格がしきい値を一時的に下回った後に急反発した場合、過度な減倉により反発を取り逃す可能性があります。通常の市場ではこのメカニズムがトリガーされることはほとんどありませんが、存在することで、少なくともブラックスワンイベントで一貫して耐え続けることは防げます。


実際の動作イメージ

プラットフォーム上で戦略を実行すると、ダッシュボードには各資産の現在のロング/ショート、それぞれのウェイト、現在のレバレッジ倍率、ポートフォリオ全体の年間ボラティリティ推定値、4資産間の相関係数行列がリアルタイムで表示されます。含み益は毎分更新され、戦略のコア計算は市場のボラティリティの高低に応じてポーリング頻度を自動的に切り替えます。

この1分更新はマルチスレッドではなく、メインループの待機中にサブループをネストし、1分ごとに起きて最新価格を取得し、含み益と純資産曲線を更新し、戦略のポーリング間隔に達したらサブループを終了して次の戦略計算に進むことで実現しています。戦略全体は完全にシングルスレッドであり、並行リスクはありません。

javascript
function sleepWithPnlRefresh(totalSleepMs, weights, leverage, covMatrix, corrMatrix) { var elapsed = 0; while (elapsed < totalSleepMs) { var step = Math.min(PNL_INTERVAL, totalSleepMs - elapsed); Sleep(step); elapsed += step; var prices = getTickers(); var equity = calcEquity(prices); var initCap = _G('pt_initCapital') || INIT_CAPITAL; _chart.add(0, [new Date().getTime(), equity]); LogProfit(equity - initCap, '&'); renderDashboard(weights, leverage, covMatrix, corrMatrix, prices, totalSleepMs, true); } }

また、戦略はペーパーモードに対応しており、実際の資金を使用せずにロジックを完全に実行し、パラメータを調整し、動作が期待通りであることを確認してから実モードに切り替えるかどうかを評価できます。この設定でしばらくペーパーモードを実行した結果を見てみましょう。


ペーパーモードの結果

戦略テスト期間中は、現時点では全体として利益が出ています。ポジションの方向:BTC、XAU、SPYはすべてロング、CL原油はショートです。ちょうどこの期間に米イラン情勢の緩和の兆しが見られ、地政学的リスクのプレミアムが低下し、原油価格が比較的明確に下落したため、原油のショートが今回の主要な利益源となりました。この期間の市場の動向は戦略に有利でしたが、将来も同様であるとは限りません。実際、この戦略にはまだ明確に整理できていない点が多く、正直に言っておかないと不誠実です。

img


明確に整理できていない点

この戦略を構築する過程で、いくつかの問題が完全には解決できていません。

第一に、RWAコントラクトの流動性はBTCに比べてはるかに劣ります。SPY、XAU、CLといった銘柄はオンチェーンではまだ新しく、スリッページと板の厚みは未知数であり、ペーパーモードではこの問題を感じることはできませんが、実モードでは実際に発生します。

第二に、この戦略は各資産間である程度の分散が保たれることに依存しています。しかし、市場が極端に恐慌状態にあるとき、リスク資産間の相関は急上昇する傾向があり、分散効果は大幅に低下します。そして、まさにその時にこそ保護が必要です。

第三に、伝統的資産には非取引時間帯があり、価格はほとんど動きませんが、BTCは24時間変動します。これにより共分散行列が資産間の実際の連動性を過小評価することになります——米国株が取引終了後もBTCは動き続け、この期間の変動に対応するSPYデータはありません。伝統的市場が開く頃には、戦略の連動性判断が遅れている可能性があります。

第四に、過去のデータが限られているため、短い期間での共分散行列の安定性には疑問があります。EWMA減衰係数、目標ボラティリティ、リバランスしきい値などのパラメータはすべて経験値であり、厳密な検証を経ていません。ショート判断には等ボラティリティ参照ポートフォリオの共分散符号を使用していますが、これは工学的な近似です。複数の資産が同時に参照ポートフォリオとの共分散が負となった場合、それらを同時にショートすることが確かにポートフォリオリスクを低減するかは、逐一検証する必要があり、単純に適用できません。暗号資産自体はファットテール特性を持ち、実際のリターン分布は正規分布から乖離しており、極端な相場では共分散行列によるリスク推定が過小評価されます。これは現在のフレームワークを使用する上で受け入れなければならない仮定のバイアスです。

第五に、実環境で方向転換する際、ポジション決済の指値を出した後、戦略は一定の待機時間を経てそのまま次の建て玉を実行し、約定の確認を待たない。取引所の応答が遅い場合やネットワーク遅延が大きい場合、旧ポジションが完全に決済されないまま新ポジションを建てるリスクがある。模擬環境では実際の約定がないため、この問題は認識できない。実環境に切り替える前には、該当取引所の応答速度に基づいて待機時間の調整が必要かどうかを評価する必要がある。

これらの問題は、模擬環境を回してみただけでは発見できない。より詳細なモデル化と理論的な導出を行い、一つ一つの仮説を真面目に検証して初めて、このロジックが暗号資産市場で本当に通用するかどうかが分かる。


最後に

この戦略を作った出発点は単純だ:暗号資産市場が弱気相場の中、RWA先物がちょうど主要資産クラスのマップを補完し、伝統的な金融には数十年の蓄積がある資産配分理論がある。この二つが重なったから、試してみる価値があると思った。コードは完全で、ロジックは透明、パラメータは調整可能だ。だが、結局これはあくまでスタート地点に過ぎず、本当に実環境に耐え得る資産配分戦略にはほど遠い。もしより良いアイデアがあれば、ぜひ一緒に完成させてほしい。

上記の内容は戦略の探求過程を記録したものであり、いかなる投資アドバイスを構成するものではない。先物取引には大きなリスクが伴い、模擬環境のパフォーマンスは実環境の結果を保証しない。実際の資金を投入する前に、関連するリスクを十分に理解すること。

戦略ソースコード: RWA主要資産クラス・リスクパリティ戦略

Comment
All comments (0)
No data
No data
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)