制作実例 / 検証システム

10年分のデータで検証した
自動売買システム

為替8通貨の売買ルールを10年分のデータで検証し、無人で毎日動く運用まで作りました。
結果は、全世界株のインデックスに負けています。その負けも含めて、検証の仕組みごと公開しています。

このルールの年率(10年平均)
+1.87%
最大の落ち込み −4.47%/1,460取引
同じ期間の全世界株(円建て)
+17.69%
最大の落ち込み −34.19%
つまり
負け
リスクあたりの効率でも負け(0.42 対 0.52)

01触ってみる:損切り幅を動かす

下のつまみを動かすと、成績が変わります。数字はすべて10年分の実データを計算した実測値です。

損切り幅 0.35% いま動かしている設定
0.15%(狭い)2.00%(広い)
年率
+1.86%
最大の落ち込み
−4.47%
リスクあたり
0.42
取引回数
1,468
損切りを広げるほど成績が落ち、狭めるほど良くなります。動かしてみてください。
狭くするほど数字が良くなり、途中に「ここが一番いい」という点がありません。
こういう形が出たら、たいてい良いのはルールではなく計算の前提の方です。 日足のデータでは「その日のうちに高値と安値のどちらが先に来たか」が分からず、注文のすべりも計算に入っていません。 だから数字が良くなる側には、あえて動かしていません。

02触ってみる:手数料の前提を動かす

売買1往復あたりのコストをいくらと見込むかで、黒字と赤字がひっくり返ります。

1往復あたりのコスト 0.02% 現在の見込み=0.02%
0.02%0.20%
このルールの年率
+1.86%
損切り0.15%にした場合
+3.72%
コストを少し重く見積もるだけで、利益はすぐ消えます。動かしてみてください。

03他の選択肢と並べる

同じ期間(2016年10月〜・約9.8年)・同じ計算方法・円建て・配当込みで並べたものです。

比べる相手年率最大の落ち込み株との連動コロナ暴落の1か月
このルール+1.87%−4.47%—−0.32%
全世界株(VT)+17.69%−34.19%+0.07−34.2%
金(GLD)+17.25%−22.95%+0.09−4.7%
米国の長期国債(TLT)+2.27%−27.70%−0.08+12.6%

株が−34%落ちた1か月に、このルールは−0.32%でした。株と連動しないという性質は本物です。 ただし金は同じ期間に9倍以上の成績を出しながら、やはり株と連動していません。 「守り」の役割としても、買えばいいものに負けています。

04負けているのに、何を作ったのか

お金の成績より、こちらが仕事として持ち出せる部分です。

01

都合のいい数字を作れない仕組み

設定を少し変えると、過去のデータでは成績がいくらでも良く見えます。だから「①隣の値でも成立するか ②前半と後半どちらでも成立するか ③他の通貨でも再現するか」の3つを通らなければ起動できないようにしました。設定を書き換えると署名が変わり、その時点で動かなくなります。

02

無人で毎日動き続ける

画面を出さずに決まった時刻に自動で動きます。処理が終わるたびに「いつ・どこまで進んだか」を記録するので、止まっていることに気づけないという状態になりません。

03

おかしなデータなら、進まず止まる

受け取ったデータが前回より過去に戻っていないか、取引のない日が混ざっていないかを毎回検査します。少しでも怪しければ売買せず止めて通知します。検査そのものができない時も、通さずに止めます。

04

本体が起動できなくても通知が届く

監視を本体の中だけに置くと、本体が壊れた時に監視も一緒に止まります。そこで起動役の側からも通知を出しています。同じ障害で通知が溢れないよう、一定時間は再送しません。

05なぜ、負けを公開しているのか

過去のデータに合わせ込めば、勝っているように見せることはできます。
本当に必要なのは、作る前に「勝てないこと」が分かる仕組みの方です。

このシステムは、それを機械で強制する形で作りました。結果として「負けている」という答えが出たので、そのまま出しています。 同じ考え方は、業務の自動化でも変わりません。動いたことにせず、動いていないなら止めて知らせる。そこを作るのが仕事だと思っています。