指標作成シミュレートこける

風邪薬のためか、強烈な眠気が襲ってくる。
今日は今日中に寝なくては・・
先日から実施している、シミュレートは午後9時過ぎまで順調に作業をおこなっていた。
9時過ぎに、div0でプログラムがとまる。
原因はわからないが、プログラムは眠いので明日見ることにする。
出てきた数値の分析をするには、十分なデータがあつまっていると思う。
実行環境はMacのターミナルを使っているので、
とりあえず、シミュレートした銘柄数と総レコード数はすぐに判断がつく、
wc awkで数える。
とてもExcelでは扱えない・・・。
容量は・・・220MB・・。
MySQLに流すのもありだが、今日はとにかく眠い。
DOSVメイン機のAccessに流して処理してみる。
計算した
銘柄数 639
時間  20時間
レコード数 458,724(3回以上のトレード)
平均レコード 717レコード
試行パターン 16,769,916回
のべ計算日数 11,738,941,200日
と、いう感じです。
中身をざっとみると、
・用意した指標はすべて使っている
・銘柄によって採用している指標が相当ユニーク
など、いろいろとわかってきた。
ここの分析は重要なので、明日ももうすこしじっくりながめたい。

シミュレーション結果のデータベース格納準備

先日、久しぶりに高熱をだし、仕事も半日休むという失態をしてしまった。
やはり、後遺症がきつく、現在もまだ微熱があり、集中できない。
(と、いいつつこんな時間にblog書いてていいのか・・・(–;)
今日は、シミュレーション結果をデータベースに格納するために、
・ 格納するレコード定義の仕上げ
・ データをレコードの項目に合わせる成型作業
を行った。
作業自体は、あまり頭も使うことなく、淡々と作業をし、
いつもの、デバック&修正の繰り返しで、とりあえず、
形ができた。
今までは一銘柄だけでテストをしていたが、
データの形が整ったことから、実際にデータベースに流す前に、
ある程度の銘柄を処理して、
・ 大量に処理したときの負荷のかかりかた。
・ 不正なメモリ操作はしていないか確認(おかしければ微妙にメモリ使用量が増えていく)
・ 実際にかかる時間
などを計測して、
Excelなどで、
・ 採用指標に偏りがないか
・ ポイントの付け方は妥当か
・ 採用指標の倍率は妥当か
などを試行したい。
今回は全銘柄でなく、とりあえず、東証1部銘柄の処理をすることにする。
たまに息継ぎをさせてやるために、銘柄切り替えのつど10秒のSleepをいれてやる。
以前に高負荷で連続運転したら、気が付いたら電源切れてましたから・・(^^;
今日はこの作業をスタートして、寝ることにする。

作業進まず

今日は久しぶりに高熱がでて、全くPCをさわれないままに、一日が過ぎた。
普通は布団の中で、NotePCで作業をしていたりするのだが、今日は全くそのようなこともできぬままであった。
予定ではシグナルをだすはずであったが残念・・・
とりあえず今日は早く寝ることにする。

シミュレーション結果のデータベース化

今日は天気が良く、外遊びにはもってこいの日であり、プログラムはあまり進まない日であった。
Excelでシミュレーションの結果を見たり、
履歴で実際のチャートで変なところで売買をしていないか、
などを検討してみた。
結果は、概ね仕方ないかなぁ・・といったところ。
チャートを見ると、どうしても先をみてしまうので、
まだ落ちるやろ・・、なんでもう利確するかなぁ・・などと、考えてしまうが、
先の見えていない状態から考えると、概ねいけてると思う。
そこで、この結果から実際の売り買いサインを出すシステムになるのだが・・
当初、このシミュレーション結果は、毎回計算をするので、最適なパターンだけを出力して、
他の過程は捨ててしまうつもりであった。
ただ、後の検証などを考えると、シミュレーションで出てきたパターンや、
シミュレーションの履歴をデータベース化して、あとでこれを分析すると、
もっといろんなことができそうな気がしてきた。
そんなわけで、サインを出す前に、この結果をデータベース化することにした。
ここで、シミュレーション結果と履歴のテーブルをどのようにするのが良いか・・
正規化からすると、当然に分けるのがスジであるが、
履歴は自動で処理して分析する予定はない。
そんなわけで、シミュレーション結果の最後にたらたらと、BLOB型で保存することにした。
(決して面倒なだけではない(^^;)
これで各処理の結果などはすべてデータベースに格納されることになる。
もっと、軽いシステムにするつもりが、データベースを中心とした、おもたーいシステムに
なってきている。(^^;
最終的には、このシグナルや根拠をWEBなどで公開することを考えると、
データベース化しておく方が楽なので、当初のイメージよりは重たいが、
このまま進めることにする。
今日の作業は、
データベースのテーブル定義(すぐ終わるけど)、
データベースにInsertする処理のコーディングの途中、
までの作業であった。
なんとか来週の取引からシグナルだして、実際の売買(手売買)に
使いたいです。

シミュレーションの試行錯誤

今日は、GW初日(1,2日は当然仕事です。それにしても通勤電車ガラガラだった・・(;;))
今日は、子供らの相手をしつつ、
・シミュレーションで出た結果をExcelに流し込む
・Excelでいろいろと検証
・プログラムを修正
を、繰り返した。
昨日のシミュレーションより、だいぶ精度が上がった。
これは、精度が上がったというよりも、昨日のプログラムに不具合があっただけともいうが・・・。
結局、勝率、利率ともに上昇し、今後の自信につながった。
期間中に最低3回は取引をすることを条件に加え、
510パターンが抽出された。
平均は、
取引回数 4.1回
勝率  76%
利率 57.4%(年率換算)
と、いうところ。
ちなみに、この銘柄(1301)で一番パフォーマンスの良いパターンは、
・RSI 9日 20% 比重1
・VR 14日 20% 比重1
・PSY 12日 25% 比重2
で、
700日間の取引データの中での、
取引回数3回
勝率100%
平均利益21.7円
平均運用期間14.3日
利率83.9%
であった。
ちなみに、売買のLOGは、
kai:2003-11-19:137円=>uri:2003-11-25:156円
kai:2005-09-14:254円=>uri:2005-10-04:270円
kai:2006-02-21:267円=>uri:2006-04-03:297円
と、いう感じ。
他の組み合わせで、
2004/12/17でシグナルを出しているものもあり、
こちらの利益率はおいしいのであるが、他の成績がもう一つだった。
いいとこ取りができればいいんですが・・。
そんなわけで、組み合わせは、何通りか抽出して、そこからシグナルを出させることも
検討する。
だんだん、複雑になってきた・・。
そろそろ、全銘柄の計算をさせても良いのであるが、
受け皿になるべき、データベースがまだできていないので、
早急に整備したい。

シミュレーション(仮)してみた

先日から、チャレンジしてきたシミュレーションであるが、
実際の日足データや日中足データのデータベース化よりも、
手強かった・・・(–;
2,3日でできると思ったが、結局まる1週間以上かかってしまった。
(と、言ってもまだまだ仮ですが・・)
・ データベースは新しい日付から読み取るが、シミュレーションが古い日から処理する、
 こんな当たり前のことが、計算してみて、異常数値がでるまで気が付かなかった(^^;
・ ループが深いので、localでサブ化しようと思ったが、Perlのlocalの扱いって、
 myとそこからのサブルーチンとおもっていたが、どうもエラーがでてうまくいかず・・。
 結局、サブルーチンに全変数(10個くらい)を引数にした・・(^^;
・ ?演算子の書き方を間違えていた(^^;
など、人には言えない間違いが多々あり、マシンデバックできない環境では、
机上デバックの重要性を思い知った。
でも、仕様書なんぞは、作るつもりはありませんけどね(^^;
さて、実際にシミュレーションを動かしてみた。
内容は、今までにも何度もでてきたもので、
1銘柄につき、
・5指標
・3or2パターン
・3比重(0..2)
の、26,244パターン
但し、指標を3つ採用したもののみでシミュレーション。(感覚的に3つがいいかな・・と)
これを700日でシミュレートする。
売り買いの条件は、
買いから入って売りで抜ける。(カラ売りなし)
買い  ポイント90以上
       => 翌日の寄りつきで買い
売り  ポイント△90以下 
      又は 
       買い以降の終値の最高値ベースの95%と比較して終値が下回った
       => 翌日の寄りつきで売り
と、至ってシンプルにした。
やってみると、(今回は1銘柄1301のみ)
26244パターンの指標の組み合わせで、実際に買いから売りで決済できたのは810パターン
平均売り買い回数は 2.6回
平均利益額は 5.3千円
平均保有期間は 9.4日
と、いう結果であった。
興味深いのは、この単純な売買で、損失になったのは、わずか14パターンであった。
当然、実際に使うのは、上位のパターンであるが、
回数 利益 平均期間
3 16 6.333333333
4 16 7.5
2 16 9.5
3 16 6.333333333
4 16 7.5
5 16 19.2
3 14.25 6.333333333
3 14.25 6.333333333
4 14.25 6.5
5 14.25 7.4
3 14.25 8.666666667
4 14.25 6.5
と、いう感じであり、まーまー使えそう。
株価みていただければわかりますが、結構な利益率。
ちなみに、この処理は、我がminiで、97秒で処理している。
(iTuneで音楽聴きながら、Safariでサーフィンしながら)
明日はもっと銘柄を増やして、分析を進めたい。
そろそろ、シミュレーション用のPCでも用意するかな・・・。
開発しながらのシミュレーションは効率悪いです。

なんとかシミュレーション開始

なんとか、シミュレーション開始できそうになった。
先日は、ポイントの異常数値に泣かされたが、
今回は、ポイントが一定数以上になったときの判定で、
初歩的なミスをしていたことから、なかなか先に進むことができなかった。
26,244通りのポイント計算のパターンをシミュレートするが、
その時の、ポイントの割り振りをするところで、初歩的なミスをしており、
いろいろと、処理を進めると、MAX100の数値が、100を超えてしまい、
シミュレーションが異常なことになっていた。
今回、その原因がわかったことから、シミュレーションでのシグナルが、
だせるようになった。
今後はとりあえず、そのシグナルが最初に出た時に、売りor買いをする。
翌日の寄りつきで約定したものとする。
その後の高値or安値ー5%程度で反対決済をする。
実際の取引は、ザラ場を監視して、注文をだすが、とりあえずは、
こんなシミュレーションで、最適な指標の組み合わせを作りたいと思う。
GWは暦通りなので、1,2は仕事であるが、残りの(5-2)連休を活用して、
今週中には、全銘柄のシミュレーションを終えたい。
来週は、手決済で実際にシグナルが出た銘柄を売買してみたい。
(実際に自分でやってみないと、本当の検証にはなりませんからね)