リスク%と実際の決済で誤差が生じる原因はいくつか考えられます。
まず、考えられるのが、注文がスリップしていることです。
例えば、現在の価格が130円で、買いポジションを持ち、120円に損切ライン(SL)を設定していたとします。
システム上では120円を割り込んだ時点で決済が行われるはずですが、実際の相場では、1ポイントずつの緩やかな動きもあれば、大きく動くこともあります。
仮に130円だった現在価格が次の瞬間に110円と20円も急落した場合、120円にストップを設定していても、その間に価格が大きく動いたため、実際には110円で決済される可能性があります。必ずこの価格で決済されるわけではありません。
20円の急落は現実的にはあまり起こらないかもしれませんが、日経225先物では、一瞬で100円落ちた経験を持つトレーダーもいるでしょう。そのような状態でストップを置いていても、大きく乖離した価格で決済されることがあります。
つまり、注文を出した価格と実際の約定価格には差が生じることで、計算上1%となるはずが、スリップした分だけ、リスク計算に影響を与えます。
また、取引単位やロットサイズに応じて、リスクの計算結果に誤差が生じることがあります。証拠金の割合にもよりますが、最小ロット数に影響する場合には誤差が大きくなります。
最小ロットが0.01のブローカーで、リスク1%が1ロットであれば、最小ロットの影響は限定的ですが、リスク1%が0.02ロットと小さい場合には、最小ロットが0.3%ほどの影響となり、わずかな違いでも誤差が大きくなることがあります。
また、証拠金通貨と取引通貨が異なる場合、2段階の為替レート変換が必要となり、エントリー前のチャート情報とエントリー後の計算結果に差が生じることがあります。
これは証明することも難しいのですが、例えば、証拠金が日本円で、GOLDの取引を行っている場合、チャートの値動きはGOLDですが、裏ではUSDJPYの値動きがあり、GOLDのチャートではUSDJPYの値動きをリアルタイムで反映することができません。
また、手数料が発生する口座では、約定するまで正確な手数料が分からないため、約定後にリスク%が変動することがあります。
これらの要因が単独で発生する場合、影響は限定的かもしれませんが、複数の要因が重なると、誤差が大きくなる可能性があります。