コンテンツにスキップ

ポジションサイジング

ポジションサイジングは、1回のトレードで失ってよい金額から建玉数量を逆算する資金管理です。勝率や期待値を語る前に、連敗しても退場しない取引数量を先に決めるための工程で、エントリー前の必須チェックにあたります。

ここでは口座リスクの決定、リスク額 ÷ (損切りpips × 1pip価値) による数量計算、そしてレバレッジと必要証拠金、複数ポジション合計リスクによる調整までを扱います。

定義

ポジションサイジングは、1回のトレードで失ってよい金額から建玉数量を決める資金管理です。先にロットを決めてから損切りを置くのではなく、損切りされたときの損失額から逆算します。

Investopedia はポジションサイジングを、口座サイズとリスク許容度を考慮して売買単位数を決める処理として説明しています。要点は「口座リスク」「トレードリスク」「建玉数量」の3段階です。

基本式

口座通貨を JPY、対象を USD/JPY とします。

risk_amount=equity×risk_pct\text{risk\_amount} = \text{equity} \times \text{risk\_pct} position_units=risk_amountstop_pips×pip_value_per_unit\text{position\_units} = \frac{\text{risk\_amount}} {\text{stop\_pips} \times \text{pip\_value\_per\_unit}}

USD/JPY では、通常 1pip は 0.01円 です。したがって、1通貨あたりの 1pip 価値は次のようになります。

pip_value_per_unit=0.01 JPY\text{pip\_value\_per\_unit} = 0.01 \text{ JPY}

よって USD/JPY の円建て口座では、次の簡略式でよいことになります。

position_units=equity×risk_pctstop_pips×0.01\text{position\_units} = \frac{\text{equity} \times \text{risk\_pct}} {\text{stop\_pips} \times 0.01}

ロット表示に直します。

lots=position_unitslot_size\text{lots} = \frac{\text{position\_units}}{\text{lot\_size}}

lot_size は業者仕様に合わせます。一般的には、標準ロットは 100,000通貨、ミニロットは 10,000通貨、マイクロロットは 1,000通貨 として扱います。より詳しい数量計算はポジションサイズ計算ツールでも確認できます。

pip価値

pip は為替レートの最小変動単位として使われます。Investopedia は、JPY 建てペアでは pip が小数第2位、つまり 0.01 であると説明しています。

USD/JPY の損益は、基本的に次の式で計算します。

pnl_jpy=position_units×price_move\text{pnl\_jpy} = \text{position\_units} \times \text{price\_move}

price_move0.01円 なら 1pip です。

数量1pip価値25pips損切りの損失
1,000通貨10円250円
10,000通貨100円2,500円
100,000通貨1,000円25,000円

USD/JPY では、数量が2倍なら pip 価値も2倍になります。レートが 150.00 でも 160.00 でも、円建てで見た 1pip 価値は 数量 × 0.01円 で変わりません。ただし、口座通貨が USD の場合は、円損益を USD/JPY レートで割って USD 換算します。

pip_value_usd=position_units×0.01USDJPY\text{pip\_value\_usd} = \frac{\text{position\_units} \times 0.01}{\text{USDJPY}}

例として、USD/JPY が 155.00100,000通貨 なら次のようになります。

pip_value_usd=100000×0.01155.00=6.45 USD\text{pip\_value\_usd} = \frac{100000 \times 0.01}{155.00} = 6.45 \text{ USD}

pip 価値だけを取り出す計算はpip価値計算ツールにまとめています。

%リスクからの逆算

例として、口座資金 1,000,000円、1回のリスク 1%、損切り幅 25pips で USD/JPY を取引します。

risk_amount=1000000×0.01=10000\text{risk\_amount} = 1000000 \times 0.01 = 10000 position_units=1000025×0.01=40000\text{position\_units} = \frac{10000}{25 \times 0.01} = 40000

結論は 40,000通貨 です。1pip 価値は 400円、25pips 逆行時の損失は 10,000円 になります。

40000×0.01=40040000 \times 0.01 = 400 400×25=10000400 \times 25 = 10000

この計算では、エントリー方向は関係しません。ロングでもショートでも、損切りまでの pips 幅と数量が同じなら、想定損失は同じです。

損切り幅との関係

同じ 1% リスクでも、損切り幅が広いほどロットは小さくなります。

口座資金リスク損切り幅数量1pip価値
1,000,000円1%10pips100,000通貨1,000円
1,000,000円1%25pips40,000通貨400円
1,000,000円1%50pips20,000通貨200円
1,000,000円1%100pips10,000通貨100円

損切り幅をチャート構造ではなく「ロットを大きくしたいから狭くする」のは誤りです。先に無効化ラインを決め、その距離に合わせて数量を下げます。損切り位置そのものの決め方は損切りの置き方を参照してください。

レバレッジと必要証拠金

レバレッジは、同じ口座資金でどれだけ大きな名目金額を持てるかを表します。必要証拠金は、建玉の名目金額をレバレッジで割ります。

USD/JPY の円建て必要証拠金は、概算で次の式になります。

notional_jpy=position_units×USDJPY\text{notional\_jpy} = \text{position\_units} \times \text{USDJPY} required_margin=notional_jpyleverage\text{required\_margin} = \frac{\text{notional\_jpy}}{\text{leverage}}

例として、USD/JPY 155.0040,000通貨、レバレッジ 25倍 を考えます。

notional_jpy=40000×155.00=6200000\text{notional\_jpy} = 40000 \times 155.00 = 6200000 required_margin=620000025=248000\text{required\_margin} = \frac{6200000}{25} = 248000

この取引の想定損失は 10,000円 ですが、必要証拠金は 248,000円 です。リスク額と必要証拠金は別物である点に注意します。必要証拠金だけを個別に確かめたいときは必要証拠金計算ツールを使います。

Investopedia は、50:1 のレバレッジなら最低証拠金率が 1/50 = 2% になる例を示しています。同じ考え方で、25倍なら証拠金率は 1/25 = 4% です。

margin_rate=1leverage\text{margin\_rate} = \frac{1}{\text{leverage}} leverage=1margin_rate\text{leverage} = \frac{1}{\text{margin\_rate}}

レバレッジはpip価値を変えない

レバレッジを上げても、40,000通貨 の 1pip 価値は 400円 のままです。変わるのは必要証拠金であり、損益の刻みではありません。

Investopedia も、pip 価値は口座変動に影響するが、レバレッジ自体は pip 価値を変えないと説明しています。

条件25倍10倍
USD/JPY155.00155.00
数量40,000通貨40,000通貨
1pip価値400円400円
25pips損失10,000円10,000円
必要証拠金248,000円620,000円

高レバレッジが危険なのは、pip 価値が増えるからではありません。少ない証拠金で大きな数量を建てられるため、結果として過大ロットになりやすいからです。

実効レバレッジ

実効レバレッジは、現在の建玉総額が口座資金の何倍かを示します。

effective_leverage=total_notional_account_currencyequity\text{effective\_leverage} = \frac{\text{total\_notional\_account\_currency}}{\text{equity}}

例として、口座資金 1,000,000円、USD/JPY 155.0040,000通貨 を考えます。

effective_leverage=40000×155.001000000=6.2\text{effective\_leverage} = \frac{40000 \times 155.00}{1000000} = 6.2

この取引は、最大レバレッジ 25倍の口座であっても、実効レバレッジは 6.2倍 です。最大レバレッジは上限であり、常に上限まで使う必要はありません。証拠金維持率の観点は証拠金維持率計算ツールでも確認できます。

複数ポジション時の調整

複数ポジションでは、各ポジションのリスクを足し上げます。

portfolio_risk=i=1nrisk_amounti\text{portfolio\_risk} = \sum_{i=1}^{n} \text{risk\_amount}_i

口座資金に対する比率で見ます。

portfolio_risk_pct=portfolio_riskequity\text{portfolio\_risk\_pct} = \frac{\text{portfolio\_risk}}{\text{equity}}

個別リスクを 1% にしても、同時に5本持てば最大損失は 5% になります。USD/JPY、EUR/JPY、GBP/JPY のロングを同時に持つ場合、実質的には「円ショート」に偏ります。個別ペアが違っても、円高局面では同時に損切りされやすくなります。

実務では次の上限を置きます。

管理対象目安
1トレードのリスク0.5%〜1.0%
同一通貨テーマの合計リスク1.0%〜2.0%
全ポジション合計リスク3.0%〜5.0%
指標発表前の新規リスク通常の半分以下

同じ USD/JPY を分割エントリーする場合、追加ごとに新しい 1% を使ってはいけません。最初に「このアイデア全体で最大いくら失うか」を決め、その範囲内で分割します。累積損失そのものの管理はドローダウン管理を参照してください。

例として、口座資金 1,000,000円、USD/JPY 押し目買い全体の許容損失 1.5% = 15,000円 とします。

分割リスク配分損切り幅数量
1回目7,500円30pips25,000通貨
2回目5,000円25pips20,000通貨
3回目2,500円20pips12,500通貨

合計リスクは 15,000円 で固定します。追加エントリーは利益を伸ばす手段であり、損失上限を曖昧にする手段ではありません。

計算手順

  1. 口座資金を確認する
  2. 1回あたりのリスク率を決める
  3. チャートから損切り位置を決める
  4. エントリー価格と損切り価格の差を pips に直す
  5. USD/JPY の pip 価値を計算する
  6. 数量を逆算する
  7. 業者の最小取引単位に合わせて切り下げる
  8. 必要証拠金を計算する
  9. 複数ポジション合計リスクを確認する
  10. 指標、週末、流動性低下時間帯ならさらに縮小する

Python 実装スケッチ

from dataclasses import dataclass
from math import floor
@dataclass(frozen=True)
class PositionSize:
units: int
lots: float
risk_amount: float
pip_value: float
required_margin: float
effective_leverage: float
def floor_to_step(value: float, step: int) -> int:
return int(floor(value / step) * step)
def usd_jpy_position_size(
equity_jpy: float,
risk_pct: float,
stop_pips: float,
usd_jpy: float,
leverage: float = 25.0,
lot_size: int = 100_000,
unit_step: int = 1_000,
) -> PositionSize:
if equity_jpy <= 0:
raise ValueError("equity_jpy must be positive")
if not (0 < risk_pct < 1):
raise ValueError("risk_pct must be expressed as a decimal, e.g. 0.01")
if stop_pips <= 0:
raise ValueError("stop_pips must be positive")
if usd_jpy <= 0:
raise ValueError("usd_jpy must be positive")
if leverage <= 0:
raise ValueError("leverage must be positive")
pip_size = 0.01
risk_amount = equity_jpy * risk_pct
raw_units = risk_amount / (stop_pips * pip_size)
units = floor_to_step(raw_units, unit_step)
pip_value = units * pip_size
notional_jpy = units * usd_jpy
required_margin = notional_jpy / leverage
effective_leverage = notional_jpy / equity_jpy
lots = units / lot_size
return PositionSize(
units=units,
lots=lots,
risk_amount=risk_amount,
pip_value=pip_value,
required_margin=required_margin,
effective_leverage=effective_leverage,
)
size = usd_jpy_position_size(
equity_jpy=1_000_000,
risk_pct=0.01,
stop_pips=25,
usd_jpy=155.00,
leverage=25,
unit_step=1_000,
)
print(size)

期待される結果は、40,000通貨0.4標準ロット、1pip 価値 400円、必要証拠金 248,000円、実効レバレッジ 6.2倍 です。

複数ポジションの合計リスクも関数化します。

from dataclasses import dataclass
@dataclass(frozen=True)
class OpenRisk:
symbol: str
units: int
stop_pips: float
pip_size: float
quote_to_account: float = 1.0
def position_risk_amount(pos: OpenRisk) -> float:
return pos.units * pos.stop_pips * pos.pip_size * pos.quote_to_account
def portfolio_risk(open_positions: list[OpenRisk], equity: float) -> tuple[float, float]:
total = sum(position_risk_amount(pos) for pos in open_positions)
return total, total / equity
positions = [
OpenRisk("USD/JPY", 40_000, 25, 0.01),
OpenRisk("EUR/JPY", 20_000, 40, 0.01),
]
risk_jpy, risk_pct = portfolio_risk(positions, equity=1_000_000)
print(risk_jpy, risk_pct)

落とし穴

  • ロットから逆算しない:「1ロット持ちたい」から損切りを調整すると、資金管理が崩れる。
  • pipsと円を混同しない:USD/JPY の 25pips は 0.25円 であり、25円ではない。
  • レバレッジをリスク管理と勘違いしない:レバレッジ設定は必要証拠金を変えるだけで、同じ数量なら損益は同じである。
  • 証拠金維持率だけを見ない:維持率が高くても、損切り幅と数量が大きければ1回の損失は大きい。
  • 複数ポジションの相関を無視しない:USD/JPY ロング、EUR/JPY ロング、GBP/JPY ロングは別トレードではなく、円安方向への集中ベットである。
  • 分割エントリーでリスクを増殖させない:追加建ては、最初に決めた合計リスク枠の中で行う。
  • スプレッドを無視しない:損切り幅が短いスキャルほど、スプレッドと約定滑りが実質リスクを押し上げる。
  • 指標発表前に通常サイズを使わない:米CPI、FOMC、日銀会合、米雇用統計では、損切り価格で約定しない前提を置く。
  • 口座通貨の換算を忘れない:円建て口座の USD/JPY は簡単だが、USD 建て口座やクロス円以外では換算レートが必要になる。
  • 最小取引単位を切り上げない:計算結果が 40,400通貨 で取引単位が 1,000通貨 なら、40,000通貨 に切り下げる。

参考

  • Investopedia — “How Much Are Pips Worth and How Do They Work in Currency Pairs?”
  • Investopedia — “Master Position Sizing: Minimize Risk and Boost Investment Returns”
  • Investopedia — “Maximize Forex Profits with Strategic Position Sizing”
  • Investopedia — “How Leverage Works in the Forex Market”
  • Investopedia — “How Does Leverage Affect Pip Value?”