差金計算

1週間ぐらいかけて、たぶんこうだろう、という計算ロジックを見つけた。


まず、銘柄ごとに、売買代金をつぎの4つのカテゴリーに分類する。命名は今のところさほど適切ではないかも。

実体受取
単純受取(= この銘柄に関する全売付代金)のうち、前日からの保有株数で売れる最大の金額。すなわち、できるだけ高い売りの約定単価×前日からの保有株数。
制約受取(= 単純受取 - 実体受取)
単純受取から上記を差し引いた金額。すなわち、できるだけ低い売りの約定単価×(売付株数 - 前日からの保有株数)。(売付株数が前日からの保有株数に満たなければゼロとする。)
制約支払
単純支払(= この銘柄に関する全買付代金)のうち、「売付株数から前日からの保有株数を差し引いた」株数の分の最小の金額。すなわち、できるだけ低い買いの約定単価×(売付株数 - 前日からの保有株数)。(売付株数が前日からの保有株数に満たなければゼロとする。)
実体支払(= 単純支払 - 制約支払)
単純支払から上記を差し引いた金額。すなわち、できるだけ高い買いの約定単価×(買付株数 - (売却株数 - 前日からの保有株数))。(売付株数が前日からの保有株数に満たなければ、買付代金そのものとする。)


このうち、制約受取は、元手がない死んだお金であり、この銘柄にも他の銘柄にも買付代金に充当することはできないと考える。
ある銘柄の実体受取は、それと同じ銘柄の実体支払に充当できるが、同じ銘柄の制約支払いには充当できない。
ある銘柄の実体受取は、それと違う銘柄の実体支払と制約支払いのどちらにも充当できる。


こうして、銘柄ごとに充当し切れない支払いが出てくる(あるいは充当し切れる)。銘柄ごとに充当できない不足額を求め、銘柄間でもっとも大きい不足額が、差金決済回避のために必要となる入金額である。なお、あらかじめ預かり金があれば、当然、その分は差し引いた額を入金すれば良い。


これで計算した値を、SMBCフレンド証券のログイン後のTOP画面の出勤可能額の表示と照らし合わせてみると、ほぼ合っている。
一方、オリックス証券で同様に照らし合わせてみると、少し合わない。自前で計算したほうが、入金必要額が多い。オリックス証券の計算が間違っているのか?テストデーターはわざわざ用意するのも面倒なので、実際の売買のものを使っているため、両方の証券会社でテストデーターとしては異なるものを使っている。