SSブログ

最適トレンドライン算出ツールの開発と概要~客観的トレンドラインの算出~ [投資・経済全般]

先日、ココナラにて「最適トレンドライン算出ツール」(以下、本ツール)を出品いたしました。これは、株価等推移に伴って形成されるトレンドラインを自動算出し、更にそのトレンドラインの強さ(安定性)を順位付けして表示する、というエクセルシートです。

MT4などで一般的に利用されている同様の描画ツールは、トレンドの始点と終点を指定する必要がありますが、そこには任意性があり客観性はありません。
本ツールでは、無数のトレンドの中から客観的かつ一意的に有限個のトレンドを算出し、それに順位付けを行って描画します。

このアイデアそのものは、15年以上も前に当ブログにて紹介したものなのですが、当時は最適トレンドラインの算出はエクセルシート上で手作業で行っており、自動算出には程遠い状況でした。

毎週末に公開していた「今週の投資成績」の中で、最適トレンドラインや同チャネルラインのチャートを開示していたことを、覚えている方もいらっしゃるでしょう。
当時の私の技術では、算出の自動化はおろか、処理の軽量化ですら成し得ていませんでした。

当ブログの更新が滞っていく中、この「最適トレンドライン計算シート」はハードディスクの片隅に追いやられ、長らく日の目を見ることはありませんでした。
そんな中、ココナラブログで公開している拙著「トレード新思想体系」をご覧いただいた方から、最適トレンドラインを客観的に算出するツールを作れないか、という依頼をいただき、今回のツールの開発(改定)に至りました。

基本的には、以前作成した上記シートをベースに改定作業を進めましたが、最終的にはほとんど別物と言っても良い内容となりました。
開発のポイントは、①処理の軽量化、②算出の自動化、③チャート表示の改善、④過去分析機能の付加、⑤株価等自動取得更新、の5つです。


①処理の軽量化では、KFシステムクリエイターで採用した統計関数の漸化式処理を用いています。
最適トレンドラインの算出には、SLOPE関数やSTEYX関数といった統計関数を日々計算する必要がありますが、これらを各行に渡って実行すると、処理が極めて重くなるという問題が生じます。

これらの関数は、2乗和や平方根など、そのままでは漸化式処理できない非線形関数で定義されており、例えば移動平均のような単純な処理は出来ません。
そこで、関数内の各項を個々に漸化式処理し、それを組み合わせることで、統計関数の漸化式処理を実現しています。

これにより、最適トレンドラインの算出に必要な演算負荷が劇的に軽減され、データの更新に対して瞬時に結果を得ることが出来るようになりました。
従来は処理が重すぎて断念していたチャネルラインとの併合も、実現することが出来ました。

②算出の自動化は、今回の開発で最も重要かつ、苦労したところです。最適トレンドラインの算出には、EERのピーク検出が必要なのですが、ピークがきれいにすんなりと出るとは限りません。

通常は疑似ピークが多数出現し、それらをすべてカウントしてしまうと、算出されるトレンドラインが膨大な数に上り、そこに客観性を見出せなくなってしまいます。
例えば、ピークが2日おきに何回も現れる場合、その全てをトレンドとして算出すると、それだけで他の重要なトレンドを見過ごすことになりかねません。

そこで、隣り合うピーク同士の間隔が最低5日以上離れていることを算出条件とし、それに満たない場合は疑似ピークとして無視することにしました。
実は、この考えそのものは15年前から既にあったのですが、当時は目視で疑似ピークを判定し、有効と考えられるピークのみを算出していました。

しかし、これでは客観性に疑念が生じるのみならず、算出の自動化とは程遠い状態でした。
ただ、このような疑似ピーク、言い換えればノイズやダマシを自動的に取り除くことは非常に難しく、今回依頼を受けた際にも、自動処理の確約は出来ませんでした。

この技術は、システムトレードにも通じるところがあり、例えば移動平均と株価との交差でシグナルを出すような場合、ダマシをどのように除外するかが、非常に重要な課題となります。

大抵の場合は、株価そのものではなく移動平均を用いるなどして平滑化処理をし、ダマシの発生を抑える方法を採ります。
しかし、この方法でも取り切れないダマシが存在したり、クロスのタイミングがズレたりする、という問題があります。

今回の事案でも、最初は平滑化処理を試みましたが上手くいかず、一時は自動化を断念しかけたのですが、データの先読みを許容することで達成することが出来ました。
5日以上継続しないとトレンドとは認めない、という要請から、逆に5日間は先読みをしても問題ない、と考えたわけです。

このアルゴリズムにより、効果的にノイズを除去することが可能となり、以前目視で算出していたトレンドラインとほとんど違わないタイミングで、トレンドラインを自動的に算出することが出来るようになりました。

このアルゴリズムを直ちにトレーディングシステムに利用するのは、先読みの問題もあって難しいのですが、数日程度の遅延を前提とすれば、不可能ではありません。
例えば、買い転換した翌日に売り転換し、その翌日に再び買い転換する、といった挙動を、除外することが可能になります。もっとも、それが必ずしも収益向上に結び付くとは限りません。

③チャート表示の改善では、KFシステムクリエイター同様、名前の定義を駆使して、様々な時間軸における推移を一元的にチャート表示することを実現しました。
以前のシートでは、トレンドライン開始日以前を全て空欄にするなどして、期間を限定したチャートを表示していました。

自動処理を考えた時、その空欄をたんなる空白ではなく、数式で""を設定する必要があります。
しかし、その場合、チャート表示はそれを"0"と解釈し、トレンドラインが突然"0"になってしまうように描画します。

流石にそれは不都合であり、トレンドの期間に応じてチャートの描画期間も限定する必要があります。
それを実現するのが名前の定義であり、定義した名前をチャートの系列に指定することで、トレンドラインが期間外で"0"になることを防いでいます。

④過去分析機能の付加では、過去のある時点でトレンドラインを算出することを可能としました。
次図に示すように、株価等推移を期間毎に色分けしてチャート表示することで、算出期間が明確になります。
7203トレンド210401a.png

このチャートでは、2021年4月1日以前の株価推移でトレンドラインを算出しており、直近2本のトレンドライン及び安定指数の高い4本のトレンドラインに対して、その後の株価がどのように推移しているかを示しています。
青線がトレンドラインの算出に用いた過去株価、赤線がその後の推移となる未来株価です。

この事例では、各トレンドが比較的良く機能していることが分かります。直近トレンド38は下降トレンドですが、トレンド発生後2か月ほどでブレイクされ、その後は直近2番目の上昇トレンド10に追従しています。それ以降は、安定指数が最大のトレンド1に概ね沿って推移しています。

⑤株価等自動取得更新では、KFデータマネージャと連携することで、本ツール上に直接株価等を取得し、更新することが出来ます。
KFデータマネージャに本ツール(のファイル名)を登録し、取得更新処理を行うことで、株価等を取得・更新すると同時に、トレンドラインが算出されます。

本ツールでは、データ取得シートを算出シートとは別に設け、算出シート上から取得シート上の株価等を参照する仕様にしているため、取得シートのデータを書き換えるだけで、算出シートの演算結果が更新されます。

これらにより、従来の算出シートでは手動でコピー&ペーストしていた銘柄登録や株価更新が、劇的に効率化しました。
日々の更新は元より、原理的には1分毎程度の更新も出来ないことはないでしょう。ただし、KFデータマネージャにはその機能はありません。


以上のように、最適トレンドライン算出ツールは、トレードの判断材料として利用出来るのみならず、これまでにない新しい株価等分析を実現可能とします。
今まではどちらかと言えば裁量判断に近かったトレンド分析が、本ツールを用いることにより、数理トレード学的な客観性に基いたトレンド分析として活用できるのです。

なお、本ツールの詳細につきましては、2021年11月8日のココナラブログ記事「最適トレンドライン算出ツール取扱説明書」などをご参照ください。

nice!(0)  コメント(0) 
共通テーマ:

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。