SSブログ
前の5件 | -

システムトレードと株式長期保有との運用成績比較 [システムトレード]

システムトレードと株式長期保有との差は、一体どこにあるのでしょう?
資産カーブと株価推移とを比較すれば、それは一目瞭然ではあるのですが、具体的な性能指標での比較となると、事はそう単純ではありません。

何故なら、システムトレードにおける損益は、トレード毎に決まるのに対し、株式長期保有における損益は、一般に事前に決定した各期末毎に決定されるからです。
両者の成績を比較するためには、同じ期間毎の成績を求めて比較する必要があるわけです。

KFシステムクリエイターのユーティリティツール群であるKFシステムコントローラには、KFシステムアナライザという成績分析ツールが登録されています。
今回は、それを用いてシステムトレードと株式単純保有との成績を比較し、その違いを明らかにしたいと思います。

比較に用いた銘柄は、3407旭化成です。本銘柄を採択した特段の理由はありませんが、少なくとも恣意的なものではありません。
分析期間は1993年12月14日から2021年3月26日までの約27年3か月間、比較対象システムはRSI逆張り逆システムです。

分析結果の年毎成績サマリーを、次図に示します。また、3407旭化成の株価推移と、RSI逆張り逆システムのドテン運用時損益累計を、併せて示します。
なお、サマリー上の期毎成績は1994年以降1年単位となっており、1993年分と2021年分は含んでおりません。
3407旭化成_運用_20210328a.png
3407旭化成_株価推移_20210328b.png
3407旭化成_資産カーブ_20210328c.png

KFシステムアナライザでは、決算期を年毎、四半期毎、月毎の3通りに設定できます。ここで年毎の場合は、期末を3月末ではなく12月末としています。
これは、個人の確定申告を考えた時に、通常は12月末を区切りとするためです。

上掲のサマリーは、年毎の結果を示したものです。ヒストグラムの項目は、株価推移もしくは損益累計の回帰直線を求め、その周りに分布する実際値の標準誤差や最大残差(乖離値)を求めています。
また、株価推移や損益累計チャートにおいて、回帰直線を青線、回帰直線からの残差を緑線で示しています。

両者を見比べると、当然のことですがシステムトレードの方が回帰直線の傾きが大きいことが分かります。株価は回帰直線を挟んで大きく上下しながらも、全体として緩やかな上昇基調にあります。
一方、システムトレードでは、損益累計は回帰直線から大きく離れることなく、推移していることが見て取れます。

次図は、株価推移及びドテンシステム損益累計の、回帰直線からの残差のヒストグラムです。
3407旭化成_株価_ヒストグラム_20210328d.png
3407旭化成_システム_ヒストグラム_20210328e.png

これらを比較してみると、意外なことに両者には大きな差がないことが分かります。株価の場合は、概ね-400~+800円、システムの場合は、概ね-300~+500円の範囲となっています。
システムの方が多少は残差が小さいですが、株価や資産カーブと、それらの回帰直線との乖離から感じる印象とは大きく異なります。

サマリーの期毎成績を見ると、勝率は(ドテン)システムの方が15ポイントほど大きいですが、平均利益率は株式単純保有の方が、システムの3倍近くも大きいことが分かります。その一方で、平均損失率は株式の方が5倍近くも大きくなっています。
なお、ここで言う勝率や平均利益率等は、あくまで年単位での成績になります。

実際には、1994年1月1日から同12月31日までを1年目、1995年1月1日から同12月31日までを2年目、・・・・・・、2020年1月1日から12月31日までを27年目とし、各年次の中で株価もしくは損益がプラスになった年の割合を勝率、プラスになった年の利益を平均したものを平均利益率、などとしています。

各年の騰落や勝敗を分かりやすく示したチャートが、次図になります。上段が株価、下段がシステムの損益です。赤い実体が陽線、青い実体が陰線となっています。
なお、1993年分と2021年分は、サマリーに反映されていない参考値です。
3407旭化成_株価_年毎成績_20210328f.png
3407旭化成_システム_年毎成績_20210328g.png

これらを見ると、株式の場合は個々の実体が全体的に大きく、それが平均利益率や平均損失率を、システムの場合と比較して大きなものにしていることが分かります。
また、損失レシオは平均利益率と平均損失率との比であり、システムの方が7割ほど大きくなります。

特筆すべきは、株価推移における平均リターンの大きさです。年間6.92%は、システムをも超えています。その一方で、年率リターンはわずか2.11%しかありません。これは、株式を27年間保有し続けた場合、1.76倍になるに過ぎません(配当未考慮)。

その理由は明白です。株価推移が複利運用に等しいことは、これまでに何度も記してきました。すなわち、1994年末に600円で保有を開始した当該銘柄の株価が、27年後には1,055円ほどになったという事実を示しているに過ぎません。

一方、システムの場合は年率リターンが6.15%と、株価推移の3倍ほどあります。これを27年間に渡って複利運用したとすると、累積資産残高は5.01倍になります。
当初、100万円で運用を開始すると、昨年末で500万円ほどになっている計算になります。あるいは、株価と比較すると、当初600円で運用を開始したら3,006円まで株価が上昇したということと等価です。

もっとも、これはあくまで年単位での成績に基づいた結果です。実際のシステム複利運用では、トレード毎に資産を元本に繰り入れていくため、結果は大きく異なります。
その場合の年率リターンは昨年末時点で10.96%となり、時価累積損益率は16.58倍になります。100万円が1,658万円になる計算です。年単位の運用よりも3倍ほど効率的です。

ちなみに、株式を単利運用した場合、すなわち毎年の期末にリバランスを行って投資元本を一定額にした場合、27年後の資産残高は2.87倍になります。
これは単純に株式を保有し続けた場合と比べると、6割ほど資産が増えたことを意味します。

一般に、平均リターン≫年率リターンの場合、期末毎にリバランスを行う戦術は非常に有効です。そして、多くの銘柄はこの条件を満たしていると思われます。
これはドルコスト平均法に近い手法ですが、ドルコスト平均法が資金を定期的に積み上げていくのに対し、リバランスを行うこの手法は、資金額を一定に保ったままで運用を行うことが出来ます。

システム運用の場合は、平均リターン≒年率リターンとなることが多く、リバランスを行うよりも複利運用を行った方が資産は増加します。
今回の事例では、平均リターン6.68%の単利運用で27年後には資産は2.80倍、6.15%の複利運用で前述の通り5.01倍になります。

さて、投資信託等の運用安定性を評価する指標として、シャープレシオがあります。シャープレシオにつきましては、過去の記事「シャープレシオの計算方法」で解説しておりますので、そちらをご参照ください。
一般に、シャープレシオが大きいほど、リスクが小さくリターンが大きい運用が可能であるとされます。値が0.5~0.9で普通、1.0~1.9で優秀、2.0以上で非常に優秀、とされています。

株価推移とシステム運用におけるシャープレシオを比較すると、株価推移のそれがわずか0.05であるのに対し、システムはドテン運用で0.52となっています。
当該システムの場合、辛うじて0.5台に乗っており、投資適格性はギリギリOKといったところでしょうか。一方、株式単純保有の場合は、リスクに見合うリターンが全く得られていないことが分かります。

ちなみに、シャープレシオを求めるに当たって、短期金利を0.5%として計算しました。現在はほとんど0%としても良いのでしょうが、27年前からの無担保コールレートを調べてみると、1994年1月から1995年3月が平均で2.2%程度、その後1995年4月に1.5%まで低下した後、同9月に0.5%台に下がり、以降1999年2月に0.2%、その後はほぼ0%が続きました。2007年に0.5%台まで上昇するも、2010年には再び0.1%を切り、2016年にはマイナス金利に転落して現在に至っています。まあ、0.5%というのはやや大きめの水準かな、という感じです。

以上のように、株式長期保有とシステム運用を、同じ土俵で比較することにより、両者の違いが明確になります。予想もしくは期待した結果とはいえ、システム運用の方が株式単純保有よりも有利であることが分かりました。
ただし、単利運用を行った場合はその限りではなく、特に3407旭化成の場合は、1年毎のリバランスあり株式保有の方が、システム運用よりもリターンが大きくなりました。

もっとも、通常のシステム単利運用ではトレード毎に資金のリバランスが生じるため、実効的な平均リターンは13.81%と、年単位でリバランスを行った場合に対して2倍ほどになります。
何故ここまで大きな違いになるのか疑問ではありましたが、性能指標の導出過程を調べてみてもおかしな点は見られませんでした。今後、改めて検証したいと思います。

nice!(0)  コメント(0) 

システムにおける性能指標の定義と位置付け(4):投資効率と平均損益率 [システムトレード]

投資金額に対してどの程度の利益を上げることが出来るかを表した指標が、投資効率です。投資効率は、次式で定義されます。
  投資効率=(総利益+総損失)/(総利益-総損失) (総損失≦0)
      =(総利益-|総損失|)/(総利益+|総損失|)

上式の分母は、一連のトレードによってどれだけのキャッシュフローが生じたかを示しています。そして分子は、その内どれだけが利益になっているかを示しています。
すなわち、投資効率はその名の通り、トレードの効率性を示す指標であり、この値が大きいほど効率よく稼げることを示しています。

投資効率は、PFを用いて、次のように表すことが出来ます。
  投資効率=(PF-1)/(PF+1) (PF≧0)
  PF  =(1+投資効率)/(1-投資効率) (-1≦投資効率≦1)

これから、PFが0だと投資効率は-100%、PFが1だと投資効率は0%、そしてPFが無限大でようやく投資効率は100%になることが分かります。
また、投資効率が50%になるためにはPF=3、80%になるためにはPF=9が必要になります。

一連のトレードにおける損益率を平均した指標が、平均損益率です。これは全てのトレードにおける損益率の合計、すなわち累計損益率を、トレード数で割った値となります。
平均損益率は、次式で表すことが出来ます。
  平均損益率=累計損益率/トレード数
       =(累計利益率+累計損失率)/トレード数
       =平均利益率×勝率+平均損失率×(1-勝率)

平均損益率は、システムトレードを行う上で非常に重要な指標です。それは、トレードに掛かるコストとの関係が、最も顕著に示されるからです。
例えば、売買1回当たり0.1%の売買手数料が掛かる証券会社でトレードを行う場合、平均損益率が0.2%以下のシステムでは全く利益が得られません。

これは、エントリー時に0.1%、エグジット時に0.1%の計0.2%の損失が、トレード毎に必ず掛かってくることを意味します。すなわち、平均損益率が0.2%のシステムでは、期待収益分が全て手数料に取られてしまい、手元には何も残らないわけです。

そのため、いくら他の性能が優れていたとしても、平均損益率が売買手数料率よりも小さいシステムは、使い物になりません。
ただし、売買手数料率は証券会社によって異なりますし、ロット数によっても異なります。特に最近は、各証券会社で手数料の値下げが相次いでおり、平均損益率のハードルは以前と比べて随分低くなっています。

例えばauカブコム証券などでは、信用取引における売買手数料を無料としています。その代わりに、買方金利や貸株料がやや高めに設定されているようです。
ただし、貸株料に関しては通常、買方金利よりも低く設定されているため、システムに与える影響はより軽微となります。

これらの金利は年利ですので、通常はシステムの期待収益率(平均リターンや年率リターン)から減じられます。例えば買方金利が4%の場合、システムの期待収益率が24%以上であれば、金利を差し引いても20%以上の収益が期待できることになります。
これならば、十分システム運用可能な水準と言えるでしょう。ドテン運用も然ることながら、そのような事情もあるため、システム運用は信用取引で行うことが鉄則です。

ただし、現物取引であっても、売買手数料が無料であったり、非常に安く設定されている証券会社もあるかと思います。現物取引でシステムトレードを行う場合は、そのような証券会社を利用するか、あるいは手数料負けしないような十分大きな平均損益率のシステムを運用するか、もしくは相対的に手数料率が減少するような十分大きなロットで運用するか、いずれかの対策が必要になります。

以上のように、平均損益率は非常に重要な指標ですが、システムによってはその精度に疑問が生じる場合があります。例えば、トレンドフォロー型のシステムの場合、各トレードにおける損益率が大きくバラつきやすくなります。
そうすると、一部の極端なトレードの結果が、全体に大きな影響を与えてしまう可能性を否定できません。

この、平均損益率の信頼性とでも言えるような問題を判断する材料として、最大利益率や最大損失率、損益率標準偏差といった指標を考えることが出来ます。
これらはいずれも、損益率のバラつき度合いを示す指標です。

最大利益率は、全ての勝ちトレードにおける最大の利益率を表します。これは完全に独立した指標であり、統計的な意味合いもありません。
あくまで、過去において最大でどれだけ勝ったことがあるか、を示す指標に過ぎません。そのため、基本的にはシステム運用を行う上で、重要な要素とはなりません。

最大損失率は、全ての負けトレードにおける最大の損失率を表します。これも完全に独立した指標であり、統計的な意味合いはありません。
あくまで、過去において最大でどれだけ負けたことがあるか、を示す指標に過ぎません。そのため、基本的にはシステム運用を行う上で、本来は重要な要素とはなりません。

しかし、ドローダウンを考えた場合、最大損失率の影響を無視することは出来なくなります。ドローダウンについては、後日、詳細に解説しますが、最大損失率を含む連続した損失が発生すると、システム運用を脅かすほどの大きなドローダウンが生じてしまいます。

そのため、最大損失率は出来るだけ小さく抑える必要があるわけですが、システムによって完全にコントロールできるわけでもないため、対応が難しくなります。
ちなみに、ロスカットを設定すれば、最大損失率を一定範囲内に抑え込むことも可能ですが、多くの場合、ロスカットの設定はシステム性能を著しく低下させてしまいます。

損益率標準偏差は、全てのトレードにおける損益率の標準偏差です。もしも損益率の分布が統計的な振る舞いをするのであれば、そしてそれが正規分布に従うのであれば、平均損益率±損益率標準偏差に含まれる損益率の割合は68%、平均損益率±2×損益率標準偏差に含まれる損益率の割合は95%、そしてほぼ全ての損益率が平均損益率±3×損益率標準偏差の範囲に収まることになります。

しかし、多くの場合、最大利益率や最大損失率は、平均損益率±3×損益率標準偏差の範囲を超えてしまいます。もちろん、それを厳密に論じるためには、実際に損益率の度数分布を求めて、正規分布との整合性を判定する必要があります。

次図は、3407旭化成の回帰順張り逆システムにおける、損益率分布(ヒストグラム)を示したものです。実際の度数を棒グラフで、統計的に求めた正規分布(スケール調整済)を折れ線グラフで示しています。

3407旭化成_損益率_度数分布_20210309a.png

これは、損益率の階級を0%を境に3%刻みで設定したものです。そのため、近似値(正規分布)のピークがずれてしまっています。また、損益率がマイナスの方向に、分布が広がっているように見えます。
そこで、損益率の中心を平均損益率に設定し、階級をそこから3%刻みとした場合の損益率分布を次図に示します。

3407旭化成_損益率_度数分布_20210309b.png

すると、損益率が逆にプラス方向に偏っているように見えます。結局、階級の幅や中心をどのように取るかによって、度数分布の見え方が違ってくることになります。
ただ、いずれの場合でも、度数分布は釣鐘型ではありますが、階級の中央における度数が正規分布よりも突出して大きい、すなわち尖度が大きいことが分かります。

もちろんこれは、システム性能を否定的に捉えるものではありません。むしろ、分布の尖度が大きい分、安定した運用が見込めることになります。
しかし、このチャートでは分かりませんが、分布の裾野には正規分布では説明できないロングテールが広がっています。それは最大利益率や最大損失率に該当するわけですが、この存在が時にシステムの安定性を大きく損ねる要因になっているのです。

nice!(0)  コメント(0) 

KFシステムクリエイターVer7.00取扱説明書 [KFシステムクリエイター]

始めてKFシステムクリエイターを提供してから、今年の6月で早14年になります。その間、システムは大きく変革し、2019年9月にココナラにて提供を再開したのは、Ver7.00となっています。
実はその後も細々とした改定は進めておりますが、フルセット版の初契約を実質的な再スタートにしようと決めているため、現状は未だVer7.00のままです。

さて、ココナラにおいてはKFシステムクリエイターVer7.00の取扱説明書を公開しているのですが、内容量が膨大な為、凡そ26回に分けて掲載しています。
そのため、それらを順序立てて見ていくことはやや面倒な状況になっています。

そこで今回、リンク集という形態ではありますが、それらを順序立ててご覧いただけるよう、本ブログ上にて掲載することにいたしました。
各リンク下には、簡単に項目を記載しておきましたので、興味のある個所からご覧いただければと思います。

各タイトルをクリックすると、ココナラの当該記事にジャンプします。記事を見るだけなら費用は生じませんので、ご安心ください。
なお、当該記事下のリンクをクリックすると、出品サービスの内容をご確認いただけます。


KFシステムクリエイター取扱説明書(1)
 前書き
 目次

KFシステムクリエイター取扱説明書(2)
 1.はじめに

KFシステムクリエイター取扱説明書(3)
 2.システムの概要
 (1)KFシステムクリエイターでできること

KFシステムクリエイター取扱説明書(4)
 (2)システムの構成
  (a)システム
  (b)サマリー
  (c)オペレーション
  (d)テーブル

KFシステムクリエイター取扱説明書(5)
  (e)時系列分析
  (f)チャート

KFシステムクリエイター取扱説明書(6)
 (3)ロジックの種類
  (a)基準ロジック
  (b)追加ロジック
  (c)合成ロジック
  (d)フィルタ

KFシステムクリエイター取扱説明書(7)
 (4)システムのインプット

KFシステムクリエイター取扱説明書(8)
 (5)システムのアウトプット
  (a)全評価期間
  (b)運用後評価

KFシステムクリエイター取扱説明書(9)
 3.初期設定
 (1)エクセルの設定
  (a)エクセル2003
  (b)エクセルバージョン2004(2020年4月バージョン)

KFシステムクリエイター取扱説明書(10)
 (2)システムの設定
 (3)株価データの取得
 4.システムの基本操作
 (1)サマリーページの操作

KFシステムクリエイター取扱説明書(11)
 (2)オペレーションページの操作

KFシステムクリエイター取扱説明書(12)
 (3)チャートの操作
 (4)システムシートの操作

KFシステムクリエイター取扱説明書(13)
 5.セットアップ
 (1)ロジックの選択
 (2)フィルタの設定
 (3)システムのセットアップ

KFシステムクリエイター取扱説明書(14)
 6.最適化
 (1)最適化とは
 (2)最適化条件と対象指標

KFシステムクリエイター取扱説明書(15)
 (3)システムの最適化

KFシステムクリエイター取扱説明書(16)
 7.追加システムと合成システム
 (1)追加システム
  ①追加ETD順張り:ETD順張り基準の追加システム
  ②追加損益率順張り:損益率順張り基準の追加システム
  ③追加ETD逆張り:ETD逆張り基準の追加システム
  ④追加損益率逆張り:損益率逆張り基準の追加システム
  ⑤保有日数フィルタ:保有日数フィルタ追加システム版
  ⑥寄引変換:寄付⇒寄引変換システム(改修中)

KFシステムクリエイター取扱説明書(17)
 (2)システム間の相関:相関係数算出マクロ

KFシステムクリエイター取扱説明書(18)
 (3)合成システム
  ①合成S1S2:2システムの合成システム

KFシステムクリエイター取扱説明書(19)
  ②合成S1S2S3:3システムの合成システム
  ③合成S1bS2s:買いシステムと売りシステムの合成システム

KFシステムクリエイター取扱説明書(20)
  ④合成S1S2S3RSma:レジームスイッチMA
  ⑤合成S1S2S3RSatr:レジームスイッチATR

KFシステムクリエイター取扱説明書(21)
 8.システムの運用
 (1)運用条件の設定
 (2)運用の開始

KFシステムクリエイター取扱説明書(22)
 9.システムの保守管理
 (1)株価データの更新
 (2)システムの更新
 (3)機能性判定

KFシステムクリエイター取扱説明書(23)
 10.より深くご利用いただくために
 (1)オリジナルロジックの作成
 (2)オリジナルフィルタの作成

KFシステムクリエイター取扱説明書(24)
 11.おわりに

KFシステムクリエイター取扱説明書(25)
 0.使用上のご注意

KFシステムクリエイター取扱説明書(26)
 [追補]2020年8月3日以降、同年9月23日までに改定した内容


また、下記に株価取得更新ツールであるKFデータマネージャ取扱説明書へのリンクを記します。合わせてご参照ください。


KFデータマネージャ取扱説明書
 1.KFデータマネージャの概要
 2.KFデータマネージャの主な機能
 (1)銘柄名自動取得・設定
 (2)単元株数自動取得・設定
 (3)ファイル名自動設定
 (4)エラー時メッセージ表示機能
 (5)インターネット一時ファイルの削除
 (6)株式分割の確認
 3.各セルの設定方法
 4.KFデータマネージャの使用方法
 5.ご使用に当たっての注意事項


これらの記事の内容は、取扱説明書であると同時に製品仕様書でもあります。その中には様々なノウハウが内包されており、特にエクセルでトレーディングシステムを構築されようとしている方にとっては、大いに参考になるのではないかと自負しています。

そして、もしもシステム開発に行き詰まったり、時間的な制約などからご自身での開発を断念されるようでしたら、一度KFシステムクリエイターをお手に取っていただけたらと存じます。
これから訪れるであろう株式相場の大波の中を航海するに当たって、羅針盤となるシステムが必要であることを信じて疑いません。

nice!(0)  コメント(0) 

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

本記事は、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) 
前の5件 | -