明るい未来のために -日経225先物での簡単な運用方法-

明るい未来のために -日経225先物での簡単な運用方法-

トレードをしている方々に、過去のデータから単純に収益を得られるシミュレーション方法を公開しています。あくまでも過去データからの分析によるものなので、実際の収益を約束するものではありません。張りつめたトレードの合間に斜め見して読んでください。

この表題でいいのか。

 

ちょっとだけExcelマクロでの進展がありました。

 

これまで、配列を使ったマクロで売買の最適化を探ってきました。

 

ところが、配列を使った場合、配列データがサブルーチンに飛ばせないため、プログラムが冗長になることが分かっていました。

そのため、サブルーチンで利用可能なプログラムを同じメインに記載する必要がありました。

 

ちなみに、メインとは、主となるプログラムで、サブルーチンとは、メインから分離したプログラムで、メインに計算結果を返すプログラムのことです。

 

言葉では、わかりにくいと思いますので今まで計算を使用としていたプログラム例を紹介します。

 

相場データを読み込む

4通りの売買の組み合わせを計算する

その結果を記録する

記録した結果が以前の結果と比べる

数値が大きいほうの売買データとその結果を記録する

上の4通りの売買は、16通りあるため4回繰り返す

最終的に数値が大きくなった売買データおよび最大値の結果を表示する

 

とこのように売買の最適化の流れを分解したものです。

 

ここで配列データを利用する箇所は次のとおりです。

 

相場データを読み込む

4通りの売買の組み合わせを計算する

その結果を記録する

記録した結果が以前の結果と比べる

数値が大きいほうの売買データとその結果を記録する

上の4通りの売買は、16通りあるため4回繰り返す

最終的に数値が大きくなった売買データおよび最大値の結果を表示する

 

赤字が配列を使用するところで、その他がサブルーチンとしてプログラムを作成できる箇所です。

これは、あくまで私が考えている計算方法なので、ほかの計算方法により、解決することがあります。

 

私のとって、サブルーチンをメインから独立させてプログラムを作成するには大きなメリットがあります。これは、各サブルーチンが正確に動作していることを確認する作業がメイン内を確認する作業と比べて検証が楽だからです。

 

上のとおり配列データがプログラムの間に使用するため、サブルーチン化することが出来ず、プログラムが冗長になり、どの部分で計算違いが起きているのか?を調べる作業に時間がかかります。

 

今回、ネット上に見つけたのは、この配列データをサブルーチンに受け渡す方法です。

 

どこかにあるはずだ、と思い本屋やネット上を探していたのですが、配列を利用した方法は載っているものの、配列を上のような工程で利用できる記載はありませんでした。あったとしても、冗長なものだったり、「答え」あっての制作なので、私のニーズに合いませんでした。

 

まあ、Google検索利用のコツを知らないという点は否めません。また、最近のGoogle検索では、上位に掲載されるのが「スポンサー」が多く、検索の意味をないしていないことを感じており、ネット上の検索は、忍耐が必要になってきている感があります。

 

言い訳のようになりますが、これはGoogleのビジネスモデル上仕方がないことなので受け入れています。決してGoogleのせいではありません。

 

本題に戻ります。

 

当たり前といえば、当たり前の話なのですが、「Function」をサブルーチンとして使えば、うまくできそうです。

もちろん、「Function」でなく、普通の「Sub」でもできるのでないかとも思いました。

 

プログラムを分離して検証できる見込みが立ちそうなので、もう少し良い話題を提供できるかな?と私自身が期待しています。

 

ちなみにこんな形です。

 

Sub main()

    Dim pl01()
    pl01() = test01()

    
    For row01=2 to endrow
        test0101
    Next

End Sub

Function test01()

    Dim pl(2 to endrow)
    For row01 = 2 to endrow
    pl01(row01)

 

    test01 = pl01()

End Function

 

mainは、かなり端折っています。また、まだ完全に検証できていませんが、一部のデータでこの方法で作成したマクロがうまく機能していることが分かっています。

希望は見えてきているのだが。

 

次回に期待したい。
 

 

 

さらっと読む程度の記事です。

 

今年に入ってからの日経平均はすごいですね。4万2千円を超えていますね。

 

ということで、2024年1月から6月末までの日経225先物取引のデータを見てみます。データは、期近のデータになります。

 

ローソク足を見てみます。

グラフの軸が、3万2千円から4万2千円でグラフを作りました。パッと見た目では、大きな変化がないように見えますが、1万円の幅があることを考えれば、大相場ではなかったのではないでしょうか。

 

これまで載せた売買法則、「勝率がおよそ50%になる」についてみてみました。

取引数:121

終値-始値を基準にして次のとおり、

プラス:66

マイナス:51

引き分け:4

勝率:54.55%

 

始値で買い、終値で売った場合、

255万円の益となりました。

1日の最大益:82万円

1日の最大損:86万円

(ラージ取引で換算)

 

証拠金の必要額が250万円くらい必要なので、証拠金500万円を元金と考えると、年利約200%なのでしょうか。

 

これまで、ブログで載せたとおり、宵越しの建玉を持たないという、リスクを少なくした取引で、年利約200%は、安全な投資ではないでしょうか。

 

まあ、後付けですがね。

 

どちらが本題なのか?という内容になります。

 

検証するデータは、直近半年のデータではなく、これまで検証してきた2023年末までのデータです。

このブログで

 

1.BBBB:SSSS  2.BBBS:SSSB
3.BBSB:SSBS  4.BBSS:SSBB
5.BSBB:SBSS  6.BSBS:SBSB
7.BSSB:SBBS  8.BSSS:SBBB

 

と8通りの組み合わせで得られた絶対値が大きい4つの売買の組み合わせを見つければよいということを載せました。

これに沿って、Excelのワークシート上の数字をマクロで変え、検証してみました。

 

答えから。おそらくマクロの計算速度のほうが、ワークシート上の関数計算速度よりも早いため、正確な計算が出来なかったようです。

 

マクロの「If文」に来た時に、ワークシートのデータを読み込むところの変数がない状態でした。

 

ワークシート上のセルの計算式は、ABS関数(絶対値)にSUM関数を入れたものです。

 

=ABS(SUM(x....xx))

 

この関数が計算される前に、マクロ上の変数に代入されているようで、「If文」を加えるとプログラム的に正しく(この言葉でよいか?)動きません。

 

あとは、8通りの結果を羅列して、人間の目で見つければ・・・

 

あまり、意味がないので、マクロのみで結果を出したいと思いました。

 

ちなみに、マクロが正常な値を出しているか否かを確認する場合、多くの人は、

 

MsgBox(xxx)

 

で数値を確認しているそうですが、私は面倒なので、

下のように、マクロ文の横にある余白のところに「赤丸」を付け、変数データをマウスのポインタで確認しています。

ちなみに「ブレークポイント」というそうです。

 

余白にブレークポイントをいくつかつけて、データを確認していくわけです。

書く記事がない状態。また、木曜日の更新も忘れ。

 

ボケてはいないのだが、夏バテはしている。また、日経平均が4万を超え、喜んでいる人が多いかと思います。(この文そのものがボケているのか、夏バテしているのか。あえてそのままにしています)

 

ただ、これは幻想です。

 

前にも載せたとは思いますが、売る人がいるから買えるのです。株価が上がったからと言って、皆がハッピーではありません。

 

タラレバの人も多いと思います。

 

遠足は帰るまで。

株は売るまで。

 

-・-・-・-・-・-・-・-・-

 

突然ですが、エコノミストの話。

いわゆる、エコノミストは、今後の相場について予測しますが、当たるとは限りません。

当たらずとも遠からずというところですかね

 

邪推でしかありませんが、エコノミストは、バーナム効果を使っています。もちろん、予測を書いているエコノミスト本人は、無自覚で使用しているのでしょうが。

 

バーナム効果とは、誰にでも当てはまるような曖昧で一般的な記述を、自分だけに当てはまると思い込んでしまう心理的現象です。

 

本当にかっくじつな予測ができるなら、記事を載せず、黙って自分で売ったり買ったりするはずです。

 

「株で勝利する方法」これは幻想です。なのに本を売ろうとしていて、買う人もいるとは、不思議なものです。

 

もちろん、私も同じで、「これは勝てる」というモデル等を見つければ、載せません。

 

ここに載せているのは、

1.日経225先物取引はニッチな取引なので、あまり興味を持つ人はいないだろうと高をくくっているいます。

2.載せている情報は、あくまでも統計データの処理による考察でしかない。

3.先物取引をするまでのハードルが高い

4.そもそもビュー数が少ない。

 

そんな感じなので、載せています。

 

「あ~また、ビュー数が一桁か」という状態なので、気にせず記事を載せられるのです。

 

ビュー数が増えたら、バーナム効果を使おうかな。

 

いまだに前進せず、頭を抱えています。

 

ただ、いろいろとExcelマクロを書いてみて、わかったことがありました。

 

日経225先物取引の勝率が50%であることから、4つの売り買いの組み合わせで、最良の組み合わせがあるかを探求することにしました。この場合、4X4=16通りの組み合わせがあるということになります。

B=買い、S=売り、とした場合、次の16通りの組み合わせになります。

 

BBBB    1   BBBS    2   BBSB    3   BBSS    4
BSBB    5   BSBS    6   BSSB    7   BSSS    8
SBBB    9   SBBS    10     SBSB    11       SBSS    12
SSBB    13       SSBS    14       SSSB    15       SSSS    16

 

数字を後ろにつけたのは、単に16通りの組み合わせを作成してから、数えるために数字がついているだけです。(数字を前に持っていく作業を省いただけですが)

 

これまでの計算方法は、上の16通りの売り買いを、買い=1、売り=-1として、マクロを作成していました。

 

これは、下の組み合わせを見てわかる通り、

 

1.BBBB:SSSS  2.BBBS:SSSB
3.BBSB:SSBS  4.BBSS:SSBB
5.BSBB:SBSS  6.BSBS:SBSB
7.BSSB:SBBS  8.BSSS:SBBB

 

の「:」の右側8通りを計算し、その計算結果の絶対値が大きい組み合わせを探すことで事足りる、ということに気が付きました。

 

コロンブスの卵

 

目から鱗


です。

 

これまでの労力は・・・

 

とは思ったものの、この方法だと計算が早くかつ単純化できます。

 

なぜこの方法を見つけた?、見つかった、には理由があります。

 

配列を利用しようとしたところ、「メモリが不足しています」との警告がありました。そこで、配列設定を分析できるよう定義しなおす作業が必要となりました。

 

結果、「メモリが不足しています」の警告が出ない、定義を探ると分析が不可能、もしくは、配列を利用する意義がないマクロを作成する状態となりました。

 

警告となる条件について、ネット上調べてみたのですが、皆目見当がつかず、あきらめていました。

 

そのため、ほかの方法はないかと探していたところ、上のような8通りの組み合わせを計算すれば、最良売買の組み合わせを見つけられることが判明しました。

 

まあ、早く検証しろよ!

 

ということですが。

更新日です。

 

進んでいないことの報告になってしまいました。

 

現在、244日を基準とした、売り買いのシミュレーションを試みようとしています。

 

これまで次のような事が分かっています。

 

まず、2010年1月から2023年12月末までの3420日分のデータから、寄り引けによる売買、「寄り売り、引け買い」のような取引を行った場合、おおよそ50%の確率の勝敗があること。

 

勝率が50%であることから、4つの売り買いの組み合わせで、最良の組み合わせがあるかを探求してみました。

 

当初、「売り売り買い買い」、つまり、2010年1月4日に寄り値段階で「売り」、翌日も寄り値「売り」、3日目は寄り値「買い」、4日目も寄り値「買い」を行い、それ以降も、寄り値を「売り売り買い買い」の順番で取引していくことです。

この組み合わせで、最良の売買が可能であることが分かりました。

 

その後、2023年末までのデータを検証したところ、「売り売り買い売り」が最良の取引であるとわかりました。

 

この結果から、4つの売買の組み合わせは、検証期間によって、最良解が変わることがわかりました。

 

もちろん、「売り売り買い買い」の組み合わせでもマイナスにはなりませんが、最良な取引ではないのでした。

 

そこで、244日(約1年の営業日)を一つの期間として最良の4つの売買の組み合わせを探し、245日目の寄り値の売買を決定することを検証しようとしています。

 

わかりにくいと思いましたので、次のとおり例を挙げます。

・244日目までの最良の売買の組み合わせを計算します。

・244日まで計算した売買の最良の組み合わせが「売り売り買い買い」と仮定した場合、244÷4=61

・余りがないことから、「売り売り買い買い」の「売り」が245日目の売買となります。

⇒余りが1の場合「売り」。余りが2の場合「買い」。余りが3の場合「買い」となります。

 

この法則に基づいて、1日ずつずらし、計算していこうとしています。

 

が、

 

Excelのワークシートを使った計算方法だと時間がかかりすぎてしまい、マクロのみで計算しようと思うと、マクロで計算された解が、目に見えるよう、ワークシート上に落とすと、マクロで計算された解と異なる。

 

という、ループ作業となってしまい、根負けしている状態が続いています。

 

何とかならないんですかね。