買い指値を置くと約定しないまま株価が上がり、ようやく約定したときだけ下がる。これを「運が悪かった」で済ませると、発注方法に潜む偏りを見落とす。指値には、価格を有利に指定できる代わりに、どの場面で取引が成立するかを自分だけでは選べないという性質がある。
問題を解くには、相場予測の正誤と、注文の約定条件を分ける必要がある。本稿では価格・時間優先の単純な板を例に、約定順位と逆選択を説明する。実際の市場には比例配分など異なる方式もあり、以下の数字は仕組みを理解するための架空例だ。
同じ1000円の買い指値でも順番が違う
最良買い気配1000円に、先客Aの300株、先客Bの200株が並んでいるとする。あなたが100株の買い指値を追加すると、同値での順位はその後ろになる。ここに400株の売り成行注文が到着すれば、Aの300株とBの100株が約定し、あなたには届かない。歩み値には1000円で400株の約定が表示されるため、「指値価格で取引されたのになぜ買えないのか」と感じるが、順番で説明できる。
続いて150株の売りが来れば、残ったBの100株とあなたの50株が約定する。あなたの注文は半分だけ残る。価格が触れたことと、全数量が成立したことは別である。ローソク足の安値が1000円なら指値を全量約定とするバックテストは、この待ち行列を省略している。

板の数量が減ったときも、約定とは限らず取消しの場合がある。しかも自分より前の注文が消えたのか、後ろの注文が消えたのかは、集約された価格別板だけでは正確に分からない。取引所の注文単位データを見られる環境と、証券会社の板画面だけを見ている環境では、推定できる精度が違う。
なぜ「約定した取引」だけが不利になりやすいのか
買い気配1000円、売り気配1002円、仲値1001円の場面を考えよう。1000円で買えれば、発注時の仲値より1円安い。一見すると有利だが、約定後に仲値が998円へ下がれば、直後の評価は1株あたり2円のマイナスになる。1円の価格改善を得た間に、市場の評価が3円下がったのである。
ニュースや大口の売りで1000円の買い板が一気に消化されると、後ろで待っていた注文まで約定する。そのような場面は、その後も売りが続く場合がある。一方、買いが優勢になって価格が1002円、1004円と上がれば、1000円の買い指値は残されやすい。結果として「下がるときは買えて、上がるときは買えない」という偏りが生まれる。これが指値取引で問題になる逆選択の一つの形だ。
これは相手が必ず内部情報を持っているという意味ではない。市場全体の売買圧力、情報更新の速度、流動性の引き上げによっても起こる。毎回約定後に下がると断言はできず、出来事ごとに将来価格を正確に予想することもできない。大切なのは、約定という条件を付けることで標本が偏る可能性を理解することだ。
「1円安く買えた」を二つに分解する
買い注文について、発注時の仲値をM0、約定価格をP、約定から一定時間後の仲値をMtとすると、手数料前の短期評価はMt−P=(M0−P)+(Mt−M0)と書ける。左側が最終的な評価差、右側の前半が価格改善、後半が市場価格の移動である。1001円、1000円、998円なら、−2円=+1円−3円だ。

この約定後の評価差は、マークアウトと呼ばれる分析に近い。例えば約定後1秒、10秒、1分の仲値との差を計測する。ただしどの時間幅が適切かは売買の保有期間で変わる。1秒後は悪くても30分後に狙い通りになる手法なら、短期の逆選択だけで失敗と決めない。反対に数秒の利益を狙うスキャルピングでは、最初の数秒の値動きが重要になる。
約定済み履歴だけでは検証できない
証券会社から取得した約定履歴には、刺さらなかった注文や出すのをやめたシグナルが載らないことがある。そのデータだけで「指値を使えば平均1円改善」と計算しても、上がってしまって取れなかった取引が抜け落ちる。最低限、シグナルが出た時刻、注文時刻、売買方向、数量、指値、発注時の最良気配、約定数量、取消時刻を記録したい。
注文ごとに共通の判定時刻を決めると、未約定も比較しやすい。例えば「発注から60秒後」を固定し、その時点の仲値を保存する。約定した場合は取得価格との比較、未約定なら当初の売買計画との機会費用を別列に計算する。実際に持っていない株の値上がりを現金損失と呼ばず、「計画を実行した仮想ケースとの差」として管理する。
20件の例で見える約定率の罠
同じ条件の買いシグナルが20件あり、100株ずつ指値を置いたとする。12件は約定し、そのうち8件は1分後に取得価格より2円安く、4件は3円高かった。約定した1200株の評価差は、8×100×−2+4×100×3=−400円、約定1株あたり約−0.33円となる。手数料を入れればさらに下がる。
残る8件は未約定で、全て当初の仲値から1分後に4円上がっていたとする。この8件を捨てると、指値の価格改善だけが目立つ。しかし売買計画全体を評価するには、この未約定の偏りも重要だ。ただし「成行なら全て当初の仲値で買えた」とは仮定しない。成行側の売り気配、注文量による滑り、手数料も含めて比較しなければ、公平な検証にはならない。
指値を動かすほど有利とは限らない
約定しないからといって、頻繁に取り消して同じ値段へ出し直すと、価格・時間優先の市場では待ち順が後ろになる場合がある。価格変更、数量増加、数量減少の扱いは市場や注文方式によって違うため、一般化せず規則を確認する。取消注文を送った時点と、取引所が取消しを受理した時点も同一ではない。通信の間に約定すれば、取り消したつもりでも建玉が残る。
検証するなら、①一定時間だけ同値で待つ、②一定時間後に気配を一段だけ改善する、③指定時刻で撤退する、というように少数の発注ルールを先に定める。価格が上がった事例だけ後から成行へ置き換えると、実際には使えない後知恵になる。ルール変更は一定件数ごとに評価し、個々の負けに反応して変えない。
明日から残すと役立つ記録
まず30~50件程度を、利益を証明するためでなく記録の欠落を探す試行として集める。約定率、部分約定率、平均待ち時間、約定後の仲値変化、未約定後の価格変化を時刻別に見る。寄り付き、昼、決算発表直後を混ぜると性質が消える。小さな標本の差をそのまま優位性とせず、その後の期間でも同じ傾向が続くかを確認する。
買いと売りを混ぜる際は符号をそろえる。買いは「将来仲値−約定価格」、売りは「約定価格−将来仲値」とすれば、プラスを有利な結果として集計できる。最良気配が異常に広いときは仲値が実際に取引できる価格から離れるため、評価値と実現損益を分けて読む。板データが更新されていない時刻も除外条件として記録する。
一段高い指値へ変更する判断を数値にする
1000円で待つか、1001円へ買い指値を上げるかという選択にも交換条件がある。100株なら価格を1円上げる直接的な差は100円。だが1001円が売り気配より低ければ、それでも必ず約定するわけではない。順位が改善して約定率が上がる可能性と、約定後の値動きがどう変わるかを同時に測る必要がある。
架空の比較で、1000円で待つ方法は約定率40%、約定後1分の平均評価差が+2円。1001円へ上げる方法は約定率70%、同じ評価差が+0.5円だったとする。100株の注文1件あたり、約定分だけの平均寄与は前者80円、後者35円になる。ただしこれは未約定をゼロと置いた限定的な集計で、全注文の経済価値を確定するものではない。未約定後の機会費用と実際の費用を加えると順位が変わり得る。
約定率だけを最大化するなら成行に近づければよいが、それが利益の最大化とは限らない。反対に安い指値にこだわるほど、成立した少数の取引だけを評価しやすくなる。自分が最適化したいものを「約定率」「約定価格」「注文1件あたりの計画差」「最終損益」に分けて、どの数字を改善したいか決めておく。
バックテストで板の順番を復元できない場合
分足の高値・安値しかなければ、待ち順位や約定の前後関係は復元できない。安値が指値を1回通っただけで全量約定とする設定と、指値を明確に通過した場合だけ約定とする設定を比較し、成績差を確認する方法はある。ただし後者も現実の約定を保証しない。気配だけ飛んだ場合や売買停止、注文が取引所へ届く前の値動きなどを区別できないからだ。
データが足りないなら、最も楽観的な約定条件を真実として採用しない。約定率を段階的に下げ、滑りを追加し、部分約定を入れた場合に利益が残るかを見る。そのうえで小さな実取引の注文ログから補正する。特に1ティックの利幅を狙う手法では、粗い足データと注文の時間精度の差が、戦略そのものの利益幅を超えることがある。
悪い約定を見つけた後に変える順序
約定直後の悪化が特定の時間帯に偏るなら、その時間帯の注文条件を見直す。発注から到着までの遅れが大きいなら、通信や注文手順を調べる。大きな数量のときだけ悪ければ、注文量と流動性の関係を見る。最初から全ての指値を成行へ置き換えると、原因を特定できず費用だけ増える可能性がある。問題が起きた条件を一つずつ切り出し、変更前後の同じ項目を比較することが有効だ。
指値の価値は、安い価格を指定できることだけでは測れない。自分の売買シグナルが有効な時間内にどれだけ約定し、その後の価格変化が節約したスプレッドを上回っていないかまで見る。約定順位と未約定を記録すると、「刺さった途端に下がる」という感覚を検証可能な課題に変えられる。
仕組みの確認先:CME Groupのマッチング方式の解説、CME Groupの注文単位データの解説。実際に利用する市場の方式と注文変更時の扱いを確認してほしい。


コメント