外国為替取引ニュースサイト

  1. トップページ
  2. >コラム・レポート
  3. >尾関高のFXダイアリー
  4. >バッドティックとの戦い(後編)

コラム & レポート

バックナンバー

尾関高のFXダイアリー

バッドティックとの戦い(後編)

(前編はこちらから)

バッドティックは、なくならないという話をしたことがある。何がバッドティックかと判断するかにもよる話もした。今日は、『何をバッドディックとシステム上判断するか』、の話をしたい。

為替のシステムにはバグ排除のロジックが一応は入っている。そのどれもが大体以下のロジックで稼働している。


■バグ排除ロジック


1)今回入ってきたレートと前回のレートとの差が一定の幅
  (たとえばドル円は{20}ポイントとか)を超えた場合は 有効レートから排除する。
  これをビッドとアスクでばらばらに行う。
2)ただし{3}回連続して排除した場合はそれ、もしくはその次を本物として扱う。

というものである。{}の数字は通貨ペアごとに時々見直されることは言うまでもない。
このロジックをくぐりぬけて入ってくるバッドティックは、2)の3回以上の条件を超えた場合等、いろいろありうる。最近はレートの更新頻度がどんどん高まってきたために2)の条件がバッドティックでありながら軽くクリアしてしまうことも多くなった。


たとえば、バッドティックとしてのレートが送る側のレートテーブル上に生まれ、それが10秒間そこに居座ったとする。そしてその銀行はレートが変わるたびに送る、ではなくて、250ミリ秒ごとにそのテーブルにあるレートをコピーして配信する、というロジックを取ると、前者は10秒間に1回しか配信しないが、後者は10秒間に40回同じレートを配信することになる。受けるほうでは3回以上とかのルールで待っていると、後者のケースで4回目、つまり1秒と4分の一後に本物扱いをする羽目になる。100ポイント以上離れたレートが1分間に40回以上配信されることも今ではよくあることだと思ってこのテーマを考える。


■「買いポジションは売値を見る、売りポジションは買値を見る」


さてこのロジックに改良を加える話である。前回までは、仲値を使うロジックを説明した。今日はさらに「買いポジションは売値を見る、売りポジションは買値を見る」というロジックである。これで3つのパターンが全部出たことになる。


i.  買ポジは買い気配、売りポジは売り気配(一般的)
ii.  仲値(バッドティックとの戦い(前編))
iii.  買ポジは売り気配、売りポジは買い気配(バッドティックとの戦い(後編))

まず、レートについて、ビッドとアスクはばらばらに管理することを前提とする。ビッドを例に挙げる。


レート1=76.50
レート2=76.00
レート3=76.00
レート4=76.00

レート5=75.70


と動いた場合で、一定の幅が30ポイントで、上記Nが3であった場合、レート2,3,4は排除されるが、5が採用される。そのためチャート的には、76.50から一気に75.70が見える。76.00は見えない。ここで75.70が正しいかどうかは分からないが、システムは本物だと思って扱うということになる。

さて、問題は実はこの側面ではない。一番問題なのは、バッドティックによって、マージンカットが大量発生することである。そもそもの元凶が仮にドルスイスであっても口座単位で判断されるので、ほかの通貨もろともカットされてしまう。これを防ぐには、「あやしいレートはマージンの計算には使わない」という考えをどうにかして取り入れることである。さて、ここで3つ目のパターンである。今回はそのロジックをもっと具体的に説明したい。


■「約定に使うレートの判断と強制ロスカットをトリガーさせるロジックを独立させて考える」


約定に使うレートの判断と強制ロスカットをトリガーさせるロジックを独立させて考えるのである。これは実際多くの口座の管理をするサーバーの負荷を減らすため、口座のポジションの値洗いは一定の間引きをして3秒に一回とかに減らすロジックを採用するところもある。それでいいと思う。証拠金も4%ルールになったのだから、その辺は少し余裕を持たせてでも間違ったレートで強制ロスカットをかけないようにする方がいい。4%で判断してカットした結果が3.5%のところだったとしても文句はないと思う。逆に4.5%になるチャンスもある。

さて、強制ロスカットを判断するときに引っかかるのは、値洗い(評価損益)である。持っているポジションがどれだけの損を抱えているかという評価計算が強制ロスカットを引き起こす。ではどういう計算ロジックかというと、普通、ドル円で買い持ち76.50があったとすると、現在のドル円のビッドアスクが76.60−62であれば、多くの業者は買いを閉じるのは売りだから、ビッドを使って評価するだろう。この場合76.60である。そうなるとこのポジションの値洗いは10銭分利益となる。さて、ここでこういうレートの動きがあったとしよう。大体前回のA、B、Cと同じシナリオである。


Pattern1
Time1: 76.60-61
Time2: 76.61-62
Time3: 74.00 – 76.60

Pattern2
Time1: 76.60-61
Time2: 76.61-62
Time3: 74.00 –78.00

Pattern3
Time1: 76.60-61
Time2: 76.61-62
Time3: 74.0074.50


パターン1はビッドだけが大きくさげた例で、赤い数字はバグとして判断されてもおかしくない。
パターン2はビッドもアスクも大きく開いたという場合である。上の値洗いの例だとビッドを使うので、これら74円が本物扱いされて強制ロスカットロジックに入り込むと、強制ロスカットを食らうということがよくある話である。売りの場合も同様のことが起きる。相場の中心は変わっていないのに、である。

ここで、ビッドが大きく後ろへ下がるように見えるときというのは、「相場が大きく下がったというよりは、アグレッシブに買いを入れる人がいない状態」と考える方がふつうである。つまり「無風状態」である。特に流動性の少ない通貨では起こりやすい。相場が動いたのではなくて、出すのをやめただけである。ところが、仮にビッドが突然74.00になったときに、アスクも一緒に下がって、74.50ぐらいまでついて行っていたら、これは惑うことなく本物であり、市場は売りたくて仕方がない状態であると見て取れるのである。それがパターン3である。売りたい人が前の買値よりもさらに下の売値をはっきり示したとき、相場が下へと動き出したと判断できるわけで、単にビッドが下がっただけでは、そういう判断はしないのである。


この理屈を反映する。つまり、値洗い損益そのものを見る場合は買いポジションに対してはビッドを使うのが当たり前なのだが、強制ロスカットのロジックを回すときは、買いポジションには「アスクを使う」方がバグレートの餌食になる危険が低いのである。ただし、その場合、パターン2が起きたらまたぞろ餌食になるので、こういうロジックを差し込む。

買いポジションに対しては、アスクがどんどん下がってくる時が危険な時であり、どんどん離れて上がっていくときはあわてる必要はない。なのでアスクを見て疑似(強制ロスカット用)値洗いを計算するのである。ビッドはあまり関係がない。ただし無駄な計算で惑わされないために、アスクのプライスからNポイント引いた範囲内にビッドがなければそのレートを計算対象から捨て、次を待つ(3秒に一回ならその感覚でレートをとりながらこの計算をする)。というアイデアはいかがであろうか。

これをやると、見た目のバグレートっぽいものを使って計算される値洗いが30万円損失と見えても、疑似(強制ロスカット)パターン2なら値洗い損益はほとんど動かない。が、パターン3が出た時、初めて値洗いが74.50でされること(その時のレンジ値が50ポイント以上であれば74.00のビッドとの幅はTrueを返すので有効)になる。

有効額を計算する値洗いは単純に今ある有効なビッドアスクで計算されてゆくので、そこにバグが入り込めばそのまま異常な損失額を計算し、強制ロスカットの判断に使われると悲惨なことになる。しかし、こうすることで、強制ロスカット専用の計算を別建てでやれば、たとえ一瞬値洗いが30万円の損とか、いままでなら強制ロスカットになるべき数字になっても、それとは強制ロスカット判断の計算が違うので何百、何千口座が一気に強制ロスカットになったというようなことが起きない。むろん、その強制ロスカット計算の経過状況は同じ取引システム上でモニターできるようにしてあげればいい。


■標準偏差


最後に全然違うアプローチで、ティックデータの標準偏差を利用する方法はどうだろう。
以上、前後編にわたり書いたが、ポイントは、口座状況を示す評価損益の計算(買ポジはビッドでというロジックで計算すること)から、強制ロスカットの判断を独立させることである。自分としてはかなりいいアイデアだと思っているのだがいかがだろうか。

とある実例を計算してみた。ある日の30分だけ、ドル円のビッドのティックデータから変動幅だけを取り出して計算したところ、平均値は0.18ピップで、標準偏差が0.12だった。つまり0.18+0.12=0.30ピップまでは68%が入る。過去のティックデータを何本、もしくは何分前まで観察対象とするかは不明である。実験を繰り返さないとわからない。また、標準偏差をどう使うか、あるいは1シグマではなく2シグマを使わないといけないのか、あるいはもっと単純に統計的に標準偏差に対してn%水増ししたぐらいがちょうどいいのかなど、観察と仮説の検証を繰り返しながらより実運用に耐えるロジックを組み込むことも十分試し甲斐があると思う。


■環境の変化を考え、自分でバッドティックを定義する


かつて10年前はドル円でもスプレッドは2ポイントとかあったのが今や0.2〜0.5で各社しのぎを削っている。一方でレートフィードのインフラスペックは格段に上がり、今や10ミリ秒以上のスピードでレート更新が可能になっている。サーバー側しかり、自宅のパソコンしかりである。

また、かつては相場を動かすのは一部の大手機関投資家やインターバンクレベルのプレイヤーだったのが、今や一般個人投資家が相場を動かす力を持っている。時間のタイミングと通貨ペアによっては十分可能であるし、一人ではなく無数の多くの投資家が一様な動きを示せば同じ一つの有機体として相場を動かしかねない。そうなってくると、ほかのFX業者では動かなかったレートが自分のところだけ一瞬ビッドが消えたりすることもあるかもしれない。そしてその直後にインターバンクが動きだしやがてすべてのFX業者がその変化の影響を反映しだす、ということも起きうる。つまり、自分が相場の変化の兆しの先端にいることも十分ありうる。こうした環境で、何がバッドティックなのかを判断するのは大変困難である。それに対応する方法として最後に、自分でバッドティックを定義する、という方法を考える。


『当社は現在各通貨ペアごとにビッド、アスク別々に観察し、ドル円は前回のフィードから30ポイント以上動いた場合はそれをバッドティックと判断し、システムの配信レートから自動的に排除しています。しかし、その30ポイント以上離れたレートが30回以上連続した場合は本物のレートとして判断します』というような執行方針を明確に掲げる。
こうなると、排除したものは全部バグレートだったということであり、システムが正常にそのように動いている限り配信したものは全部本物のレートであるということになる。これを明示すると、インターバンクの認識がどうであれ関係ない、ということになる。


■対応の迅速さを優先する


バッドティックが発生すると、それにより不利な約定をさせられた人はそこで取引判断が止まってしまう。そして長いことそれはなかったことにしてくれるかどうかの判定をもらうまで待たされる。そうなると今現在この疑いがかかったポジションを本物として対応するべきか、それともないものとして対応するべきか悩ましくなる。投資家にとってほしいのは迅速な結論である。できれば判定は数分以内、実際の口座の修正は数時間以内には終わってもらいたいものであるが、それは現実的には難しい。

ならば、まずは運用において上記のように白黒をはっきりさせてしまえば判定自体は早い。あとはシステム障害によって誤配信された場合のみどうするかの対応策を練り上げればいい。執行方針とか、取引説明書にそういうことを盛り込んでいくことで対応は可能であると思う。こうした取り組みはOTCならではの競争原理に基づく裁量権であると思うし、濫用さえしなければ新たなビジネスが生まれてくる源泉でもあると思う。


プロフィール

尾関高

Takashi Ozeki

1986年名古屋大学経済学部卒業。1988年サンダーバード経営大学院(アリゾナ州、米国)卒業。主に日短エクスコにて約9年間、インターバンクの通貨オプションブローカーを経験し、1998年からひまわり証券(旧ダイワフューチャーズ)にて日本で最初に外国為替証拠金取引をシステム開発から立ち上げ、さらに、2006年5月に、これも日本で最初にCFDを開始した。
その後米国FX業者でのニューヨーク駐在や、帰国後日本のシステム会社勤務等をへて、現在は、日本の金融システム会社勤務。そのかたわら、本業のみならず、FXや新たな金融市場にかかわるさまざまな分野においても積極的に意見具申中。
拙著に、「マージンFX」(同友館、2001年2月)と「入門外国為替証拠金取引~取引の仕組みからトラブル防止まで~」(同友館、2004年6月)、また訳書「CFD完全ガイド」(同友館、2010年2月、著者:デイビッドノーマン)がある。

ニュースクラウド