風邪薬のためか、強烈な眠気が襲ってくる。
今日は今日中に寝なくては・・
先日から実施している、シミュレートは午後9時過ぎまで順調に作業をおこなっていた。
9時過ぎに、div0でプログラムがとまる。
原因はわからないが、プログラムは眠いので明日見ることにする。
出てきた数値の分析をするには、十分なデータがあつまっていると思う。
実行環境はMacのターミナルを使っているので、
とりあえず、シミュレートした銘柄数と総レコード数はすぐに判断がつく、
wc awkで数える。
とてもExcelでは扱えない・・・。
容量は・・・220MB・・。
MySQLに流すのもありだが、今日はとにかく眠い。
DOSVメイン機のAccessに流して処理してみる。
計算した
銘柄数 639
時間 20時間
レコード数 458,724(3回以上のトレード)
平均レコード 717レコード
試行パターン 16,769,916回
のべ計算日数 11,738,941,200日
と、いう感じです。
中身をざっとみると、
・用意した指標はすべて使っている
・銘柄によって採用している指標が相当ユニーク
など、いろいろとわかってきた。
ここの分析は重要なので、明日ももうすこしじっくりながめたい。
月: 2006年5月
シミュレーション結果のデータベース格納準備
先日、久しぶりに高熱をだし、仕事も半日休むという失態をしてしまった。
やはり、後遺症がきつく、現在もまだ微熱があり、集中できない。
(と、いいつつこんな時間に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)連休を活用して、
今週中には、全銘柄のシミュレーションを終えたい。
来週は、手決済で実際にシグナルが出た銘柄を売買してみたい。
(実際に自分でやってみないと、本当の検証にはなりませんからね)