アフィリエイト広告を利用しています

広告

posted by fanblog

2015年05月07日

Rubyではじめるシステムトレード7

書籍"Rubyではじめるシステムトレード”にあるトレードシミュレーションサンプルスクリプトをPan Active Market Databaseの株価データを使って動かすことを目指している。

ここまでで1銘柄に対して取引シミュレーションができるようになった。
https://fanblogs.jp/systemtradelab/archive/26/0

さらに動作チェックをすすめていく。サンプルスクリプト"simulation_check.rb"を以下の太字のように変更し、Pan Active Market Databaseから株価が取得できるように変更する。

”simulation_check.rb”

# coding: Windows-31J

require "./lib/simulation"
require "./lib/base"
require "./lib/pan_database_to_stock"

text_to_stock =
PanDatabaseToStock.new(stock_list: "./data/tosho_list.txt")
estrangement_system =
TradingSystem.new(entries: EstrangementEntry.new(span: 20, rate: 5),
exits: [StopOutExit.new,
EstrangementExit.new(span: 20, rate: 3)],
stops: AverageTrueRangeStop.new(span: 20),
filters: MovingAverageDirectionFilter.new(span: 30))
recorder = Recorder.new
recorder.record_dir = "result/estrangement/test_simulation"

simulation =
Simulation.new(trading_system: estrangement_system,
data_loader: text_to_stock,
recorder: recorder)

recorder.create_record_folder

#simulation.simulate_a_stock(8604) コメントにする
simulation.simulate_all_stocks

また、
https://fanblogs.jp/systemtradelab/archive/25/0
で作成したスクリプトの中のprint文を以下のように少し修正したものを実行して、出力を”tosho_list.txt"にリダイレクトする。
print(i,",", prices.Name,",",100,"\n")

これで”tosho_list.txt"内の全銘柄が、”証券コード, 証券名, 100”という形になった。値100は取引株数だと思われるが、今はスクリプトを動かすことを目指しているので特に意味は無い。

"tosho_list.txt"

641,日経・東工取商品指数,100
1001,日経225,100
1002,TOPIX(東証指数),100
1003,NYドル円,100
1007,東京米ドル円,100
1008,東京ユーロ円,100
1009,東京英ポンド円,100
1013,東京豪ドル円,100
1061,-- unregistered --,100
1062,-- unregistered --,100
1063,-- unregistered --,100
1301,極洋,100
1305,ダイワTOPIX ETF,100
1306,野村TOPIX ETF,100
1308,日興TOPIX ETF,100
1309,上海株式指数・上証50ETF,100
1310,ダイワコア30ETF,100
1311,野村コア30ETF,100
1312,ラッセル野村小型コアETF,100
1313,KODEX200ETF,100
1314,-- unregistered --,100
1316,TOPIX100日本大型株,100
1317,TOPIXMid400日本中型株,100
1318,TOPIX Small日本小型株,100
1319,日経300 ETF,100
1320,ダイワ225 ETF,100
1321,野村225 ETF,100
1322,中国A株(パンダ)CSI300,100
1323,NEXT南アフリカ株ETF,100
1324,NEXTロシア株ETF,100
1325,NEXTブラジル株ETF,100
1326,SPDRゴールド・シェア,100
1327,-- unregistered --,100
...

これをdataフォルダ内に保存。

早速変更したスクリプトを実行してみる。
$ ruby check/simuation_check.rb

実行すると
”記録フォルダ result/estrangement/test_simulationは存在しません。新しく作りますか? y/n"
というメッセージが出る。
yと入力すると処理が始まる。

simulationcheck.png


証券コードとデータの順番?のようなものが次々と出力されていく。およそ25分で全部の処理が終了。現在では取引されていないような銘柄もあるはずだが、特にエラーも出ない。

result/estrangement/test_simulation以下に大量のcsvファイルが作成される。

csv.png
csv.png


"証券コード".csvには取引履歴が出力されるようだ。例えば野村8604は以下のようになっている。

"8604.csv"

取引種別,入日付,入値,数量,初期ストップ,出日付,出値,損益(円),R倍数,%損益,期間
long,2006/01/19,2040,100,1963,2006/01/27,2285,24500,3.1818181818181817,12.009803921568627,7
short,2006/08/16,2200,100,2258,2006/08/17,2295,-9500,-1.6379310344827587,-4.318181818181818,2
long,2006/09/15,2125,100,2075,2006/09/20,2070,-5500,-1.1,-2.588235294117647,3
long,2006/09/21,2065,100,2015,2006/09/28,2125,6000,1.2,2.9055690072639226,6
short,2006/12/07,2095,100,2149,2006/12/15,2175,-8000,-1.4814814814814814,-3.8186157517899764,7
long,2007/10/26,1858,100,1784,2007/10/30,2005,14700,1.9864864864864864,7.911733046286329,3
short,2008/02/18,1625,100,1703,2008/02/19,1699.0,-7400.0,-0.9487179487179487,-4.5538461538461545,2
short,2008/02/20,1697,100,1772,2008/02/26,1800,-10300,-1.3733333333333333,-6.069534472598703,5
long,2008/03/10,1535,100,1464,2008/03/11,1452,-8300,-1.1690140845070423,-5.407166123778501,2
short,2008/04/03,1643,100,1716,2008/04/04,1716,-7300,-1.0,-4.443091905051735,2
short,2008/04/07,1687,100,1761.0,2008/04/10,1562,12500,1.6891891891891893,7.409602845287493,4
short,2008/07/25,1648,100,1706,2008/07/29,1530,11800,2.0344827586206895,7.160194174757281,3
short,2008/09/11,1471,100,1521,2008/09/12,1443,2800,0.56,1.9034670292318152,2
short,2008/09/25,1470,100,1546,2008/09/30,1300,17000,2.236842105263158,11.564625850340136,4
short,2008/10/16,1281,100,1389,2008/10/17,1270,1100,0.10185185185185185,0.858704137392662,2
short,2008/12/22,700,100,747,2008/12/22,747,-4700,-1.0,-6.714285714285714,1
short,2008/12/24,737,100,784,2009/01/09,728,900,0.19148936170212766,1.2211668928086838,10
long,2009/01/21,616,100,580,2009/02/02,585,-3100,-0.8611111111111112,-5.032467532467533,9
short,2009/03/16,474,100,497,2009/03/17,497,-2300,-1.0,-4.852320675105485,2
short,2009/03/18,519,100,543,2009/03/23,543,-2400,-1.0,-4.624277456647398,3
short,2009/03/24,557,100,582,2009/04/01,505,5200,2.08,9.33572710951526,7
long,2009/07/09,731,100,695,2009/07/13,692,-3900,-1.0833333333333333,-5.33515731874145,3
short,2009/07/28,820,100,851,2009/08/06,783,3700,1.1935483870967742,4.512195121951219,8
short,2009/10/21,671,100,708,2009/10/28,644,2700,0.7297297297297297,4.023845007451564,6
short,2009/12/04,691,100,714,2009/12/07,714,-2300,-1.0,-3.3285094066570187,2
long,2010/02/01,684,100,661,2010/02/03,709,2500,1.0869565217391304,3.654970760233918,3
long,2010/02/04,683,100,659,2010/02/04,659,-2400,-1.0,-3.513909224011713,1
long,2010/09/02,475,100,461,2010/09/07,479,400,0.2857142857142857,0.8421052631578947,4
short,2010/10/15,450,100,467,2010/10/18,422,2800,1.6470588235294117,6.222222222222222,2
short,2011/10/18,294,100,306,2011/10/20,285,900,0.75,3.061224489795918,3
short,2011/12/06,260,100,273,2011/12/16,253,700,0.5384615384615384,2.6923076923076925,9
long,2012/04/05,352,100,339,2012/04/11,339,-1300,-1.0,-3.6931818181818183,5
short,2012/06/19,277,100,288,2012/06/21,288,-1100,-1.0,-3.9711191335740073,3
long,2012/07/17,266,100,257,2012/07/23,255,-1100,-1.2222222222222223,-4.135338345864661,5
long,2012/09/06,261,100,252,2012/09/07,277,1600,1.7777777777777777,6.130268199233716,2
long,2012/10/16,270,100,260,2012/10/17,282,1200,1.2,4.444444444444445,2
long,2013/05/31,819,100,773,2013/05/31,773,-4600,-1.0,-5.616605616605617,1
long,2013/06/03,750,100,703,2013/06/04,703,-4700,-1.0,-6.266666666666667,2
long,2013/06/05,769,100,716,2013/06/05,716,-5300,-1.0,-6.8920676202860855,1
long,2013/06/11,762,100,708,2013/06/20,742,-2000,-0.37037037037037035,-2.6246719160104988,8
short,2013/07/05,785,100,817,2013/07/08,820,-3500,-1.09375,-4.45859872611465,2
short,2013/07/09,808,100,838,2013/07/26,801,700,0.23333333333333334,0.8663366336633664,13
long,2013/07/30,740,100,717,2013/08/05,784,4400,1.9130434782608696,5.9459459459459465,5
long,2013/08/08,746,100,723,2013/08/12,723,-2300,-1.0,-3.0831099195710454,3
short,2013/09/13,758,100,778,2013/09/18,778,-2000,-1.0,-2.638522427440633,3
long,2013/10/08,710,100,691,2013/10/11,762,5200,2.736842105263158,7.323943661971831,4
short,2014/05/23,650,100,668,2014/05/26,668,-1800,-1.0,-2.769230769230769,2
long,2014/10/02,634,100,621,2014/10/07,622,-1200,-0.9230769230769231,-1.8927444794952681,4
short,2014/11/04,750,100,766,2014/11/27,714,3600,2.25,4.8,17
short,2015/02/17,676,100,691,2015/02/18,691,-1500,-1.0,-2.2189349112426036,2

さらにまとめのようなファイル_statscsvと_stats_for_each_stock.csvも作成される。全取引の結果とそれぞれの銘柄の取引の結果か。

"_stats.csv"

総損益,勝ち数,負け数,分け数,勝率,平均損益,PF,総R倍数,平均R倍数,総損益率,平均損益率,平均期間
942170400.0,64598,70414,2067,0.4712465074883826,6873.19283041166,1.221749837707064,10910.583575992398,0.07959339925147103,47779.89816438704,0.3485573878156905,4.139364891777734


"_stats_for_each_stock.csv"

コード,総損益,勝ち数,負け数,分け数,勝率,平均損益,PF,総R倍数,平均R倍数,総損益率,平均損益率,平均期間
641,900,2,2,0,0.5,225.0,1.6428571428571428,1.7857142857142856,0.4464285714285714,3.318503747846525,0.8296259369616312,2.5
1001,-112700,4,6,0,0.4,-11270.0,0.48040571692023976,-3.058369321253692,-0.3058369321253692,-7.637992947887919,-0.7637992947887919,3.3
1002,4000,3,3,0,0.5,666.6666666666666,1.3846153846153846,1.4213941314230611,0.23689902190384352,4.18282578274235,0.6971376304570583,3.1666666666666665
1301,8200.0,9,5,0,0.6428571428571429,585.7142857142857,2.74468085106383,9.066806722689076,0.6476290516206483,34.86498987808188,2.4903564198629913,3.9285714285714284
1305,5200,3,3,0,0.5,866.6666666666666,1.52,1.7162747162747163,0.28604578604578607,5.4942369821917545,0.9157061636986258,3.3333333333333335
1306,3500,3,3,0,0.5,583.3333333333334,1.2991452991452992,1.2553061284969178,0.20921768808281963,4.110838660527872,0.6851397767546453,4.333333333333333
1308,9300,4,2,0,0.6666666666666666,1550.0,2.1772151898734178,3.3225490196078433,0.5537581699346406,9.438062935948395,1.5730104893247325,4.5
1309,1038000,10,7,1,0.5555555555555556,57666.666666666664,2.5492537313432835,9.24437917542577,0.5135766208569872,36.4675963188846,2.025977573271367,4.333333333333333
1310,17100,7,3,0,0.7,1710.0,4.053571428571429,8.702810347547189,0.8702810347547189,22.852670747864895,2.2852670747864896,3.6
1311,7000,5,3,0,0.625,875.0,2.4,3.8293491881878614,0.4786686485234827,6.32970433100028,0.791213041375035,3.375
1312,-16000,3,4,0,0.42857142857142855,-2285.714285714286,0.8933333333333333,0.7277826465062871,0.10396894950089816,0.7333184041556025,0.10475977202222893,4.0
1313,-41200,10,15,0,0.4,-1648.0,0.5447513812154696,-8.928404176253718,-0.3571361670501487,-29.998989083879202,-1.199959563355168,3.64
1314,-18100,3,7,0,0.3,-1810.0,0.31954887218045114,-5.662408424908425,-0.5662408424908425,-15.20820345215637,-1.520820345215637,3.5
1316,-8500,1,7,0,0.125,-1062.5,0.16666666666666666,-4.369165302782324,-0.5461456628477905,-11.809797358516334,-1.4762246698145418,3.25
1317,-15900,4,8,0,0.3333333333333333,-1325.0,0.5152439024390244,-1.8136186541750687,-0.1511348878479224,-11.377717636534255,-0.9481431363778546,4.333333333333333
1318,-12400,2,5,0,0.2857142857142857,-1771.4285714285713,0.31868131868131866,-1.9203296703296704,-0.27433281004709575,-9.402738876322628,-1.3432484109032325,4.857142857142857
1319,200.0,6,8,0,0.42857142857142855,14.285714285714286,1.0363636363636364,2.4189560439560434,0.1727825745682888,1.63513675260198,0.11679548232871285,3.5
1320,0,5,5,0,0.5,0.0,1.0,-0.5001055329413537,-0.050010553294135375,1.8164753436824732,0.18164753436824732,3.4
...

これはすごい...

この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバックURL
https://fanblogs.jp/tb/3630366
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック
ファン
検索
<< 2016年09月 >>
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  
最新記事
写真ギャラリー
最新コメント
タグクラウド
カテゴリアーカイブ
月別アーカイブ
プロフィール
日別アーカイブ
×

この広告は30日以上新しい記事の更新がないブログに表示されております。