SSブログ

エクセルの互換性を考える(3) [システムトレード]

今回は、トレーディングシステムにとってはちょっと深刻なお話です。

先日、エクセル97から2003までを網羅した解説書を入手いたしました。一冊目は、VBAマクロに関するもので、二冊目はワークシート関数に関するものです。

Excel VBAスーパー辞典―97/2000/2002/2003対応

Excel VBAスーパー辞典―97/2000/2002/2003対応

  • 作者: ITP
  • 出版社/メーカー: ソーテック社
  • 発売日: 2004/07
  • メディア: 単行本



Excelの極意リファレンス関数大全―Excel 97/2000/2002/2003対応 (Excelの極意 リファレンス)

Excelの極意リファレンス関数大全―Excel 97/2000/2002/2003対応 (Excelの極意 リファレンス)

  • 作者: 早坂 清志
  • 出版社/メーカー: 毎日コミュニケーションズ
  • 発売日: 2006/02
  • メディア: 単行本


VBAに関しては、いくつかのプロパティやメソッドで、互換性が保たれていませんが、注意してマクロを作成すれば、特に問題となることはなさそうです。
どちらかと言えばマクロ関数の方が気になったのですが、残念ながら本書では詳しい解説はありませんでした。

むしろ深刻なのは、ワークシート関数の方です。こちらは、ほとんどの関数がエクセル97から2003で使用できるのですが、トレーディングシステムで多用する統計関数に、大きな問題があることが分かりました。

それは、STDEVやSLOPE、INTERCEPT、STEYXといった関数が、エクセル2002以前のバージョンにおいて、不具合を有しているというものです。
計算値が非常に大きな値になると、不正な値を返す場合があるということです。

全体の集計値として、これらの関数を使用する分においては、そんなに大きな値になることはないと思われますが、各行の計算においてこれらの統計関数を用いているような場合、思いもよらないエラーが生じる可能性があります。

事実、以前にエクセル97でKFシステムクリエイターを使用したところ、ある日付以降で#DIV/0!エラーが生じる場合がありました。
もちろん、エクセル2003では問題ありません。

その時は、エクセル97の不具合だと思っていたのですが、それがエクセル2002でも起こり得るというのは、正直言って驚きです。
そこまで、この問題は放置されてきたということでしょうか。

しかも、どのような条件で不具合が発生するかが明確になっておらず、漠然と、「大きな値」とされていることが、対処の難しさをうかがわせます。
エクセル2002と言えば、恐らくはまだ現役バリバリのバージョンです。エクセル2003で動作確認を行なっても、エクセル2002以前では不具合が生じる可能性があるわけです。

エクセルでトレーディングシステムを組まれる方は、その辺の事情を十分に考慮する必要があるかと思います。
できることなら、エクセル2003以降にバージョンアップした方がいいかも知れません。

ちなみに、KFシステムクリエイターではこの問題は発生しません。何故ならば、行中で用いる不具合がある統計関数の全てを、漸化式化して算術計算に置き換えているからです。
そのため、エクセル97からエクセル2007まで、同一の条件であれば同一の結果を返すようになっています。

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

nice! 0

コメント 0

コメントを書く

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

Facebook コメント

トラックバック 0

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