SSブログ

エクセル2007導入(その3) [システムトレード]

エクセル2007を導入して、実質4日が過ぎました。その間、様々な検討を行ってきましたが、エクセル2003との互換性や、実行速度について、だいたい分かってきました。
今日は、これまで確認してきた内容について、主に処理速度面から述べたいと思います。

KFシステムクリエイターにおける最大の律速過程(もっとも処理に時間が掛かる箇所)は、最適化演算(データテーブル演算)です。
これは、おそらく一般的なトレーディングシステムにおいても、同様なのではないかと考えます。

最適化演算は再計算処理の塊であり、逆に言えば、この計算時間を計ることで、トレーディングシステムの処理速度を評価できます。
これは、いわゆるベンチマークテストと同等であると言えます。

今回、これまでの様々なシステムの最適化演算に掛かる時間を、エクセル2003とエクセル2007の場合での比較と合わせて行いました。
ちなみに、評価環境は次のようになっています。なお、評価中はエクセルと常駐ソフト以外は起動していません。

  CPU:Intel(R) CORE2 DUO E6550 @ 2.33GHz
  RAM:2GB
  OS:Windows Xp SP3
  Excel:2003 SP3 & 2007 SP1

評価に用いたトレーディングシステムは、アルプス電気の逆張り1システムで、テスト期間は1993年11月1日~2008年6月4日としました。データテーブルは30行×24列(720セル)です。
なお、他のシステムでも評価しましたが、結果(の傾向)に大差ありませんでした。

まず、従来システムの最適化演算時間ですが、エクセル2003で11分23秒でした。また、5月30日に公開した改定システムの最適化演算時間は、エクセル2003で7分25秒です。
これらをベースに、更なる改定やエクセルのバージョンの違いによって、演算時間がどのように変わるか確認しました。

続いて、名前付きセル範囲を用いた動的グラフ表示とした改定システムの最適化演算時間は、エクセル2003で7分12秒でした。
元のシステムに対して、若干ではありますが高速化が図れています。以下、このシステムを基準に、エクセル2003と2007との比較を行います。

このシステムをエクセル2007で開いた後、そのままエクセル2007形式で保存して、それをエクセル2003で開き、最適化演算時間を計測したところ、6分36秒となりました。
なんと、元のシステムよりも30秒以上速くなっています。

ちなみに、エクセル2003には互換機能パックを適用し、エクセル2007形式のブックを直接開けるようにしています。
なお、エクセル2007形式に変換したブックを、再びエクセル2003形式に変換しても、ほぼ同じ結果が得られます。

この結果にはちょっと驚きましたが、高速化を追求する場合、エクセル2003形式のシステムを一旦エクセル2007形式に変換し、それをエクセル2003形式に再変換するのが有効であることが分かりました。

ただし、エクセル2007形式を2003形式に変換すると、グラフシートの右下に「グラフエリア」と表示されると共に、グラフエリアが破線で囲まれるという問題があります。
これが印刷時に表示されるのかどうかは未確認ですが、まあ、気にしなければ実害はありません。

少しでも高速化を実現したい向きには、この処理速度向上効果は非常に大きいものです。なぜ再変換によって速くなるのかは不明ですが、エクセル2003と2007を両方使用している方は、試してみる価値があるかも知れません。

最後に、エクセル2007における最適化演算時間ですが、エクセル2007形式で7分55秒でした。また、エクセル2003形式のシステムを互換モードで開いて最適化演算を行ったところ、7分52秒というほとんど変わらない結果となりました。

ちなみに、これらはマルチスレッドを有効にした場合ですが、事前検討によって、マルチスレッドを無効にしても、テーブル演算速度はほとんど変わらないことを確認しています。

なお、KFシステムクリエイターは、ブックをエクセル2007形式に変換することで、ほとんどをそのまま使用できますが、一部マクロでは、ブックを生成する際、2003形式の拡張子を用いているため、修正が必要になります。

また、先日のコラムでも述べましたように、エクセル2007では多量のリンク元を変更できないという不具合があり、その処理を内包するマクロは使えません。
現状では、システムセットアップマクロの改定が必要です。

また、システムに銘柄を登録する場合も、データ行を大幅に削除した後、リンク元の変更を行い、その後データ行を元に戻す必要があります。
改定システムでは、あらかじめ最低限のデータ行のみを残した状態で、システムを提供する予定です。

したがって、実際の使用場面では、そのシステムに銘柄登録を行った後、データ行を復元することになります。それについては、改定マクロで対応する予定です。
改定マクロの提供につきましては、今しばらくお待いただきますようお願い申し上げます。

nice!(0)  コメント(8)  トラックバック(0) 
共通テーマ:

nice! 0

コメント 8

nobo

http://blogs.yahoo.co.jp/noboru5_99/55275821.html
Kフローさんお久しぶりです。
数学的知識に長けてるKフローさんに教えてもらいたいことがあるんですが・・。

つまらない質問かと思うんですけど、上記のブログ記事の内容の結果って理論上起こるんでしょうか?
計算ミスなのか、ありえることなのか、簡単なようで感覚的に理解できません(笑)。

by nobo (2008-06-06 19:44) 

Kフロー

noboさん、お久し振りです。

おそらく、「エクセル2007の互換モードでリンク元を参照すると、参照先の文字数が256文字に制限される」という仕様が関係しているのではないかと思うのですが、よくは分かりません。
少なくとも、計測ミスということではありません。たぶん、他ブックへのリンクを大量に張っているがゆえの現象のような気がします。

by Kフロー (2008-06-06 19:53) 

nobo

Kフローさん、すいません、僕ブログのほうの記事です。
また、暇なときでかまわないのでよければアドバイスお願いします。

by nobo (2008-06-06 20:10) 

Kフロー

すみません。思いっきり勘違いしていました(笑)

週明けでよろしければ、検討してみます。

by Kフロー (2008-06-06 21:03) 

nobo

いつでも、Kフローさんの関心が向いたときでかまわないです。
よろしくお願いしますw

by nobo (2008-06-07 13:14) 

Kフロー

noboさん、こんにちは。noboさんのブログにコメントしようとしたのですが、字数制限に引っかかってしまったため、こちらで回答させていただきます。

ドローダウンは、実は通常の統計量ではないんです。標準偏差などといった通常の統計量は、ある期間中の全てのデータを集計し処理していますが、ドローダウンを決定する要素は、直近最大資産とその日付、および直近最小資産とその日付の4つしかありません。

複数のシステムを分散して運用する場合、それぞれの直近最大資産や直近最小資産の日付が異なると、合成ドローダウンはいずれのシステムのドローダウンよりも小さくなる場合が起こり得ます。

例えば、直近最大資産と直近最小資産、それに直近最小資産の日付が等しく、直近最大資産の日付のみが異なる2つのシステムの合成ドローダウンを考えてみます。

システム1の直近最大資産の日付の方が、システム2の同日付よりも過去であったとすると、システム1の資産が直近最大値となった時点で、システム2の資産はまだ最大にはなっていません。
すなわち、合成システムの資産は、システム1の直近最大資産よりも小さいことになります。

一方、システム2が直近最大資産を記録した日には、システム1はすでにドローダウンに突入しています。したがって、合成システムの資産は、システム2の直近最大資産よりも小さいことになります。

すなわち、合成ドローダウンの直近最大資産は、システム1や2の直近最大資産を上回ることができないわけです。
しかし、直近最小資産は全て同じであるわけですから、直近最大資産が小さい合成システムのドローダウンが最も小さいことになります。

実際の場面では、直近最大資産や直近最小資産、およびそれらの日付は、各システムによって異なるでしょうから、現象はもう少し複雑だと思われますが、基本的な考え方は変わらないと思います。

by Kフロー (2008-06-09 09:42) 

nobo

Kフローさん、解説ありがとうございました。


僕のような数学音痴には直感的にこういったことが理解できないですが、解説でなんとか感覚的にも理解できた感じです。

なんかポートフォリオの新しい側面を見たようで、戦略的に面白く思えてきました。

ありがとうございました。

by nobo (2008-06-09 22:19) 

エクセルデータ復元

とても勉強になりました。ありがとう!
by エクセルデータ復元 (2017-03-28 16:30) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。