ボラティリティ調整ドルコスト平均(VADCA)完全ガイド:初心者でもできる“リスク一定”の資金配分アルゴリズム

投資戦略
本稿は「ボラティリティ調整ドルコスト平均(VADCA: Volatility-Adjusted Dollar-Cost Averaging)」という、固定額の積立(DCA)を“価格”ではなく“リスク(ボラティリティ)”に合わせて動的に配分する手法を、個人投資家でも実装できる水準まで徹底的に噛み砕いて解説します。週1回や月1回の積立で、相場が荒いときは控えめに、落ち着いているときは厚めに買い付け、リスク一定の原則に近づけるのが狙いです。

従来のDCAは「一定額を一定間隔で買う」ため、ボラティリティが高騰した局面でリスク超過になりやすく、逆に穏やかな局面ではリスクを取り切れない弱点があります。VADCAはこの非効率を埋める実務的な改良版です。価格予測を一切使わず、“狙うのはリターンではなくリスクの一貫性”。初心者でも再現可能な、地味だが堅実な仕組みです。

1. VADCAの構造(直感と数式)

基本はシンプルです。毎回の積立予定額を基準予算とし、直近の推定ボラティリティで割って配分係数を決めます。推定ボラが高ければ配分を絞り、低ければ配分を増やすだけです。

(核心式)
配分係数 w_t = clamp( 目標ボラ σ* / 推定ボラ σ̂_t , 下限, 上限 )
買付額 S_t = 基準予算 B × w_t
未使用分 U_t = B − S_t (翌回に繰越 or 現金で保持)
  • σ*(シグマ・スター)= 投資家が決める目標(年率)ボラティリティ。例:年率10%(日次換算は √{252} で割る)。
  • σ̂_t = 直近データから推定した現在の(年率)ボラティリティ。推定法は移動標準偏差(SD)、EWMA、ATR換算など実務的なものでOK。
  • clamp(x, 下限, 上限) は極端な配分にならないよう天井/床を設定(例:0.5~2.0)。

これにより、相場が荒いとき(σ̂_t > σ*)は S_t が基準より減少、穏やかなとき(σ̂_t < σ*)は増加します。価格は予測しないのに、含み損の深掘りやドローダウンの凸凹を緩和しやすくなります。

2. 推定ボラティリティの実務的な求め方

初心者に勧めるのは、移動標準偏差SD(20~60営業日)をベースに、年率化(×√252)したもの。暗号資産など24/7市場は日次足×√365で年率化します。FXはATR(14日)を年率pipsに換算して用いても良いでしょう。

年率ボラ σ̂(単純SD)= √(平均{(r_i − 平均r)^2}) × √252
r_i = ln(P_i / P_{i-1}) などの対数収益率

EWMAは最新データを重く扱うため、急変時の追従性が高まります。

EWMA分散_t = λ × 分散_{t-1} + (1−λ) × r_t^2
年率ボラ σ̂_t = √(EWMA分散_t) × √252   (目安 λ=0.94)

どちらでも大差は出ません。大切なのは、一貫した手順で更新することと、過剰反応を抑えるための上下限(clamp)です。

3. 実装フロー(チェックリスト)

  1. 投資対象の決定:分散の基本形は「株式インデックスETF+現金」。暗号資産を併用する場合は相関とボラの桁が違う点に注意。
  2. 口座準備:国内証券や暗号資産交換業者の口座を用意。本人確認(eKYC)・入金方法(振込/即時入金)・積立設定(自動/手動)を整える。
  3. 基準予算Bの設定:例:週5万円。無理のない可処分キャッシュフローから逆算。
  4. 目標ボラσ*の設定:初心者は年率8~12%を目安。保守的なら6~8%、攻めるなら12~15%。
  5. 推定ボラσ̂の更新:毎回の発注直前にアップデート。欠損日は補間しない(シンプルで良い)。
  6. 配分係数w_tの計算:w_t = clamp(σ*/σ̂_t, 0.5, 2.0)等。
  7. 買付額S_tの算出:S_t = B × w_t。余剰U_tは現金で保持か、翌回に繰越。
  8. 発注と記録:約定価格、数量、手数料、使用指標(σ̂_t, w_t)を台帳に必ず残す。
  9. モニタリング:月次で資産推移、年率ボラの実現値、最大ドローダウンを確認。
  10. 年次レビュー:σ*や上下限の再設定、対象資産の見直し。

4. 例で理解:S&P500連動ETFを「週5万円」積立する場合

仮に目標ボラσ* = 年率10%、上下限=0.5~2.0、基準B=5万円/週とします。直近の推定ボラが以下の通りだったと仮定します(概念図)。

週   推定ボラσ̂_t(年率)  w_t=clamp(σ*/σ̂_t)  買付額S_t(円)
1    8%                     1.25                  62,500
2    10%                    1.00                  50,000
3    15%                    0.67                  33,333
4    5%                     2.00(上限)         100,000
…

荒い週3では買い控え、穏やかな週4で厚めに買い付けています。いずれも価格の高安は見ていない点がポイント。割高でも薄く、割安でも厚くなる傾向が自然と混ざるため、DCAよりも平均取得単価のブレが抑えられ、ドローダウンの谷が浅くなる可能性が期待できます。

5. FX版:ATRで“1トランシェの許容損失”を一定にする

FXは現物積立の概念が曖昧ですが、スイング玉を段階的に構築する際にVADCAが機能します。考え方は「ATRから1建玉の損失見込みを推定し、円換算の許容額に合わせてロットを可変にする」。

許容損失(円)R = 口座残高 × リスク%(例2%)
想定逆行幅(pips)D = k × ATR(14)  (k=1.0~1.5)
ロット L = R ÷ (D × 1pip価値)  (JPY口座×USDJPYなどは自動換算)

これを週1回のエントリーや買い増しに適用すると、相場が荒い週はロット縮小、静かな週はロット増加となり、実質的な“リスク一定のDCA”が実現します。

MQL4サンプル:ATRに連動する可変ロット(成行エントリーの例)
//+------------------------------------------------------------------+
//| VADCA_ATR_PositionSizer.mq4 (サンプル)                            |
//+------------------------------------------------------------------+
#property strict
input double RiskPercent = 2.0;   // 1トランシェの許容リスク(%)
input int    ATR_Period  = 14;
input double ATR_Mult    = 1.2;   // 想定逆行幅の倍率
input int    Slippage    = 3;
input bool   IsBuy       = true;  // true=Buy, false=Sell

double PipValuePerLot(string symbol){
   // JPYストレートなど主要通貨前提の簡略版
   double point = MarketInfo(symbol, MODE_POINT);
   double pip   = (StringFind(symbol, "JPY") >= 0) ? 0.01 : 0.0001;
   double lotPipValue = 10.0; // 1標準ロットの1pip価値(USD口座で主要通貨想定の概算)
   // ブローカー仕様により厳密計算は調整してください
   if(StringFind(symbol, "JPY") >= 0) lotPipValue = 1000.0; // 概算
   return lotPipValue;
}

int start(){
   string sym = Symbol();
   double bal = AccountBalance();
   double riskYen = bal * RiskPercent/100.0;

   double atr = iATR(sym, PERIOD_D1, ATR_Period, 0);
   if(atr <= 0) { Print("ATR取得失敗"); return(0); }

   // 想定逆行幅(pips) ※簡略換算
   bool isJPY = (StringFind(sym, "JPY") >= 0);
   double pip = isJPY ? 0.01 : 0.0001;
   double D_pips = (atr / pip) * ATR_Mult;

   double pipValue = PipValuePerLot(sym);
   double lot = riskYen / (D_pips * pipValue);
   // ロットのクリップ
   double minLot = MarketInfo(sym, MODE_MINLOT);
   double maxLot = MarketInfo(sym, MODE_MAXLOT);
   double lotStep= MarketInfo(sym, MODE_LOTSTEP);
   lot = MathMax(minLot, MathMin(maxLot,  MathFloor(lot/lotStep)*lotStep ));

   int ticket;
   if(IsBuy){
      ticket = OrderSend(sym, OP_BUY, lot, Ask, Slippage, 0, 0, "VADCA", 0, 0, clrBlue);
   }else{
      ticket = OrderSend(sym, OP_SELL, lot, Bid, Slippage, 0, 0, "VADCA", 0, 0, clrRed);
   }
   if(ticket<0) Print("発注失敗:", GetLastError());
   else         Print("発注成功 Lot=", lot, " ATR=", atr, " D(pips)=", D_pips);
   return(0);
}
//+------------------------------------------------------------------+

実運用では、指値/逆指値の価格設計複数トランシェの距離合算リスクの上限(例:全玉で口座の5%以内)も併せて管理してください。

6. 暗号資産での使い方(24/7市場に最適)

暗号資産はボラが桁違いに大きいので、上下限のクリップが極めて重要です(例:0.25~1.5)。推定ボラの年率換算は日次×√365が無難。未使用分U_tはステーブルコイン利回りやMMF代替に一時退避するなどキャッシュ効率も意識しましょう。

  • 手数料とスプレッド:自動積立手数料の総額がリターンを侵食します。約定回数×単価で必ず試算。
  • 上限の適用:静かな局面でS_tが膨らみすぎないよう、予算の1.5倍程度に制限。
  • 複数銘柄の同時適用:相関低めの2~3銘柄で内部分散(後述の逆ボラ配分を併用)。

7. マルチアセットVADCA(逆ボラ配分×DCAの融合)

対象が2資産A/Bのとき、各回の相対ボラで予算Bを割り振ると、簡易リスクパリティになります。

資産iの逆ボラ重み  v_i = 1 / σ̂_i
正規化重み          w_i = v_i / (v_A + v_B)
各資産の買付額      S_{i,t} = B × w_i × clamp(σ*/σ̂_i, 下限, 上限)

比率は毎回更新。価格予測を捨て、リスクの均しに一点集中します。長期の総合的なドローダウン耐性を高めやすい設計です。

8. 実務の落とし穴(必読)

  • 極端な急変時の過小/過大反応:推定ボラに外れ値が入るとS_tが振れます。EWMA+Winsorize(上位1%切り)などで平滑化。
  • 上限/下限の未設定:clamp無しは禁物。初心者は0.5~1.5から。
  • 未使用分の放置:U_tは台帳で管理。繰越ルール(例:翌月の最初に一括充当)を決めておく。
  • 対象の相関を無視:暗号資産×ハイベータ株などは合成ボラが跳ねやすい。マルチアセットでは資産別のw_iを導入。
  • 税コストの軽視:特定口座(源泉徴収あり)の活用、損益通算や繰越控除の有無など、実効税率は戦略の一部。

9. 口座準備と実務オペレーション

ここでは一般的な段取りのみ記します。

  1. 口座開設:本人確認(eKYC)、マイナンバー提出、入出金手段の設定。
  2. 積立サイクルの決定:給料日直後の週次を推奨。ルーティン化が最重要。
  3. 台帳テンプレ:日付、資産、B、σ̂、w、S、価格、数量、手数料、U残、総資産、備考。
  4. 自動化:スプレッドシート+関数(STDEV, VAR, EWM)でσ̂を更新、買付額を自動算出。API取引は上級編。
  5. 監査性:毎回の根拠(σ̂、w)のスクリーンショットを保存。将来の振り返りが容易。

10. Q&A(初心者の疑問に即答)

Q1:「結局、DCAより儲かりますか?」
A:相場依存です。VADCAはドローダウン耐性とリスク一貫性の改善が主目的。利回りの上振れは二次効果として“起こり得る”に留めるのが誠実です。

Q2:「推定ボラはどれが正解?」
A:SDかEWMAの“どちらかに固定”。頻繁な乗り換えは過学習の温床。

Q3:「σ*(目標ボラ)はどう決める?」
A:年率ドローダウン耐性と睡眠の質で逆算。“翌月も同額を続けられるか”が実務基準。

Q4:「現金が余る(U_tが増える)と機会損失では?」
A:その通り。だからこそ繰越ルール短期金利の活用をセットに。

11. まとめ:価格ではなく“リスク”に合わせる

VADCAは、価格当てを放棄し、毎回のリスク量を整えるだけのアルゴです。習熟のコツは、(1)手順の固定、(2)上下限の堅守、(3)台帳の継続。この3点さえ守れば、初心者でも生存率の高い積立に近づけます。小さく始め、ルールを崩さず、続けてください。

コメント

タイトルとURLをコピーしました