シミュレーター

【失敗】Excelでバックテストツールを作る!①

自分もバックテストツールを作りたい!!

ふと、思いました・・・
自分でもバックテストツールを作れたら・・・
今の自作シミュレーターと連動させて、シミュレートしながら
そのままバックテストに移行して利回りを表示させるんだ・・・(遠い目)

理想

自作シミュでは、ロスカットレートと下落時の必要資金が出るから
単純にバックテスト期間での累計利益さえ出せればオッケイ👍
それなら自分でも作れる気がするよ!知らんけど

知らんから、とりあえずググってみよう!

うーんっと・・・・よん?

マクロ?VBAの動きもよくわからないし、ヒントも見当たらず
あるのかもしれませんが、まだ理解できませんでした・・・

とりあえず、トラリピの動きをイメージして作ってみよう!

バックテストツール作成開始!

テスト的に作ってみたのがコチラ☝

  • 1日で高値と安値の間を動いている
  • その中にポジションがあれば約定
  • ポジション+利益幅があれば決済
  • 決済されなければ、新規約定はしない

マクロを使いこなせず、関数のみで作成を始めたので
めっちゃアナログ的な方法でできましたw

まずは基本となる文字列を作り
文字列の中から、高値と安値を切り取って
ポジションと一致すれば新規約定!ってなイメージ。

⁼MATCH(ポジション,OFFSET(参照,高値の行数,0,安値行数-高値行数+1,1),0)>0,1,0)

2行目からは決済されないと新規約定しないように
MAX関数を使用

⁼IF(AND(MATCH(ポジション,OFFSET(参照,高値行数,0,安値行数-高値行数+1,1),0)>0,MAX(ポジ1行)<=MAX(決済1行)),MAX(ポジ1行)+1,0)

利益は、決済されたときのレートで円換算して出力

なんやかんや、バックテストツールっぽくなってきたので良かったのですが

ここで心配なことは

  1. ポジション1つに対してバックテスト期間全て作らないといけない
    (150ポジ版の場合は、日足13年分:約3,300行×150ポジ)
  2. 基本の文字列(255~0、2.2~0)の行数が多いし
    0.001や0.00001刻みだと、変な端数がでる
    (2進数の影響らしい)

②に関しては、RoundDown関数を使い小数点切り捨てで乗り切りました
VBAのループ計算(For~Next)を使い、自動出力
0.001刻みで25.5万行作りましたがマネスクの日足データみたら
2.5万行で良かった・・・0.01刻みじゃんw

①に関しては・・・・ファイルサイズが凄そうだけど・・・
とりあえず作ってみよう!と作成続行
他に良さげな方法が思いつかなかっただけですw

理想は・・・

理想は、バックテストの精度を上げるために1時間足を使いたいんです。
1時間足の高値&安値データがどこにあるか知らないけど

データに関しては、とりあえず作ってから探す方向でw

それでいて自作シミュとの連動(150ポジ×12)
連動せす、単体でもできるように切り替え機能付き
売りも買いも切り替えできて
クロス円とその他通貨も切り替えできれば尚良し
(⁼IF(切替欄有効,基軸レート,1)みたい感じで)

ところがどっこい

作っていくうちに大きくなるファイルサイズ・・・
負荷をかけすぎて動作が重くなるパソコン・・・
メモリ&CPU使用率が上がっていき、異音まで出る始末ww

こりゃマズい!と自作シミュとの連動を辞め
1時間足対応も辞めて日足対応へ(5万行→4,000行)
ポジション欄も半分へ(12→6)

不要な行や列を削除してもファイルサイズが減る事はなく
No1の65行分作った所で作成を断念しました・・・
(約23MB)
半分以下で約23MBだから、150行×6列作ったら大変

知識不足で、無駄な計算が多いんだと思う
関数だけでやるにしても、もっとスッキリとできるのかも

失敗・・・でも動かしてみた

全て作るのは失敗しましたが、動作的には間違っていない気がするので
65行内で収まる、オージー・キウイをバックテストしてみました!

マネースクエア社のヒストリカルデータを使い
2015年9月14日から2020年11月24日までをバックテスト!
約5年分です。

結果は、5年間で累計利益が414,606円!
年利:15%です。(元本:54万円

日足データの高値-安値という、一直線の動きでテストしているので
1時間足で計測した22%とはいきません。

でも、なんかそれっぽい動きしてくれて嬉しい。
CPU使用率がエグイし、PCからシュンシュン異音するけどね・・・
(SurfacePro i5なのでファン無し)

今後は?

やっぱりバックテストツールを作ってみたい
自作シミュと連動できたら面白そうなんだけどな

もう、作るならVBAから逃れられない気がします・・・w
少しずつ勉強して、気が向いた時にチマチマ試行錯誤してみます。
知識を付けなければ・・・(切実)

バックテストツールを自作している方達すごい。
為替研究所:Yuki様
『働きたくない』ガチ勢:アビ様

②へ続く→

【成功!?】Excelでバックテストを作る!②前回、ExcelマクロのVBAがよくわからず関数のみで作成を開始して、失敗したバックテストツールの続きですw もうVBAからは逃れられな...
ABOUT ME
yagisan82
yagisan82
29歳サラリーマン 投資3年生 60万から投資を始めていきます。 毎週の利益を記録したり、固定費やお金にまつわる事を書いていきます。

COMMENT

メールアドレスが公開されることはありません。

お問い合わせ