損益計算機はどんな計算式を使う?
直接の答え
損益計算機(Profit Loss Calculator)は通常、2段階モデルを使います。(1)建値と決済値から、正しい単位(多くの場合pipまたはポイント)での値動きを計算し、(2)その値動きをポジションサイズとpip/ポイントの価値(pip/point value)で金額に変換します。基本構造は実装間で安定しています。計算機ごとに変わるのは、正確な単位の慣習(pipかpointか)、契約サイズの慣習、そしてコスト(スプレッド/手数料/フィー)がどう差し引かれるかです。
自己完結的に説明したい場合は、方向を考慮した形で計算式を述べ、単位の前提を明示できます。
- pip/ポイントでの値動き:その金融商品の提示形式(quote format)に依存します。
- 方向係数:利益は、ロング/ショートのポジションに一致する符号を使います。
- 金額への変換:金額(money per pip/point)は、ロットサイズとその金融商品の契約/pip価値に依存します。
- コスト:スプレッド/手数料/フィーは、同じ通貨とタイミングの慣習で差し引きます。
メカニズム:シンプルで検証可能な損益モデル
1) 入力と前提から始める
計算機は通常、次のような入力を取ります。
- ポジション方向:ロング(+)またはショート(−)。
- 建値と決済値(または現在値)。
- ポジションサイズ(FXでは、多くの場合「ロット」で表されます)。
- その金融商品の契約とpip/ポイントの慣習。
- コスト:スプレッドおよび/またはコミッション、場合によっては追加のフィー。
- 通貨の慣習:出力を口座通貨にするのか、指定した建値通貨(quote currency)にするのか。
精度のための重要要件は一貫性です。価格から計算する単位(pip/ポイント)と、金額に変換するときに使う単位が一致している必要があります。
2) pipまたはポイントでの値動きを計算する
多くのFXの提示形式では、「pip」は価格の標準化された小数変化です。一般的には、4桁小数で提示される多くのペアではpipサイズが0.0001ですが、別の小数桁を使う金融商品もあります。pipの定義は金融商品ごとに異なるため、損益計算機は通常、pipサイズ(またはポイントサイズ)パラメータに依存します。
一般的な表現は次のとおりです。
Price move (in pips) = (Exit − Entry) / pip_size
Direction-aware pip move = direction × (Exit − Entry) / pip_size
ここで:
- direction = ロングは+1、ショートは−1。
- pip_size はその金融商品のpipの分数(pip fraction)。
計算機がpipの代わりにポイントを使う場合は、pip_sizeをpoint_sizeに置き換えます。
3) pip/ポイントの動きを金額に変換する
損益計算機は、「pip movement」をポジションサイズと、1pipあたりの金額(money-per-pip value)を使って「money movement」に変換します。
一般的な構造は次のとおりです。
Gross P/L = (Direction-aware pip move) × (money_per_pip)
money_per_pip は次で決まります:
- 金融商品の契約/pip価値の定義、
- ポジションサイズ(ロットサイズ)、
- そして場合によっては口座通貨への換算。
自己チェックの観点では、計算機のmoney_per_pipは本質的に「選んだポジションサイズに対して、1 pipあたりにその金融商品が(計算機の出力通貨で)どれだけ増減するか」です。
4) 一貫したタイミングと通貨でコストを差し引く
多くの損益計算機は、**純損益(net P/L)を、単なる総額の価格変動によるP/L(gross price-move P/L)**だけではなく出力します。コストには次が含まれます。
- スプレッド(多くの場合、建値/決済値の差として表されるか、明示的に差し引かれます)、
- コミッション、
- その他のフィー。
一般的な純損益モデルは次のとおりです。
Net P/L = Gross P/L − (total_costs)
重要な制限:コストは、出力と同じ通貨で表され、かつ建値/決済値がどう解釈されるか(たとえば、建値/決済値がすでにbid/ask調整済みの価格を表すかどうか)に合わせて一貫して適用される必要があります。
5) 説明できるコンパクトな計算式
典型的な計算機の構造に合う1行が欲しい場合は、次のように提示できます。
Net P/L = direction × (Exit − Entry)/pip_size × money_per_pip − total_costs
この計算式は特定のプラットフォームに紐づいていません。多くの損益計算機の背後にある安定した仕組みを捉える一般モデルです。
証拠または例:単位が明確な実例の数値
以下は、単位、丸め、符号に焦点を当てたシンプルな例です。
例A:価格変化→pip→金額(コストなし)
前提(検証時に明示してください):
- ポジション:ロング(direction = +1)
- Entry = 1.1000
- Exit = 1.1010
- pip_size = 0.0001
- money_per_pip = 10(pipあたりの通貨単位)
- total_costs = 0
手順1:pipでの値動き
- (Exit − Entry) / pip_size = (1.1010 − 1.1000) / 0.0001 = 0.0010 / 0.0001 = 10 pips
手順2:方向を考慮したpipの動き
- direction × 10 = +10 pips
手順3:総損益(gross P/L)
- Gross P/L = 10 pips × 10 = 100 通貨単位
手順4:純損益(net P/L)
- Net P/L = 100 − 0 = 100
同じpipの定義とmoney-per-pipの慣習を使う計算機なら、この結果と一致するはずです。
例B:ショートで符号が反転する
同じ値を使いますが、direction = −1 とします。
- direction-aware pip move = −1 × 10 pips = −10 pips
- Net P/L = −10 × 10 = −100(コストなしと仮定)
この符号反転はよくあるチェックです。同じ建値/決済値で、ロングとショートが同じ符号を示すなら、何かが不整合です。
例C:スプレッドをコストとして含める(概念)
前提:
-
例Aと同じ
-
total_costs = 20 通貨単位
-
Net P/L = 100 − 20 = 80
異なる計算機は、スプレッドを次のどちらかで実装することがあります。
(1)Exit − Entryを計算する前にbid/ask価格を調整する、または(2)gross P/Lを計算した後にコスト額を差し引く。
どちらのアプローチも、同じように一貫して適用されるなら同等になり得ます。
丸めと、計算機で違いが出る場所
よくある丸めポイント
計算機は1つ以上の段階で丸めることがあります。
- pip/ポイント数を丸める(たとえば、端数のpipの動きを固定のpips数として扱う)。
- 変換後の金額を丸める。
- コストを別々に丸める。
普遍的な標準を主張せずに丸めルールを述べる実用的な方法:
- 「価格変化をpip/ポイントに変換するとき、またはpip数を金額に変換するときに、丸めが発生する可能性があります。」
独立に検証するなら、計算機が次のどちらを行うか確認してください。
- 中間値(pips、money per pip)を表示するか、または
- 最終結果だけを提示するか。
丸めのある検証例
ある値動きが変換前に9.6 pipsを生むと仮定し、money_per_pip = 10 とします。
- まずpip数を10 pipsに丸める場合:gross ≈ 100。
- 丸めずに9.6を使って変換する場合:gross ≈ 96。
したがって、丸めの段階が違うため、2つの計算機は同じ全体の計算式を実装していても結果が一致しないことがあります。
重要な制限とリスク(失敗パターン)
重大な制限1:pip/ポイントの慣習の不一致
pip_sizeが計算機の想定と異なる場合、計算されるpipの動きが変わり、金額結果が誤りになります。
重大な制限2:契約サイズによるmoney_per_pipの誤り
money_per_pipは、契約とポジションサイズの慣習に依存します。ロットサイズを、計算機が想定している慣習とは異なる形で入力すると、換算係数が変わります。