2007-11-01から1ヶ月間の記事一覧

今日やること、そして今後やること

大学の研究室で実験を繰り返し自動実行しているので、終わったところまでの結果を回収する その結果を考察する 新しい状態クラスを作る(今は移動平均乖離率とRSIのみ) Rオシレーター 順位相関指数(RCI) ディレクショナル・ムーブメント(DMI) HLバンド …

javaで数字の体裁を整えて出力するには(例:001)

「1」を「001」と出力するには、java.text.DecimalFormatを使えばいいのか。 変数に入ってる数字の桁数を調べて(ry、とかいう処理を書こうかと思ったけど、やっぱりちゃんとそういうクラスは用意してあった。 import java.text.DecimalFormat; public cl…

初めてのjava.util.Properties、パラメータをコードに書くのは止め!

参考URL JavaでHello World プロパティファイル編 カブロボシステムで実験を行うにあたって、実験ごとに変更するパラメータの値をコードに直接書くのはいかがなものかと考えたので、外部ファイルから値を読み込むようにしました。 幸い、Javaにはそういうと…

ストレッチでもするか

ストレッチのコツ、あるいは「実録! 体育教師に『なにその硬さ。お婆さん?』と嘲笑されたわたくしが開脚前屈で胸をぺったり床につけられるようになるまで」 ようするに腰を曲げるんじゃなくて、骨盤を前方に回転させろってことだよね。 俺の場合それ以前の…

今日やること

実験の設定をフィールドに持つクラスを作る そのクラスをいじるだけで、色々な実験が出来るようにする。 行動を「買う」「売る」の二つから、「買う」「待つ」「売る」の三つにした場合でも実験する。

まだ、鼻がつまってるが

卒研を進めよう

駄目だ頭がぼおっとして、思考がとぎれる

今日は休みにしよう

風邪をひいた

昨日は大学から帰ってきても、まったく研究に手をつけなかった。喉が痛い、微妙にだるい、鼻が出る。弱いな俺。今日は進めよう

状態RSIで報酬はtanh関数を用いた学習結果

強化学習の設定 強化学習方法:Actor-Critic 状態:RSI(相対力指数)を0〜100で1区切りずつ(計100個) 報酬:資産評価額の前日比を求めた値をxとし、tanh(1000*x)を報酬とする。 取引銘柄:新日本製鐵[5401] 取引期間 開始日: 2005-01-05 終了日: 2006-12…

細かい演算がうまくいかない

きのうは以下のコードで終了しましたが、まともな結果がでないなど色々いじっているうちに public double calcReward(double action, Stock stock) { double reward = 0.0; AssetManager am = AssetManager.getInstance(); TimeManager tm = TimeManager.get…

doubleの演算による「丸め誤差」を避けるためのテク

プログラム: public static void main(String[] args) { for (double i = -3; i <= 3; i += 0.10) { System.out.println(i); } } 実行結果: -3.0 -2.9 -2.8 -2.6999999999999997 -2.5999999999999996 -2.4999999999999996 ... 望んでいる結果: -3.0 -2.9 …

報酬の条件を資産評価額の増減によって判断させる

現在の報酬条件では、ある銘柄の購入価格(始値)と終値を比較し、実行した行動が「購入」、「売却」かによって変えている。 public double calcReward(double action, Stock stock, InformationManager im) { double reward = 0; //株の購入価格はその日の…

全然進まんな

いい改善案が思いつかなくて、サッパリ進まん

今週もがんばろう!

今日はとりあえず報酬をいじくってみる!

報酬がうまくいかない

シグモイド関数のような曲線を描く関数で、−1〜1までの値が得られるものはないかなと探していたらtanh関数が見つかったのでそれを利用したのだけれど、いつも同じ値が出てしまいまともに学習されない。 今日はもう遅いので、明日検証する。 public double …

8時間も寝てしまった

寝すぎた2時に寝て、10時に起きてしまった。一度いつもどおり7時ごろに目が覚めたのに、こんな時間に…。13時から大学で奨学金返済についての説明会があるので、研究はその後で。

適格度トレースは難しい

適格度トレースは良くわからんので、つま先でつついてはみるけど踏み込まないのが続いていました。がしかし、こんな感じに学習させたらいいんじゃない?と考えていたことが、適格度トレースに似ているようなのでちょっと真面目に読んでみました。 http://www…

昼寝で一時間半は寝てしまっていたっぽい

だ、駄目だこんなことでは!

Thread.sleep()を使ってカブロボを繰り返し実行できるかな?

「自動的にプログラムを繰り返し実行する」機能はUWSCで実現しましたが、もしかしてThread.sleep()を使えば出来るんじゃね?と思い以下のコードで実験してみた。 public static void main(String[] args) { String[] arg = { "-n", "RSIRobo2" }; for (int i…

RSI10刻み(状態数10)での学習結果

昨日寝る前に朝まで学習させようと思ったけれど、すぐに収束したので止めた結果のグラフ。 繰り返し4回目でBuy&Hold教に入信したらしく、総トレード数がほぼ1になっています。状態数を減らすとただでさえ酷い学習に磨きがかかりますね。ただ、資産評価額の…

2年間を218回繰り返した強化学習結果

大学に行っている間に上記の学習をさせていたので、その結果を書いておく 強化学習の設定 強化学習方法:Actor-Critic 状態:RSI(相対力指数)を0〜100で1区切りずつ(計100個) 報酬 買:買ったその日の終値が高ければ+1、そうでなければ-1 売:打ったその…

フリーソフトUWSCでプログラムの繰り返し自動実行

UWSC 上のソフトを使ってとりあえず10回繰り返してみました。スクリプトの記述はExcelのマクロっぽいですね。vbもこんな感じなのかな。 RunEclipse.uws ACW(GETID("Java - RSIRobo2.java - Eclipse SDK","SWT_Window0"),-4,-4,1288,1032,0) BTN(LEFT,DOWN,19…

今日は研究室集合の日

理系で卒業研究中なのに、週一回しか大学に行かないってのもおかしな話だよな。まあ家でプログラム組んでるほうがはかどるからいいんだけどね。今日は自動で繰り返し機能をつけたいと思います。 TODO 同じ期間の学習を繰り返すことが出来るようにする。(例…

13回実験を繰り返して学習を進めた結果

1回目の学習結果 終了時資産評価額:50331213 勝ちトレードの純損益%:1.7739999999999998 負けトレードの順損失%:-0.848 最大負けトレード%:-8.49056603773585 最大勝ちトレード%:11.838790931989925 勝率%:61.05263157894737 総トレード数:95 …

インスタンスの書き出し読み込みがうまくいった

うまくいっている模様。後は、実験を繰り返すごとに学習が進んでいることが確認できれば確信できるねぇ。

あまりに酷くて

//何枚マイナスしたかを数える int minus = 0; //注文株数が正しくなるように調整する while (orderQty > sumStockHold) { orderQty = orderQty + minus * stock.getUnit(); minus--; } //注文株数はactionに基づいているので、株数を減らした分action値も減…

昨日終わったはずのところで、バグが出た…

ここの37845, -1000株売却が原因だな…。5000株をちゃんと処理できてないのか。 【前場】ID:37845, 保有株数:1000 現物保有額:429000 5000株売ります 37845, -1000株売却 【後場】ID:37845, 保有株数:2000 【スクリーニング】ID:37845, 保有株数:2000

staticフィールドにアクセスするときは、

public ACMemo(Stock stock, State state) { //this.stock = stockではなくて ACMemo.stock = stock; ACMemo.state = state; ACMemo.portfolioMemo = new PortfolioMemo(); } のようにする。クラスメソッドへのアクセスがClass.getInstance()なんだから当た…

既にインスタンスを出力してるのかしていないのか

すでにインスタンスが保存されている場合とされていない場合で分けるために、フォルダの中にあるファイルの名前を調べる必要があるので、java.io.Fileを使用する。今まで使ったことがあるのは PrintWriter fout = new PrintWriter(new BufferedWriter(new Fi…

Serializableの実装

本日の題名に書いた機能をつけるため、今日も1日がんばろう。 この機能の実装にはJavaにあるjava.io.Serializableインターフェースを使う。Serializableは自分の持っている書籍での解説が皆無なので以下のサイトを参考にする。このインターフェースを実装す…