SSブログ

資産形成を目指すあなたへのメッセージ [投資・経済全般]

本記事は、2020年9月22日にココナラブログに投稿したものですが、残念ながらほとんど読まれた形跡がありません。
このまま埋もれさせてしまうのも心残りなので、こちらに転載させていただきます。なお、オリジナルの内容とは若干異なっている個所があるかもしれません。


今時、銀行にお金を預けていれば勝手に増えてくれると思っている方はいないでしょう。かつては利息が年10%も付く夢のような時代がありました。

ちょっと計算すれば分かりますが、例えば元金100万円を利率10%複利で40年間預けたとすると、40年後の受取総額は4,526万円にもなります。
流石に10%というのは瞬間最大風速のようなものですが、それでも長期に渡って、年率5%くらいは確保できるという幻想がありました。

これでも、40年間で100万円が704万円になります。この幻想の上に成り立っているのが、日本の年金制度です。この大前提として、日本の経済成長率が相応にプラスを維持し続けないといけないことは、中学生でも理解できます。
ちなみに、40年というのは日本国民が年金を収め続ける(現状の)最大期間です。

また、生命保険についても、かつては満期になると総払込額以上のお金が戻ってくることが普通でした。保険会社は、利息に相当する部分から保険料を捻出し、余った資金を元本に加えて払い戻していたのです。
今や生命保険は、掛け捨てが当たり前の時代になりつつあります。結局、払い込んだお金で運用益を出すことが難しくなったために、元本を食いつぶしてしまうわけです。

それに絡んだ詐欺まがいの勧誘が事件となり、世間を賑わしたことは、記憶に新しいところです。被害にあった方々の多くは、お金を預ければ増えるという過去の経験により、全く疑うことなく口車に乗ってしまったと推察できます。詐欺まがいとまでは行かなくても、予定利率の高い過去に契約した保険を、利率の低い新しい保険に乗り換えさせる、なんてことは、大手の保険会社でも普通に行われていました。

さて、今や公的年金だけでは老後の十分な収入を得ることは難しく、確定拠出年金(iDeCo)等による資産形成が推奨されています。
かつては厚生年金基金なるものが存在し、企業が社員に代わって厚生年金の一部を運用してくれていました。しかし、今や自己責任において、個人が自分で将来の収入を確保しなければいけない時代になりました。

確定拠出年金というと、いかにも将来の収入を増やしてくれそうな響きがありますが、結局のところそれは投資信託の集合体でしかありません。
一般の投資信託と異なるのは、受取期間等に制限を設ける代わりに、様々な税制優遇が受けられるということです。

当然、元本割れリスクは存在し、普通に貯金しておいた方が将来の受取額が多かった、という可能性もなくはありません。
また、様々な種類の投資信託などから、自分で運用先を選ばなければなりません。その為には、最低限の金融リテラシーが必要になります。

金融資産を増やす方法としては、投資信託、株式投資、為替取引、ギャンブル等、数多く存在します。
昔ならば定期預金という選択肢もありましたが、その金利は今や0.1%もあれば良い方です。仮にその条件で100万円を40年間運用したとすると、40年後の受取額は何と104万円ほどにしかなりません。デイトレーダーにしてみれば、100万円の元本で4万円の利益を上げるなんて1分で充分、ということになるんでしょうか。

そのデイトレードですが、長期に渡る資産形成向きでないことは、誰もが薄々感じることだと思います。短期のFXトレード然り、バイナリーオプション然りです。
短期間における爆発力は高いですが、長期間に渡る持続力に関しては、疑問符が付きます。もっとも、短期に一気に稼いで「億り人」になることを目指すのであれば、その選択肢もあるかもしれません。

結局、長期に渡って安定して運用を続けるということになると、デイトレ以外の株式投資や投資信託ということになるでしょうか。
投資信託は自分ではほとんど何もしなくて良いというメリットがありますが、結局他人任せの運用ということになります。信託報酬などの負担もあり、元本割れリスクも当然あります。

株式投資は一般に負ける人の方が多いと言われています。材料を見て判断しても空振りしたり、目標株価は当てにならなかったり、チャートを見てもタイミングを掴めなかったり、あるいは市場全体の動きに足を引っ張られたりと、自己判断を迫られるが故に失敗してしまう場合が多いことでしょう。

株式投資の王道は有望銘柄の長期保有だとされていますが、近年においては必ずしも正解ではありません。株価が右肩上がりである時代は終わり、株価は常に変動するようになりました。その変動周期や大きさは一定ではなく、当然、買値を上回る時期もあれば下回る時期もあります。
資産形成という視点で見た時に、お金が必要な時に必ずしも資産が増加しているとは限らないのです。

それではと、長期投資ではなく中短期トレードの積み重ねで資産を増やそうと考えると、前述の失敗事例の罠にハマってしまうことになります。
株式トレードにおける裁量判断は、多くの場合良くない結果をもたらします。そして悲しいことに、それは往々にして繰り返されます。

裁量トレードそのものを否定するわけではありません。しかし、例えば材料一つとってみても、市場環境によってはそれが好材料になったり悪材料になったりします。また、テクニカル分析で売買ポイントを判断しても、その時々によってタイミングがブレる場合もあるでしょう。そもそも、そのテクニカル分析の根拠は正しいのですか?

まさか株価が20日移動平均を上回れば買い、5日移動平均を下回ったら手仕舞いすれば勝てる、などと本気で思っている方はいないと思いますが、それに近い幻想を抱いている方は多いのではないかと想像します。
雑誌などで、チャートに印をつけて、「このタイミングで買え!」などと謳っている事例を見かけることがありますが、それは充分長期に渡って、全ての対象事例について客観的に評価した結果では断じてありません。

テクニカル分析で、このシグナルがこうなって、あのシグナルがああなったらエントリーし、そうこうなったらエグジットせよ、的な記述を見かけますが、そんなんで常勝出来れば誰も苦労はしません。
中には、そのような分析結果を示しながら、「それでも最後はあなたの裁量判断」などと嘯いている記述も見かけることがありますが、私には全く理解できません。

それを自分の中だけで行う分には誰も文句を言う筋合いはありませんが、他人に推奨するとなると、それなりに責任ってもんがあるのではないかと思います。
少なくとも、誰もがその手法を客観的に検証できる情報が示されている必要があります。それに関して、「ノウハウだから」などと開示を拒むならば、それは自らの手法を否定していることと同義です。

結局、そのような客観性を突き詰めていった手法が、システムトレードということになります。システムトレードは嘘をつきません。それは、必ず勝てるということではなく、誰がそのトレードを行っても、あるいはトレードを行わなくても、その結果は必ず同じになる、ということです。

もちろん、システムの中身がブラックボックスでも構いません。重要なのは、決まったインプットに対しては、誰が行っても必ず決まったアウトプットが対応する、ということです。
それに加えて、少なくとも充分長期に渡って期待値がプラス、すなわち資産カーブが右肩上がりであることが重要です。トレードというからには、資産が増えなければ意味がありません。

通常の株式トレードの場合は、エントリーからエグジットまでが1セットとなります。その結果と次のトレードとは一般には関係がなく、独立した事象となります。
一方、システムトレードの場合は、システムの運用を停止するまでの一連のトレードが1セットとなります。そのため、通常の売買に関しては機械的に淡々と行えばよく、トレード毎に次のトレードを考える必要はありません。

問題となるのは、資産カーブが右肩上がりでなくなってきた場合であり、その時はシステム運用継続の可否を総合的に判断する必要があります。
もっとも、複数のシステムでポートフォリオを組んで運用するのが普通であり、機能しなくなったシステムは除外し、新たに別のシステムを投入するか、残ったシステムでリバランスを行うか等で対処することが出来ます。

これは、投資信託が複数の株式や債券などでポートフォリオを組んで運用するのに対し、システムトレードでは複数のシステムでポートフォリオを組んで運用する、ということです。
投資信託の場合、株価の変動の影響をもろに受けるため、ポートフォリオを組んでいても少なからずその影響を受けてしまいます。

しかし、システムトレードの場合は、ポートフォリオを構成する個々のシステムの資産カーブの変動が、株価そのものの変動と比べて小さいため、ポートフォリオを組むことでより一層の安定性を実現できます。
システム内の個々のトレードは自力で行う必要があるという面倒はありますが、通常の株式投資は元より、投資信託と比べても魅力的な資産形成手法なのではないかと考えます。

KFシステムクリエイターの場合、作成したシステムの寿命は通常、数年程度です。すなわち、定期的にシステムを新たに作成して、運用に回していく必要があります。
そのためには、出来合いのシステムを入手するだけではなく、新たなシステムを生成し続けることが必要になります。

KFシステムクリエイターが単なるトレーディングシステムではなく、トレーディングシステム作成ツールと謳っているのは、正にこのためです。
けして安くないお金を出して単発システムや手法を購入し、それで短期的に利益を上げることが出来たとしても、その後はどうするつもりでしょうか?また同じことを繰り返すのでしょうか?

KFシステムクリエイターなら、いくらでも新たなシステムを造り出し、運用を続けていくことが出来ます。そのためには、多少のスキルが必要になるかもしれません。
しかし、それはシステムの良否を判断するために必要なスキルであり、運用候補となるシステムの生成そのものは、KFシステムクリエイターが担っています。

あとは、ほんの少しのパソコン知識とエクセルの基本操作、そして最低限必要な初期運用資金と株式投資の知識、資産形成に向けた熱意と希望と勇気と十分な時間があれば、裕福な老後を過ごすことが出来るかもしれません。
私には現状、最低限必要な初期運用資金も十分な時間もありませんが、このメッセージをご覧のあなたなら、安定した資産形成を実現出来るかもしれないのです。

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

エクセルのちょっといい話(20):エクセル2003の並列実行 [エクセル]

KFシステムクリエイターの管理ツールであるKFシステムコントローラには、複数のエクセルを同時に起動し、それぞれのエクセルで開いたブックのマクロを個々に実行する「並列実行ツール」が内包されています。
これは、Core i5などのマルチコアCPU環境でシステムを運用する場合に有用です。

KFシステムクリエイターは極めて複雑なシート構成となっているため、マルチコアを有効にしたエクセルで実行すると、頻繁にオーバーヘッドが発生し、処理が著しく停滞したり、場合によってはハングアップしてしまうことがあります。
そのため、システムの実行環境としては、マルチコアやマルチスレッドを解除することを推奨しています。

しかし、そうすると当然のことながら、マルチコアCPU環境であっても一つのコアしか使用することが出来ません。例えば4コアCPUの場合では、CPU使用率は最大で25%程度にしかならないわけです。
そこで、エクセルを別インスタンス(プロセス)で4つ同時に起動し、それぞれで異なる処理を行わせることで、CPUの実効使用率を100%ほどに高めることが出来るようになります。

本来であれば、エクセルの標準的な機能としてマルチタスクが実現できればいいのですが、残念ながら仕様上、シングルタスクによる逐次処理しか出来ません。
そのために、複数のブックに分かれた重い処理を並列・同時に行うためには、別インスタンスで複数のエクセルを起動し、それぞれで処理を行ってやる必要があるわけです。

それを実現するために、並列実行ツールでは、「エクセルを起動して指定ブックを開きマクロを実行させる」、という一連の操作をVBSファイルで書き起こし、それを複数同時実行させることで、"疑似的"に並列処理を実現しています。

この処理では負荷の調整や配分が出来ないため、事前に各処理に掛かる時間を見計らって、各インスタンスに出来るだけ均等になるよう実行ファイルを配分してやる必要があります。
そのため、あくまで"疑似的"な並列処理(マルチタスク)となっています。

本来のマルチタスクであれば、先に処理が終わって待ちが生じているインスタンスに対し、他のインスタンスで処理待ちのファイルがあれば、それを割り当てることが出来るはずなのですが、本並列実行ツールでは残念ながらそれは出来ません。それゆえに、"疑似的"ということになります。

しかし、KFシステムクリエイターにおいて最も処理が重い時系列分析においては、各処理に掛かる時間が長いため、基本的には処理待ちが生じる余裕はありません。
そのために、"疑似的"な並列実行ツールであっても、その効果が損なわれることはほとんどありません。

従来は、エクセルにおいて並列処理を行うためには、このようなVBSを介しての"疑似的"な方法しかありませんでした。私が最初にシステムに実装したのは2008年3月のことですから、それ以前も含めてずいぶん長い間、新たな試みはなされていなかったように思います。

しかし、最近になって(といっても2年前ですが)、VBSを介さないでマルチスレッドを実現する方法が、"ことりちゅん"さんによって提案されました。

それは、Application.OnTimeを使用するというものですが、詳細につきましてはご本人のブログをご参照ください。なお、リンクの許可申請をしておりませんので、「ことりちゅん マルチスレッド VBA」でググってみてください。
検索結果上位にある2019年3月27日の記事が、それに該当するかと思います。

さて、今回の記事で紹介したいのは、実はこの新たな方法の事ではありません。少なくともKFシステムクリエイターにおいては、従来のVBSを介した並列処理で速度的な問題はなく、使用上の不便等を感じる場面もありませんでした。

私は専らエクセル2003環境でシステム開発や実行を行ってきたのですが、少なくともその環境においては現在も全く問題はありません。
しかし、Microsoft365(旧Office365)の導入により、状況は一変しました。並列実行ツールで処理を行うと、最新エクセルが同時起動するようになったのです。

もっとも、これは随分以前から分かっていたことであり、従来はエクセル2003の自動修復を実行することにより、エクセル2003を既定アプリとして設定し直していました。
また、並列実行が効力を発揮する時系列分析では、最近まで自動実行ツールが出来ていなかったこともあり、並列実行ツールを使用することがなく、特に不便を感じることはありませんでした。

しかし、最近になってやや重い処理を並列実行ツールで行ったところ、起動したエクセルのシートがずれて重なって表示されることに気が付きました。
それが、各処理毎に生じる訳ですから、画面レイアウトはぐちゃぐちゃで訳が分からなくなり、現在どの処理を行っているのか見当が付きません。

調べてみると、これはエクセル2013以降の仕様であり、従来のMDI(マルチ ドキュメント インターフェイス)からSDI(シングル ドキュメント インターフェイス)に変更されたため、ということが分かりました。
しかも、この仕様は設定等で変更できず、ユーザー側では対処のしようが無いようです。

KFシステムクリエイターにおいては、エクセル上でブックを次々に呼び出して処理を連続して行うことが多いのですが、エクセル2003(正確にはエクセル2010以前)では、同一インスタンス上で開いたブックが全て重なって表示されていたため、表示上の問題はありませんでした。

しかし、エクセル2013以降では、せっかく各インスタンスで最初に起動するエクセルブックの位置を決めてやっても、そこから更に呼び出されるブックの表示位置までは制御できなくなってしまいました。
もちろん、各ブックのマクロに、表示位置を決める命令を書き込んでおけば良いのかもしれませんが、使用環境によっては却って面倒な事になる可能性があります。

元々、システムの実行環境としてはエクセル2003が最も適していることから、それがインストールされている環境では、強制的にエクセル2003を起動することを考えました。
具体的には、最初に並列実行ツールを起動したエクセルのバージョンが2003であれば、同ツールから起動されるエクセルもまた2003とする、と言うことです。

もちろん、エクセル2003がインストールされていない環境や、並列実行ツールを起動したエクセルのバージョンが2003以外の場合は、従来通りの処理を行うものとします。
その際、ブックがずれて表示されるという症状は解消しませんが、最終的な処理結果に影響を与えるものではありません。

一番手っ取り早いのは、前述した通りエクセル2003上でアプリケーションの自動修復を実行する、というものです。
しかし、Microsoft365を使用している場合、かなり頻繁に再修復が行われて、既定アプリが最新エクセルに変更されるという問題があります。

並列実行ツールでは、Excel.Applicationオブジェクトを生成してエクセルを起動していますが、この場合、既定のエクセルしか実行できません。
レジストリの変更でこれを回避するという方法も、ネット上には散見されますが、根幹にかかわる部分をあまり変更したくはありません。

そこで、もう一つ考えられるのが、WScript.Shellオブジェクトを用いるという方法です。これを用いて、エクセル2003を直接実行してやれば、既定に関わらず2003バージョンを開くことが出来ます。
しかし、ここで重大な問題が生じます。この方法だと、エクセルのブックを開くところまでは実行できても、それに含まれるマクロを実行することは出来ない、ということです。

Excel.Applicationを用いる従来の標準的な方法であれば、ブックのオープンやマクロの起動など、エクセルで行う様々な処理を指定することが出来るのですが、WScript.Shellでは各アプリケーションが標準的に持っている機能(引数)しか指定することが出来ません。

そこで、この問題を回避するために、最初に起動するブックに自動実行マクロを含ませることにしました。具体的には、起動専用ブックを並列実行マクロから新たに生成し、そのThisWorkbookモジュールのWorkbook_Openプロシージャに、本来起動したいブックとマクロを記述するという方法です。
合わせて、表示位置や終了処理等も記述してやれば、従来の並列実行ツールと同等の処理が出来ます。

起動したいブックの名称やマクロ名、終了処理等に必要ないくつかの指標については、起動専用ブックのシートに予め記載しておき、ブックのオープン時に参照するようにしています。
マクロを起動専用ブックに付加するには、CodeModuleオブジェクトを使用します。これを行うには、事前にVBEのツールから参照設定を開き、「Microsoft Visual Basic for Applications Extensibility 5.3」を有効にしておく必要がります。

あとは、起動専用ブックのエクセル2003からの実行をVBSファイルに書き出し、並列実行ツールからVBSを実行すれば、目的のブックが複数のエクセル2003から起動し、マクロが実行されます。
・・・となるはずでしたが、実はエクセル2003の起動時に、セキュリティ警告が出てしまうことが分かりました。Excel.Applicationを用いた方法ではこの警告は出ないのですが、WScript.Shellを用いると回避できないようです。

これは、エクセル2003のマクロのセキュリティレベルを"低い"に設定しておけば、回避することが出来ますが、常時この設定にしておくのはさすがに気が引けます。
さりとて、並列実行マクロを起動する度に、セキュリティ設定を手動で変更するのも面倒です。

そこで、やや反則的ですが、レジストリをいじることにしました。といっても、システムを不安定にさせかねない大規模なものではなく、セキュリティのレベルを変更するだけのものです。
そして、起動専用ブックが開き、VBSの処理が終了するタイミングで元に戻します。こうすることで、次回以降のエクセル2003の起動時には、セキュリティレベルは標準の"中"(KFシステムクリエイター推奨設定)に戻っていることになります。

エクセル2003のセキュリティレベル変更には、レジストリの"HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\11.0\Excel\Security\Level"の値を設定し直します。
この値が"1"ならセキュリティレベルは"低い"、"2"なら"中"となります。更に、"3"なら"高"、"4"なら"最高"となります。レジストリの書き換えには、WScript.ShellのRegWriteメソッドを用います。

これでようやく、パソコン環境に依存せずにエクセル2003を並列起動出来るようになりました。
なお、レジストリの操作には常に危険が付きまといます。また、安易にセキュリティレベルを下げる行為についても、十分な注意が必要です。

ちなみに、エクセル2003が入手できない場合など、それよりも新しいバージョンのものを使わざるを得なくても、2013以降は表示の問題で使いたくないことがあるかもしれません。
その場合は、エクセル2003の実行ファイルとレジストリの部分を、例えばエクセル2010のものに置き換えてやれば、対応可能だと思います。

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

移動平均を用いた新ロジックシステムの性能 [KFシステムクリエイター]

前回の記事「移動平均を用いた新ロジック適用のトレーディングシステム開発」において、新ロジックの基本的なアイデアと概要について述べました。
今回は、それを適用した実際のシステムにおける性能について報告いたします。

新ロジックを適用したシステムを確認したのは、日経平均株価と8001伊藤忠商事の2銘柄です。これらについて、累乗平均、累乗平均2、累乗平均3の3システムを、それぞれ正逆2通りで最適化しました。
ここで、累乗平均2システムは、株価の動きを累乗平均とその3日回帰直線の傾きで定義したもの、累乗平均3システムは、株価の動きを任意期間の回帰直線の傾きで定義したものです。

これらの累乗項はいずれも"1"、すなわち単純移動平均(相加平均)とし、最適パラメータの選定は直近継続期間が最も長いものとしました。
なお、最適化対象指標としては、勝率やPF、損益レシオ、平均損益率など、トレード数に強く依存する指標は除外しています。

以下に、各システムの代表的な性能指標と、資産カーブ、及び損益累計チャートを示します。また、簡単な説明を記します。

日経平均株価_累乗平均正_性能指標_20210214abc.png
日経平均株価_累乗平均正_資産カーブ_20210214a.png
日経平均株価_累乗平均2正_資産カーブ_20210214b.png
日経平均株価_累乗平均3正_資産カーブ_20210214c.png
日経平均株価_累乗平均正_損益累計_20210214a1.png
日経平均株価_累乗平均2正_損益累計_20210214b1.png
日経平均株価_累乗平均3正_損益累計_20210214c1.png

日経平均株価の累乗平均ドテン正システムでは、累乗平均2が最も良好な性能となっています。ただし、直近においてはやや性能がやや鈍化傾向にあります。
累乗平均は2018年以降、累乗平均3に至っては2013年以降、長いドローダウンが続いています。その原因は、主に2013年からの株価上昇局面における、売りシステムの機能不全にあります。

日経平均株価_累乗平均逆_性能指標_20210214def.png
日経平均株価_累乗平均逆_資産カーブ_20210214d.png
日経平均株価_累乗平均2逆_資産カーブ_20210214e.png
日経平均株価_累乗平均3逆_資産カーブ_20210214f.png
日経平均株価_累乗平均逆_損益累計_20210214d1.png
日経平均株価_累乗平均2逆_損益累計_20210214e1.png
日経平均株価_累乗平均3逆_損益累計_20210214f1.png

日経平均株価の累乗平均ドテン逆システムでは、累乗平均3が最も良好な性能となっています。ただし、いずれのシステムも直近における性能の低下が著しく、運用には適しません。
その原因は、正システム同様、主に2013年からの株価上昇局面における、売りシステムの機能不全にあります。

伊藤忠商事_累乗平均正_性能指標_20210214ghi.png
伊藤忠商事_累乗平均正_資産カーブ_20210214g.png
伊藤忠商事_累乗平均2正_資産カーブ_20210214h.png
伊藤忠商事_累乗平均3正_資産カーブ_20210214i.png
伊藤忠商事_累乗平均正_損益累計_20210214g1.png
伊藤忠商事_累乗平均2正_損益累計_20210214h1.png
伊藤忠商事_累乗平均3正_損益累計_20210214i1.png

伊藤忠商事の累乗平均ドテン正システムでは、累乗平均2が最も良好ではあるものの、いずれも2009年以降はほとんど機能していません。
その原因は、2009年以降の株価上昇局面における、売りシステムの機能不全にあります。

伊藤忠商事_累乗平均逆_性能指標_20210214jkl.png
伊藤忠商事_累乗平均逆_資産カーブ_20210214j.png
伊藤忠商事_累乗平均2逆_資産カーブ_20210214k.png
伊藤忠商事_累乗平均3逆_資産カーブ_20210214l.png
伊藤忠商事_累乗平均逆_損益累計_20210214j1.png
伊藤忠商事_累乗平均2逆_損益累計_20210214k1.png
伊藤忠商事_累乗平均3逆_損益累計_20210214l1.png

伊藤忠商事の累乗平均ドテン逆システムでは、累乗平均が最も良好な性能となっていますが、その一方で直近1年強における運用損益率は、唯一のマイナスです。
その原因は、直近の株価急伸局面における、売りシステムの機能不全にあります。

今回は表やチャートを示しただけの内容となってしまいました。次回以降は、もう少し詳細に、各システムのロジックに対する考察を行います。
nice!(0)  コメント(0) 
共通テーマ:

移動平均を用いた新ロジック適用のトレーディングシステム開発 [KFシステムクリエイター]

トレーディングシステムにおける新たなロジックについて、ちょっとしたアイデアが浮かび、先日来、システム開発を続けてきました。
アイデアそのものは別に目新しいものではなく、多分通常のテクニカルトレードでは普通に行われてきたものではないかと思います。

株価の推移を考えた時、それが上昇トレンドにある時は買い持ちを続け、上昇トレンドが終了したら手仕舞い、もしくは売りに転じることは、極めて自然で基本的な考えです。
それを実現するための最も簡単な方法は、株価が基準とする移動平均の上方にある時は買い持ちを続け、下方に転じたら手仕舞いするというものです。

これをシステム化すること自体は、難しいことではありません。システムシートに時系列で株価の移動平均を計算し、株価が移動平均よりも大きい時は買い持ちの"1"を、小さい時は手仕舞いの"0"、もしくは売り持ちの"-1"を記述してやれば良いだけです。
これらのポジションの境目で売買シグナルが発生するようにしてやれば、移動平均システムの出来上がりです。

しかし、実際に試してみると分かるのですが、この方法で安定した収益が出せるシステムを得ることは、非常に困難です。それは移動平均期間を最適化しても同じです。
もっと正確に言えば、そのようなシステム上で安定的に機能する銘柄を見つけ出すことはとても難しい、と言うことです。

その理由は明らかで、移動平均期間を長くすれば遅延が生じて売買タイミングを逃し、短くすれば騙しが生じて収益機会を阻害する売買が増えてしまうからです。
また、移動平均期間を最適化する場合、あるトレンドでは遅延が支配的になり、またあるトレンドでは騙しが支配的になるという事態が、多かれ少なかれ生じることになります。

その影響を軽減するために、KFシステムクリエイターでは、買い判定と売り判定とで、使用する移動平均を分けています。一般に、買いはゆっくり、売りは急いで、と言われるように、上昇トレンドと下降トレンドとでは、トレンドの傾きが異なることが普通です。
買いと売りとで売買判定を変えることで、両者間のアンバランスを吸収することを目指しています。

しかし、この方法には実は重大な欠陥が存在します。例えば、買い判定を長期移動平均で行い、売り判定を短期移動平均で行う場合を考えてみます。
今、上昇トレンドが継続しているとした場合、通常は長期移動平均の上方に短期移動平均と株価があり、株価は短期移動平均と時々交差しながら、上昇を続けていきます。

この時、上述したシステムの売買を考えてみます。

株価が長期移動平均の上方にあることから、最初の段階では買い持ちとなっていることが分かります。しかし、短期移動平均と時々交差するということは、株価が短期移動平均を下回った瞬間に、買い持ちから売り持ちに転換することになります。
しかも、この場合、株価が再び短期移動平均を上回ったとしても、買い持ちに転じることはありません。

上昇トレンドが長期に渡る時は、一旦売りに転じてしまうと踏み上げを食らって、損失が増大するという事態が生じます。それを避けるために、KFシステムクリエイターでは売りに転じた場合、直近2日間が共に買い持ちだった場合、再び買い転換するという"恣意的"な処理を設けています。
それによって売りの連鎖を断ち切り、不用意に損失が拡大していく事態を防いでいます。

しかし、この方法はけしてスマートではなく、売り転換の直後に再び買い転換するという無駄な売買が生じてしまいます。
それは結局、騙しによる売買と、大きく違うものではないかもしれません。

そこで、移動平均と株価との関係をもう一度思い起こしてみたところ、例えば株価が上昇トレンドに乗って上昇を続けている場面では、その最中に生じる細かな押し目は無視しても良いのではないか、という考えに至りました。
すなわち、株価が移動平均の上方で推移している時に、一旦下落したら手仕舞いもしくは売りに転じ、その後再び上昇して下落前の水準に戻ったら買い直せば良い、ということです。

この方法だと、押し目で利益を上げることは出来ませんが、大きなトレンドには乗り続けることが出来ます。これはよく考えてみると、昔から推奨されている売買手法だったように思います。
ただ、今までこの手のシステムが開発され、機能しているという話を聞いたことがありません。そこで、実際に作ってみて確認するのが手っ取り早いと考えました。

この手法のシステム化に当たっては、まず適用範囲を明確化する必要がありました。単に株価が下落に転じたら売り転換して、元に戻ったら買い直すだけでは、収益機会を得ることが出来ません。
株価がある時点から大きく下落し、非常に長い時間をかけて元の水準に戻った場合、その間に売りで上げた収益は株価反発によって減少し、最後にはゼロになってしまうからです。

では、どうすればこの問題を解決することが出来るでしょうか?

答えは実に簡単です。基準となる移動平均を設け、株価がその上方にある間は押し目からの反発を待ち、株価がそれを下回ったら条件を反転させれば良いのです。
すなわち、株価は下降トレンドに突入したと判断し、株価が反発したら買いに転じ、再び下落して買値を下回ったら売り直せば良いことになります。

実際のシステム化に際しては、株価の動き、すなわち傾きを回帰直線の傾き(スロープ)で表し、それが移動平均の上方でマイナスになったら買いから売り、下方でプラスになったら売りから買い、としています。
この場合、システムのパラメータは、基準となる移動平均の期間、及び回帰直線の算出期間となります。

また、銘柄によっては株価のばらつきが大きく、回帰直線の傾きが安定しない事態が想定されます。そのため、傾き検出用の移動平均を設け、その移動平均の傾きを期間3日の回帰直線の傾きで表したシステムも開発しました。
この場合、システムのパラメータは、基準となる移動平均の期間、及び傾き検出用の移動平均の期間となります。

これら2つのシステムロジックの違いは、一見さほど大きくないように見えます。しかし、実際に適用してみると、作成したシステムには意外と大きな違いがあることが分かりました。
また、これらに共通して、当初の設計思想とは異なる結果が得られてしまいました。

元々は、基準となる長期移動平均の上方で推移する株価とその短期移動平均、という関係を考えていたのですが、実際に最適化を行ってみたところ、多くの場合で基準となる移動平均の方がパラメータが小さい、すなわち移動平均期間が短い、という結果となりました。

これだと、設計当初に抱いていたイメージとは大きく異なってしまいます。まだ細部まで検証したわけではありませんが、実際にどのような事態が生じているのかを精査する必要があります。
これらの結果につきましては、次回以降の記事にて解説する予定とし、今回はここまでといたします。

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

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