2008年10月24日 (金)

HOLD 期間の 項目の追加

 一応、売りのみだけを調べて見ました。

 HOLD期間     

 1日から2日    45%から55%

 3日から9日    30%から25%

 10か以上      25%から20%

 案外HOLD期間は短くスイング系のシステムと言える。そして更に詳しく見てみたら、長いこと持ったとしても大きく儲けられるとは限らない事がわかる。

        ********

 検証シートにHOLD期間の項目を設けます。

AQ列とAV列が空きになっていますから、それを使います。

セルAQ3・・・・ 日数

セルAQ4・・・・  =IF(OR(AL4=2,AL4=0),AQ5+1,0)

               この式を下へコピペ

セルAV3・・・・ 日数2

セルAV4・・・・ =IF(AND(AQ4=0,AQ5<>0),AQ5,"")

              この式を下へコピペ

         ********

セルCQ26・・・・ 日数     セルCR26・・・・ 回数

セルCQ27からセルCQ40・・・・ 1 2 3 4 5 6 7 8 9 10 15 20 25 30

セルCR27・・・・ =COUNTIF(BP$4:BP$2700,">"&CQ27)-COUNTIF(BP$4:BP$2700,">="&CQ28)

            この式を下40行までコピペ

セルCR40・・・・ =SUM(CR27:CR40)

セルCS27・・・・ =CR27/CR$41 

            この式を下41行までコピペ

 ( この部分は上の損益マトリクスの応用です。)

| | コメント (0) | トラックバック (0)

2008年3月 8日 (土)

データ取得シート その3

 つづき

 恐々テーブルを付けてみたけど、速度は落ちなかった。これで完璧だ。

 率ベースにも直した。

 しかし、分割の有った銘柄で動かしてみると、途中 SUB Yahoo分割修正株価(ByVal rounded As Boolean) で止まった。それで、僕には難しいので、訳も分らずとりあえず、’印をそのSUB全体に付け、動かしてみると動いた。(勝手なことをして申し訳ありません。)

ところが、へたれさんより、またファイルが送られてきた。それでSUB Yahoo分割修正株価(ByVal rounded As Boolean) の意味が解った。修正後終値*を利用して4本値が修正してくれるのだ。全ての株価が連続する。これによって高値安値を使うProgure02にも使えるようになった。

           spade

 でも10年間の検証は大変だ。9000番台の銘柄から検証を始めたのだけど、ITバブルの時にどうしても合わしてしまうので、今最近にはそのパラメータでは合わないような気がする。

 10年間の間には何処かで山場があって10年間で良い成績を出そうとするならなば、どうしてもその山場にパラメータを合わせないといけない。そしてその後底での長い持合ではなかなか成績が上がらない、長いドローダウンの時期が続くのである。

 山場では上げと下げで両方取れるから良い成績を上げられるのだが。(誰でもかsign02

 いや、案外それが出来ないのである。

          *

          *

05  そうこうしているとまた、ファイルが送られてきた。今度はVBAから最適化のテーブルを作ったり、削除するようにコントロールボタンがちょうど良いところに付いているではないか。

 テーブルがあれば凄く重たくなるのだけど、必要でないときはボタン一つで消せて、必要なときだけボタン一つで呼び出せるのだ。

 これで、データ取得に掛かる時間や他の作業部分でも1/2短縮できる。

 (これも、今まで検証作業をした事のない者には分からないことだが、僕からすれば非常に助かるのである。)

 送られてきたファイルにはみずほ8411が検証されていました。もうこれ以上僕が手を加えることも既になくなったように感じた。(新しいアイデアがあれば別ですが。)

        ********

検証結果      ( 通常の移動平均と比較してみます )

8411 みずほFG

検証期間    2003/3/12 ~ 2008/3/4

            通常         idou20

損益合計          1718600                 1310900

トレード数             313                      188

勝率                    42.8%                    54.3%

PF                       1.93                     2.66

損益レシオ           2.58                     2.24

平均利益            26610                   20607

平均損失          -10320                   -9198

最大利益           136000                 161000

最大損失           -52000                 -28000

MDD                                            -81000

MDD率                                          14.3%

連勝                                                 6

連敗                                                 9

 という結果が出ました。パラメータは上の図を見てください。勝率と利益は比例しないことが分かります。移動平均をそのまま使った場合どうしても勝率は45%程度になります。idouの特徴はその勝率を10%程度上げるところにあります。

 (最大利益 )対(最大損失)をみれば5倍以上損益レシオも 2.20以上で損小利大の取引をしていることになります。

 ただし、この結果は8411の一番良い時期を取り上げたものです。持合のときは利益を上げることは出来ません。

 つづく

| | コメント (0) | トラックバック (2)

2008年3月 6日 (木)

データ取得シート その2

 つづき

 これを、検証シートに合体するのだけど、このデータ取得シートに式をつけた方が手っ取り早い。

 へたれさんの場合、VBAで全ての内容を消去してからデータを取り込み、VBAからすべての式をコピーしています。それはエクセルと言うより90%VBAです。

 僕のようなVBA初心者(にわかプログラマー)にはちょっときついので,式の部分は50行まで予め入れておいて、毎回、時系列データと51以下の行は一旦消して再びVBAから50行の式を51行以下に最終行の一行手前までコピーするように改良しました。

 DDを求めるのにDD用の損益を求める式の初期値にその時の終値が入りますから、その部分だけは少し細工しなければなりません。

 VBAの教科書を引き出して作らなければいけなかったのですが。へたれさんのマクロの中にデータの最期の行番号を返す式がありました。

 これに終了を知らせるBeep音をつければ出来上がりです。

         ********

03  一つこれを作ってしまえば、どれにでも対応が出来る、改良するには少しの知識と感がいるけど1から作るのに比べたらはるかに楽だ。scissors

 来週からこれを使い10年間の検証をしようと思う(どの期間でも検証可能)。

       

        ********

 評価欄(1行から2行)の式を2700行まで対応するようにしなければならない。それと41行の式が狂っていたので修正しないといけない。(le-4)ももしも式が狂っていれば直しておいて下さい。

04  新たに10年間のグラフを付けてみました。(le-4)にもグラフを付けてください。

 これは、5711マテリアルの10年間です。

テーブルを付けてもっと最適化を完璧にしもっと良い数字を出したいのですが、速度が落ちるのが怖いです。

 それで、グラフの黄色線が資産曲線です。水色線がその最大値です。

 マイナスの折れ線がドローダウンです。

 最初の-192(MDD率61.5%)が大きいです。

 こんな感じで、これからも検証を続けようと思います。

  一つ大事なことを忘れていました。PSとLCが今は金額ベースになっていますが10年の期間だと株価が100円台のときもあれば1000円台になる事もあるので、全て率ベースに変えなくてはなりません。今日はこの辺にして明日それを直していきます。

つづく

| | コメント (1) | トラックバック (0)

2008年3月 5日 (水)

データ取得シート

 僕のやりたい事は、始めから決まっていた。フォームを使わないで、エクセルシートに銘柄コード、開始日、終了日を入力しボタンを一つ付けて、それを押せば、3分で10年分データ取得と言う物である。

 イメージだけは出来ていたのだ。

 しかし、10年分のデータ取得の問題点は株式分割が有る確率が高いと言うことだ。

02  そこへ、へたれさんが完璧な形でヤフー時系列データ取得ファイルを送ってくださった。10年分のデータ取得に2分とかからなかった。

 早速、自分流に改良した。3行だけを書き換えれば出来た。ほかを直す必要はないし、深い部分は僕にはわからない。happy0101

          spade

 後はこれを検証シートにつけて、最初のボタンだけで、検証シートの方へ式を壊すことなくデータがコピーされれば良いのである。

 あまりにもスムーズに動くものだから、ステータスバーを見ていないといつ終わったのか分らないぐらいだ。終了すればチャイムで知らせてくれるようにしよう。good

 しかし、ぼくの仕事は雑いというか、詰めが甘いのである。80%出来たらまあ良いかといつもそうなってしまう。gawk

         ********

 本来ならメールでお礼の挨拶をヘたれさんにしなければならないのですが。この本文でどのようにヤフー時系列データ取得ファイルを自分用に改良したか、書いていきますので。それをもって挨拶と代えさせていただきます。

| | コメント (0) | トラックバック (0)

2008年3月 1日 (土)

idou検証シートを整える

 前回の記事の通りに式を入れていくとファイルは次のようになります。

「le-3.xls」をダウンロード

 この状態ではパラメータが離れた所にあるので、それをまとめて、評価欄もまとめてその上でグラフをつけます。少しでも検証作業がスムーズに出来るようにします。

エクセルの練習のために上のファイルを一旦保存し、その上でした記のように式を書き込んだ下さい

          spade

  BE列にパラメータの項目名を入れていきます。BF列にはその数値を入れます。

{セルBE4}・・・短期移動平均 {セルBF4}・・・5

{セルK3}・・・=$BF4       (セルBF4の値がセルK3に入ります。)

          *

{セルBE5}・・・長期移動平均 {セルBF5}・・・11

{セルAF3}・・・=$BF5       (セルBF5の値がセルAF3に入ります。) 

          *

{セルBE6}・・・PS        {セルBF6}・・・-40

{セルAC1}・・・=$BF6      

          *

{セルBE7}・・・LC        {セルBF7}・・・-60

{セルAC2}・・・=$BF7      

          *

{セルBE8}・・・PS        {セルBF8}・・・-12

{セルAN1}・・・=$BF8      

          *

{セルBE9}・・・LC        {セルBF9}・・・0

{セルAN2}・・・=$BF9    

 これで、BF列の値を好きに変える事により結果が変わります。 

cafe ちょっと休憩。

        ********

 システムトレードで必要な物は

1.売買指示シート               (idou20.xls)

2. 検証シート                       (le-4.xls)

3. 検証用データ取得シート

この三つです。

 一応データ取得の方法も過去ログに載せている。ただこれは少し難しい。VBAの知識が要るのだ。

 しかし、多少は簡単にすることも出来る。フォームを使わなくても、直接エクセルのセルに銘柄コード、期間をいれれば出来るのだ。

 無料でデータ取得シートを公開しているサイトってあるのだろうかsign02

 なければ多少時間が掛かっても、自分で作るしかない。ここで大きく差が出るからだ。データ取得シートがなければ、長い期間の検証にデータ取得の部分に時間が掛かる。

 具体的に言えばヤフー時系列から10年間のデータを取得する場合50ページ(2500日分のデータ)をコピーペーストしなければならない。この場合30分は掛かる。(しかし、思ったより早くできた。)

 だが、これで、10銘柄の検証をすれば、データ取得だけで5時間以上はかかる。データ取得シートが有れば1銘柄3分で出来るから10銘柄30分だ。この違いは大きい。

 無料でデータ取得シートを公開しているサイトが有るか調べてみよう・・・・・・・

| | コメント (13) | トラックバック (0)

2008年2月29日 (金)

検証結果の一部

 サインを公開している以上、それらの銘柄に対する過去2年間ぐらいの成績も併せて見てもらうのが筋だと思います。

 今までの検証シートはデータの貼り付けに非常に時間が掛かっていました。そこで、P-100から1枚だけ新しいブックにコピーし、MDD,MDD率、連敗、連勝の項目を付け加えました。これは、今記事で書いているidouの検証への改良をそのままP-100に移しました。

 「le-4.xls」をダウンロード  (これはそのidouです)

 すると、いままでの1/4の速度で検証が出来るようになりました。

 検証にあまりにも時間が掛かると、検証作業が億劫になり、そのため取引機会をなくすと言うことも起こりうります。       

        ********

 システムトレードには以下のような一連の作業が伴います。

 データ取得⇒検証⇒パラメータの決定⇒銘柄の選定⇒数量の割り当て⇒日々のデータ更新とその準備⇒取引の決断(自動でも手動でもどちらでも良い)

 取引の決断に至るまでこれらの作業は必要だし。毎日、日々のデータ更新とその準備の作業はいるのです。だから、これら一つ一つの作業は早いに越したことはありません。

        ********

 検証の結果

 それでこれがこの2年間の検証結果ファイルです。

 「kennsyou-02.xls」をダウンロード

後から気が付いたんだけど、新光証券とアイカが勝率45%で最も悪かった、だから連敗数もやはり7・6と多い。しかしどちらも損益レシオが2.5以上でMDD率と連敗数は比例しないようである。

 MDD率、連勝、連敗から見て良かったのは

            MDD率  連勝  連敗

8186 ケーヨ     7.7%    9    4

5711 マテリアル   8.2%    8    5

9669 オークネット  8.4%    7    4 

 僕にはまだMDD率がどれぐらいなら許されるのか解からないが15%ぐらいが妥当だろうかsign02      連敗数は6まで見ないといけないだろう。

 

| | コメント (0) | トラックバック (0)

2008年2月28日 (木)

idouに連勝・連敗を求める式

 前回の記事で書いた式を入れればファイルは次のようになります。

「le-2.xls」をダウンロード

これに前と同じ様に、下に書いている式を入れてください。

          spade

 これらの式はIF文を使うのですが前回の式より少し複雑になります。

 連勝の条件式

 BA列に連勝数を出す式を入れていきます。

 AS列には損益が入っています。

 考え方はこの様になります。

AS>0なら(勝ちの時)BAは1増えます。AS<0なら(負けの時)BAは0になります。AS=0ならBAは変わりません。

 これをIF文にします。

{セルBA4}・・・ =IF(AS4>0,BA5+1,IF(AS4<0,0,BA5))

 下へコピーしてください。

 連敗の条件式

 BB列に連敗数を出す式を入れていきます。(連勝の式とパターンは同じで不等式の向きを変えて、BAをBBに変えれば出来ます。)

{セルBB4}・・・ =IF(AS4<0,BB5+1,IF(AS4>0,0,BB5))

となります。このIF文の意味は自分で考えてみてください。

 下へコピーしてください。

cafe ちょっと休憩

          spade

 思うに今回の企画は良かった。このIF文も基本的な文だし、BA5+1もプログラムの基礎の基礎だ、美しい条件式だ。

          spade

 後は評価欄を作れば出来上がり

{セルBC1}・・・ 連 勝  {セルBD1}・・・MAX(BA4:BA507)

{セルBC2}・・・ 連 敗  {セルBD2}・・・MAX(BB4:BB507)

結果は5連勝と5連敗でした。

 おわり

| | コメント (0) | トラックバック (0)

2008年2月27日 (水)

idouにDD率を求める列を加える

検証用にidouの銘柄シート1枚を新しいエクセルブックを作りそれにコピーペイストをすれば良いのだが、idouを開いてみると凄く重たい。

 そこで、こちらでそのファイルを用意することにしました。

                      「le-1.xls」をダウンロード

   これを使い、実際にDD率を出す列を作っていきます。

          *

 AS列の式を

=IF(AJ4<>"",AJ4,IF(AO4<>"",AO4,0))

 と変えて下にコピーします。空白のセルに0が入ります。もしも何も変わらなければツール(T)、オプション、計算方法、テーブル以外自動(T)にチェックを入れOKをクリックしてください。

          *

 AW列に(期初株価+現在の利益)を入れます。

{セルAW3}・・・DD用利益

その一番下のセルに

{セルAW507}・・・=$E507

その上のセルに

{セルAW506}・・・=AW507+AS506

これを{セルAW4}まで上にコピーします。

          *

 AX列にはその時の最大値が入ります。

{セルAX3}・・・最大値

{セルAX4}・・・=IF(AW4>AX5,AW4,AX5)

これを下までコピーします。式の意味は(IF文としては基本的な文です。)

AW4>AX5 なら最大値が変わり AW4 違うなら(AW4<AX5なら)変わらず AX5

が{セルAX4}に入ります。

cafe 目が疲れてきたので、ちょっと休憩

          *

 AY列にドローダウンを入れます。

{セルAY4}・・・=AW4-AX4

          *

 AZ列にDD率を入れます。

{セルAZ4}・・・=ABS(AY4/AX4)

セルの書式を%に変えます。ABSは絶対値を出す関数です。

        ********

その評価欄を1行2行に設けます

{セルBA1}・・・MDD  {セルBB1}・・・=MIN(AY4:AY507)

{セルBA2}・・・MDD率  {セルBB2}・・・=MAX(AZ4:AZ507)

           *

 MDD -255    MDD率 6.9%

と言う数字が出れば正解。なんか良さそうな数字だ

 idou20 も捨て堅いなぁー

次回 連敗数、連勝数

| | コメント (0) | トラックバック (0)

2008年2月26日 (火)

DD率の分母を考える。

 今までの僕の検証では、連敗数、連勝数、最大ドローダウン(MDD)、ドローダウン率はあまり見ていなかった。

 連敗数は勝率から大体のことは解かると思った。

 なぜMDDを取り上げていないかと言うと、ドローダウン率の定義が今もって自分には、はっきりしないからです。

 つまり、分母の部分が、

 ・ カブロボコンテストの場合 (5000万+最高利益)

 ・ 資産の最高額        (元金+最高利益)

 ・ 個別株の検証の場合    (期初株価+最高利益)

 ・ 最高利益 (たぶんこれは成り立たない。利益が0の時は無限大になるから)

元金をカブロぼのように決めていたなら、まだ他の人のシステムと比較もできるけど、個別株の検証では元金を100万に設定するのか300万に設定するのかで結果が変わってくる。

 個別株の検証の場合,分母が人によって代わるようでは比較にはならない。だから、まだまだ勉強不足なところわはあるけど、DD率の定義として

 個別株の検証の場合 分母に(期初株価+最高利益)を採用しようと思う。

 DD率の式

DD率=(最高利益-現在利益)/(期初株価+最高利益)

となる。

つづく

次回 これをidouにくみ込む

| | コメント (0) | トラックバック (0)

2007年9月18日 (火)

ミスを見つけて

 売りシステムにミスが見つかりました。そこで応急処置を考えたのですが、売りシステムにミスが有ると言うことは、買いシステムにも同じミスが有ってもよいのに、買いシステムの方にはミスがありませんでした。

 と言うことは買いシステムを売りに変換した時にあることが抜けていたと言うことです。

        *

 そのミスは

 売買サインで見つかりました。タイトなストップをかけた時、ストップ(4)が出た翌日に買戻しの(3)が出てしまいます。それだと2度買うことになってしまいます。

 応急処置ではいけない、これは買いシステムからの変更箇所の見落としです。

        *

 調べ直し、改めて後ほど書きます。

多分、下の式でいけると思います。

売りの売買サイン

{セルX14}・・・=IF(V14="ストップ", IF(V15="",4,1), IF(AND(T14=0,OR(X15=1,X15=4)),2,IF(T14=2,IF(OR(X15=4,X15=0),0,2),IF(T14=0,0,IF(T14=3,IF(X15=4,1,3),1)))))

青い部分を変えました。

| | コメント (0) | トラックバック (0)