6章 取引シミュレーション

取引シミュレーション機能は、実際の取引で必要となる考慮事項をパラメータ化して、取引のプロセスをシミュレーションする機能です。実際の株価データを用いて対象として選定した銘柄を売買するプロセスをシミュレートすることができます。自分の考えた銘柄選定のパターンを実行したときの成績を実験し、パターンを改善していくことで現実の取引での失敗を低減していく効果を期待できます。

1. 画面のレイアウト

ナビゲーションメニューから、「模擬取引」をクリックするとユーザインタフェース画面が表示されます。以下は実行後の典型的な画面のイメージです。

tader ui layout

このユーザインタフェースもまた画面を広く使うデザインとなっているためナビゲーションメニューが隠れています。以下のように画面左上のmain→と表示されたリンクをクリックするとスライド式のナビゲーションメニューが表示されますので、ここを経由して他の機能へ移ることができます。

2. 機能の説明

画面イメージを見ながら機能を説明します。


2.1. 全体の説明

項目名 説明
① 設定メニュー表示・非表示 画面右側に設定メニューを表示する場合は「表とシム設定」をクリックします。設定メニューを消したい場合は「表のみ」をクリックします
② 探索フィルター 探索を行うための条件設定を行います。機能は横断面探索UIと同じです。
③ 設定 画面のレイアウトやシミュレーション共通設定、探索方法に関する設定を行うダイアログを表示します。詳細は続く2.6項を参照ください。設定結果を反映するためにはブラウザをリロードする必要があります。
④ 実験開始、終了 「実験開始」をクリックするとシミュレーションを開始します。以下の⑤が自動進行モードの場合にはただちに処理が開始され、⑦で設定された実験期間の最後まで処理が進行したのちに停止します。⑤がマニュアル進行モードの場合には、⑥の前進ボタンを使って時間を一日単位で進展させることができます。「終了」ボタンをクリックするとシミュレーションを終了して実験開始可能な状態に戻ります。
⑤ 自動進行チェック チェックされた状態は自動進行モードを示します。チェックをはずした状態はマニュアル進行モードを示します。(注)現在バージョンでは自動進行モードのみサポートしています。
⑥ 再実行、前進 マニュアル進行モードの場合に使用します。実験開始後、「前進」ボタンをクリックすると当該シム日付の処理行います。再び前進ボタンをクリックすると日付を一日進め処理を行います。以後これを繰り返します。処理後に⑩のシム設定を変更する、あるいは⑪で対象銘柄を変更して、「再実行」ボタンをクリックすると変更された設定で当該日付の処理を再度実行することができます。
⑦ 各種基本設定 「シム日付」を設定することで、指定された日付を起点とした実験を行います。「実験期間」はシミュレーションを行う残り日数を表しています。一日処理が進むごとに残日数が減っていきます。表示がゼロになった時点で「前進」ボタンをクリックすると実験を終了します。「シム設定」は設定パターンを識別するラベルを表します。⊕アイコンで追加、⊖アイコンで削除することができます。「探索機能を使う」をチェックすると、システムの探索プログラムを使って取引候補銘柄を探索します。チェックを外した場合「銘柄指定」項目に、取引対象の銘柄コードを直接入力してください。複数銘柄を指定する場合は例えば"1301 1332 1333"のように、半角スペース入れて複数コードを指定します。
⑧ 実験結果履歴表示 実験を実施した日付、設定したシミュレーション日付と最新の実験経過の結果(取引による累積獲得利益)を表示します。履歴の過去日付をクリックするとそのときの実験設定と結果を表示します。この状態で実験を実行した場合、最新の記録日の情報が更新されます。
⑨ 探索結果履歴表示 実験の過程で探索された銘柄の件数が履歴表示されます。件数をクリックすると、⑪のエリアに銘柄の一覧が表示されます。
⑩ 実験結果表示 シミュレーション実行結果を表示します。表の各列項目の説明は続く2.2項を参照ください。以下を参照ください。
⑪ 探索結果銘柄一覧エリア 探索結果として得られた銘柄がリストとして表示されます。表の各列項目の説明は続く2.3項を参照ください。
⑫ 保有資産評価表エリア 実験結果表示表の行をクリックすると、その日付時点で保有する株式の評価状況を表示します。各列項目の説明は続く2.4項を参照ください。
⑬ シミュレーション設定パネル 設定可能な実験パラメータを指定するパネルです。個々の項目の説明は続く2.5項を参照ください。

2.2. 実験結果表示エリアの説明

項目名 説明
① 取引日 取引が行われた日付を表示します。市場休業日(土日、祝日)は表示されません。プログラムの仮定として、一日の取引は以下のように進行します。14:50から1分おきに1銘柄づつ現物売却(or買い決済)。これらの取引は15時を超えた場合でも当日の株価終値で処理されます。、15:00から1分おきに1銘柄づつ現物購入(or売り建て)、取引が発生しない日は16:00に保有資産評価。
② 取引種別 B:現物購入、S(OK):現物売却(通常)、S(TO):現物売却(保有期間超え)、S(LC):現物売却(ロスカット)、NOP:取引無し
③ コード 東京証券取引所が採番した証券コード
④ 最新株価 取引日における終値
⑤ 保有株数 取引対象銘柄の保有株数
⑥ 株式評価額 最新株価で計算した株式評価額
⑦ 口座残高 株取引のために用意した銀行口座の取引日における残高
⑧ 総資産評価額 保有全銘柄の株式評価額合計と口座残高を合算した金額。この金額が初期の口座残高から増えるように努力しましょう。
⑨ 平均取得価格 過去に取得した当該銘柄の取得価格を平均した価格です。計算式は4節を参照ください。
⑩ 取引利益 取引に付随する費用を考慮した獲得利益。計算式は4節を参照ください。
⑪ 累積取引利益 取引日における過去の取引損益の累計額。計算式は4節を参照ください。

2.3. 探索結果銘柄一覧エリアの説明

項目名 説明
① 選択 この一覧においてチェックマークが入った銘柄だけが取引対象の候補となります。チェックマークをはずすことにより取引対象から除くことができます。チェックマークの操作はマニュアル進行モードでのみ可能です。
② コード 銘柄コードの昇順に探索銘柄が表示されます。そして取引銘柄数上限(一日)数に達するか、あるいは口座残高の余力が無くなるまで、一覧の上位から順に取引対象として選択されます。
③ 銘柄 コードに紐づけられた銘柄名称です

2.4. 保有資産評価表エリアの説明

項目名 説明
① 取引日 実験結果表示エリアで選択した日付。
② コード 銘柄に付随する証券コード。
③ 最新株価 銘柄の当日終値。
④ 保有株数 銘柄の保有株数。
⑤ 株式評価額 取引日終値で計算した保有銘柄の評価額。
⑥ 評価損益 当日売却したときに見込まれる、諸費用を考慮した獲得損益。

2.5. シミュレーション設定パネルの説明

項目名 説明
① データベース更新 画面左側パネル、およびに画面右側のパネルでの設定値をデータベースに保存します。
② 注文方法 「現物購入」と「信用取引(売り建て)」を選択します。両者の混在はできないのでそれぞれ用のシム設定パターンを定義するとよいです。
③ 取引下限株価 上場株のなかには購入対象とはなにりにくい低価格株がそこそこみうけられます。この項目で指定した値を下回る銘柄は探索対象から除外されます。ただし銘柄指定項目に直接入力することで実験対象とすることは可能です。
④ 取引額下限 1回あたりの取引金額(=単価×注文株数)の下限を設定します。
⑤ 取引額上限 1回あたりの取引金額(=単価×注文株数)の上限を設定します。
⑥ 取引銘柄数上限(一日) 一日あたりの取引件数(現物購入あるいは信用売り建て)の上限を指定します。反対取引(現物売却、信用買い決済)の数には制約はありません。
⑦ 利益確定目標 取引付随費用、取引益税を考慮する前の粗利率の目標を設定します。シミュレーションに関わる計算式の説明を本章4節にまとめていますので参照ください。
⑧ 最短保有期間(日数) 取得した日付を0日とした保有日数の下限を指定します。この期間超えるまでの期間は取引のクローズ条件を満たしている場合であっても取引のクローズは行われません。
⑨ 最長保有期間(日数) 取得した日付を0日とした保有日数の上限を指定します。この期間に達した日に強制的に取引がクローズされます。
⑩ 強制終了閾値 ロスカットするために取引を強制クローズさせ閾値となる損失をマイナス符号付き100分率で指定します。例えば100株50万円で購入した株の評価損失が2万5千円を超えたときに強制終了したい場合は、-0.05を指定します
⑪ 取引凍結基準額 相場が急転(暴落/暴騰)した場合、強制終了閾値をはるかに上回る評価損失が発生することがあります。このときしばらくの間取引を凍結して相場が回復するのを待つという対処が考えられます。この項目の指定は、最長保有期間条件よりも優先されます。
⑫ 取引処分数量 取引をクローズする際、保有全数を処分するか、あるいは最小数量(100株)を処分するかを選択します。
⑬ 口座残高 実験初期の口座残高を円単位で指定します。
⑭ 信用取引枠 信用取引枠が何円に設定されているのかは証券会社や取引の優遇条件等により異なっていると思いますが、約3.3倍程度の枠が設定される例を見かけます。適当な枠を円単位で設定してください。実際の信用取引制度では、信用取引枠の増減のロジックや、損失が大きくなった場合のいわゆる「追証」の発生などよく理解すべき重要事項があります。このシミュレーションでは単純に信用売り建て、買い決済の取引金額分、信用取引枠が増減する実装をしています。
⑮ 探索実行周期 現物購入(売り建て)対象銘柄の探索を行う周期を指定する項目です。「毎日」、「開始から7日毎」、「各曜日毎」を選択できます。一方、クローズ取引(現物売り、買い決済)は毎営業日可能としています。
⑯ 探索優先キー 探索結果として多数の銘柄が抽出される場合、取引対象とするための優先順位を決める指数を選択します。既定値は「指定しない」です。選択肢は以下の表にしたものとなります。

探索優先キーの選択肢

項目名 説明
指定しない 証券コードの昇順に早く検出されたものを優先します。
一株配当 値の大きい銘柄が優先されます。
PER 値の大きい銘柄が優先されます。
PBR 値の大きい銘柄が優先されます。
EPS 値の大きい銘柄が優先されます。
BPS 値の大きい銘柄が優先されます。
ROE 値の大きい銘柄が優先されます。
ROA 値の大きい銘柄が優先されます。
移動平均線乖離度(5日) 現物購入(信用売り)では正(負)値の大きい銘柄が優先されます。
移動平均線乖離度(25日) 現物購入(信用売り)では正(負)値の大きい銘柄が優先されます。
長短移動平均線乖離度(5-25日) 現物購入(信用売り)では正(負)値の大きい銘柄が優先されます。
高値圏近接度(1年) (高値との乖離)値の小さい銘柄が優先されます。
高値圏近接度(3年) (高値との乖離)値の小さい銘柄が優先されます。
安値圏近接度(1年) (安値との乖離)値の小さい銘柄が優先されます。
安値圏近接度(3年) (安値との乖離)値の小さい銘柄が優先されます。
終値前日差 現物購入(信用売り)では正(負)値の大きい銘柄が優先されます。

設定パネルの次ページの内容は以下の通りです。

項目名 説明
⑰ 取引金額決定 「下限以上最小金額」を選択した場合、④取引額下限を下回らない最小費用で購入できる株数を取引します。例えば下限が40万円、取引対象銘柄の株価が1,500円の場合であれば、200株を取引します。「上限以下最大金額」を選択した場合、⑤取引額上限を上回らない最大費用で購入できる株数を取引します。例えば上限が80万円の場合、先と同じ例では、500株を取引します。
⑱ 信用取引費用料率 信用取引では買い建て、売り建てどちらの場合でも何種類かの手数料、金利が発生します。シミュレーションでは簡単のため取引額に対して年率2.8%を費用料率の既定値としています。この項目を指定することで料率を変更することができます。
⑲ 益税税率 法律により取引で生じた利益に対して個人の場合20.315%の税金が、法人の場合は29~42%の税金が課せられます。シミュレーションでは既定値を20%としています。この項目を指定することで税率を変更することができます。
⑳ 現物取引補助費用 一回の現物取引で徴収される固定金額の費用を設定します。なお取引高に比例した費用設定はできません。

2.6. 設定ダイアログの説明

シム共通設定

項目名 説明
① 実験期間の確保... シム日付から実験を開始したとき、実験期間が長くなるとシステムに保持されている株価データの最新日付を超えてしまう場合があります。ここをチェックした場合、実験期間に合わせてシム日付を過去日へずらすことで実験期間を確保します。
② 実験期間の既定値 実験期間の既定値を変更することができます。
③ 履歴保持日数上限 履歴の件数がここで指定された数字以上になるともっとも過去日付の履歴が削除されます。またこの指定をゼロにした場合履歴が保存されなくなりますのでご注意ください。
④ csvダウンロードボタン... 表示された実験結果データをcsvファイルとしてダウンロードするボタンの表示・非表示を設定します。
⑤ 自動進行を既定値にする チェックを入れる(はずす)と自動進行(マニュアル進行)が既定値になります。

探索フィルター

株価横断面探索UIにおける設定項目と同様です。

探索結果

株価横断面探索UIにおける設定項目と同様です。

3. 実験する

3.1. システムおまかせで試してみる

画面左側のナビパネルのシム設定項目の右側にある⊕をクリックし、表示される入力ダイアログに適当な名称を付けてOKボタンをクリックしてください。

trader example 1

まだこの段階では作成したパターンは選択された状態になっていません。下画面のように、設定項目の選択リストを開いて作成したパターンを選択してください。

trader example 3

次に、探索フィルターを設定します。

この実験では、PER、PBR、ROE、終値前日差を使って優良そうな銘柄を抽出してパターン化することにします。操作の要領は5章の探索UIで説明したこととがそのまま使えますので、ここでは設定する値を列記することにします。各フィルターを設定したときチェックボックスをチェックすることを忘れないようにしてください。設定できると以下のように5か所がハイライトされているはずです。

trader example 4

PER

min:10 max:30

株価収益率(PER,Price Earnings Ratio)は株価上昇への期待が高い企業ほどPERは高くなる傾向にあります。UIのヘルプをにも記述しているように、一般論として投資の対象はPERが15~20倍であると安心感がありそうです。ここでは探索数をあまり減らさないようにするために上下に少し広めの設定とします。

PBR

min:0.5 max:10

PBRは、株価の1株あたりの純資産に対する倍率として定義されます。東京証券取引所は近年上場企業にに対しPBR1.0倍超えをめざすべきと主張しています。少し低いPBRを探索して成長余地の高そうな企業が見つかることを期待します。

ROE

min:10 max:20

自己資本利益率(ROE,Return On Equity)経営の効率性を測る最もポピュラーな指標です。ROEを重視する海外投資家は、増収・増益しても低ROE企業は投資先として避ける傾向があると言われています。米国とくらべ上場企業のROEはまだかなり遅れをとっている国内企業ですが、最近徐々に向上しており24年3月には9.7%となっています。そこでここでは平均以上のROEを条件に加えることにします。

長短移動平均線乖離

長短平均線乖離: 5日-25平均乖離 閾値:0.05 観察期間:1 乖離検出条件:観察終点で検出

探索日において、5日移動平均線が25日移動平均線よりも5%上にある、という条件を追加することで、上昇基調にある銘柄を拾いやすくします。条件に合致する例をチャート化してみると、その意味合いが理解しやすい感じがします。

trader example 5

終値前日差異

閾値:10 観察期間:3 乖離検出条件:観察終点で検出

終値の前日差異が10円以上であるような銘柄を探すという条件を設定します。直近で上がっている銘柄を拾いやすくするための設定です。ただし株価の毎日の上がり下がりは上昇基調でも下降基調でも、頻繁に発生するので大きな数値を指定しない限りあまり強い制約にはならないように思います。


以上で探索フィルターの設定を完了しました。

次に定義したいパターンを適用する日時を設定します。クラウド版カブシムでは銘柄探索用のデータは2023年7月3日以降から準備しています。試してみたい日付を「シム日付」項目に入力してください。この例では波乱の多い2024年春以降のデータを試してみたいと思います。 まずシム日付に「6月3日」を指定し、つぎに「実験期間」項目に30日を指定してみます。

画面右側パネルのパラメータ群はまたのちほど変えてみるとして、まずはこのまま実験を始めてみましょう。既定値のままであれば実験開始ボタンをクリックするとシミュレーションは30日分自動進行し、終了します。以下は結果の画面です。

search exexample 6

成績は 累積取引利益-93,060円というなんとも残念な結果になりました。それではと、いろいろ期間を動かしてみて成績を比較すると以下の結果になりました。
4/30~5/29: 59,260円 6/3~7/2: -61,520円 7/1~7/30: 45,200円 8/1~8/30: 249,220円 9/2~10/1: -93,060円

利益が出たり損が出たりと、ばらばらです。次に未設定だった探索優先キーを「PER」に設定して、探索結果銘柄のなかでPERの高い銘柄を候補順位にしてみます。

4/30~5/29: -60,380円 6/3~7/2: 35,240円 7/1~7/30: -235,700円 8/1~8/30: 280,440円 9/2~10/1: -150,360円

どうもはかばしくない結果になっています。筆者の想像するところ、ここで試したレベルの機械的な銘柄選定は最適な選定にはまだ遠く、また2024年春以降ボラタリティを高めている株式相場も相まって得られた結果はランダム性が強いのもになっているように思います。

参考まで以下は日経平均株価の最近の動きを示しています。6月から7月にかけての急騰、8月、9月には2回大きな値下がりが発生しています。

search example 2

今後もっと分析による知見を蓄積していくことでレベルの高い機械的選定ができるようになっていくことを期待したいと思います。

3.2. 銘柄を指定したシミュレーション

機械的選定と比べてもう少し現実味のあるアプローチは、探索結果を吟味して銘柄をひとつ選びその銘柄を継続的に売買する方法です。

この文書を作成している時点から過去3か月の間のデータで実験してみましょう。起点を2024年7月1日とします。この日付での前述の探索フィルターによる結果は30件ありそのうち上位10件以下の通りです。ここでの探索優先キーは「PER」を設定しています。

2216 カンロ 8136 サンリオ 4680 ラウンドワン 2477 手間いらず 3021 パシフィックネット 4498 サイバートラスト 3837 アドソル日進 9436 沖縄セルラー電話 7059 コプロ・ホールディングス 5025 マーキュリーリアルテックイノベーター

このなかでさらに上位5銘柄についてそれぞれ継続的に売買する実験をします。例えば「2216 カンロ」の場合、下図のように「探索機能を使う」のチェックをはずし、銘柄指定項目に2216を指定します。実行結果は以下のようになりました。

search watchlist 1

続く順位を含め5銘柄を実験した結果は以下の通りです。これまでの結果と比べると想像以上に好成績です。ちなみに、探索優先キーを無指定にした場合、コード4680,8136の代わりに2997,3252という銘柄が入ってきます。そしてこの二つとも大きな損失を出す結果になりました。経営状況の良し悪しを評価する指標を探索優先キーに指定しておくの無駄ではなさそうです。

コード 総資産評価額  累積取引利益 2216 3,502,280 516,780 8136 3,442,110 357,520 4680 3,485,200 524,400 2477 3,263,240 275,540 3021 2,943,180 -152,820

3.1. マニュアル時間進行によるシミュレーション

現在バージョンでは未サポートです。

4. 計算式等の補足

シミュレーション計算で使用される各種計算式の定義を補足します。

変数の定義

名称 変数・式 補足
QOA 株式の保有数量(Quantity of asset)
CES 株式資産最新評価額(Current evaluation of stock)
Balance 証券取引口座残高(Balance of Account)
CESB 現金及び株式資産最新評価額(Sum of CES and Balance)
MASP 平均取得株価(Mean acquired stock price)
PT 取引利益(Profit of Trading)
CSP 最新株価(Current Stock Price)
aon 取引株式数(Amount of number for trading)
aom 取引金額(Amount of money for trading)
tax_ratio 益税税率(Tax ratio)
ctc_ratio 信用取引費用料率(Cost ratio of Credit Trading)
aux_cost その他取引費用(Auxiliary Cost of Trading)

定義

株式資産最新評価額の計算

株式Nの保有数量、最新株価をそれぞれQOA_N,CSP_Nとする。 CES_N = QOA_N * CSP_N

現金及び株式資産最新評価額の計算

株式1,..Nの資産評価額をCES_1,..,CES_Nとする。 CES = CES_1 + ... + CES_N

現金及び株式資産最新評価額の計算

CESB = CES + Balance

現物購入(売り建て)時の平均取得価格の更新式

MASP ← ( QOA * MASP + aon * CSP ) / ( QOA + aon )

現物株式の売却取引利益の計算

PT = ( ( CSP - MASP ) * aon ) * ( 1 - tax_ratio ) - aux_cost

売り建て株式の買い決済取引利益の計算

借株保有期間をdaysとする。 PT = ( ( MASP - CSP) * aon - ctc_ratio * MASP * aon * days / 365 ) * ( 1 - tax_ratio )

1 アカウント作成
2 ドメイン参加
3 プロファイル設定
4 データ収集UI
5 銘柄探索UI
6 取引シミュレーションUI


© 2022 OpsLabo,LLC.