エクセルの互換性を考える(3) [システムトレード]
今回は、トレーディングシステムにとってはちょっと深刻なお話です。
先日、エクセル97から2003までを網羅した解説書を入手いたしました。一冊目は、VBAマクロに関するもので、二冊目はワークシート関数に関するものです。
VBAに関しては、いくつかのプロパティやメソッドで、互換性が保たれていませんが、注意してマクロを作成すれば、特に問題となることはなさそうです。
どちらかと言えばマクロ関数の方が気になったのですが、残念ながら本書では詳しい解説はありませんでした。
むしろ深刻なのは、ワークシート関数の方です。こちらは、ほとんどの関数がエクセル97から2003で使用できるのですが、トレーディングシステムで多用する統計関数に、大きな問題があることが分かりました。
それは、STDEVやSLOPE、INTERCEPT、STEYXといった関数が、エクセル2002以前のバージョンにおいて、不具合を有しているというものです。
計算値が非常に大きな値になると、不正な値を返す場合があるということです。
全体の集計値として、これらの関数を使用する分においては、そんなに大きな値になることはないと思われますが、各行の計算においてこれらの統計関数を用いているような場合、思いもよらないエラーが生じる可能性があります。
事実、以前にエクセル97でKFシステムクリエイターを使用したところ、ある日付以降で#DIV/0!エラーが生じる場合がありました。
もちろん、エクセル2003では問題ありません。
その時は、エクセル97の不具合だと思っていたのですが、それがエクセル2002でも起こり得るというのは、正直言って驚きです。
そこまで、この問題は放置されてきたということでしょうか。
しかも、どのような条件で不具合が発生するかが明確になっておらず、漠然と、「大きな値」とされていることが、対処の難しさをうかがわせます。
エクセル2002と言えば、恐らくはまだ現役バリバリのバージョンです。エクセル2003で動作確認を行なっても、エクセル2002以前では不具合が生じる可能性があるわけです。
エクセルでトレーディングシステムを組まれる方は、その辺の事情を十分に考慮する必要があるかと思います。
できることなら、エクセル2003以降にバージョンアップした方がいいかも知れません。
ちなみに、KFシステムクリエイターではこの問題は発生しません。何故ならば、行中で用いる不具合がある統計関数の全てを、漸化式化して算術計算に置き換えているからです。
そのため、エクセル97からエクセル2007まで、同一の条件であれば同一の結果を返すようになっています。
先日、エクセル97から2003までを網羅した解説書を入手いたしました。一冊目は、VBAマクロに関するもので、二冊目はワークシート関数に関するものです。
Excel VBAスーパー辞典―97/2000/2002/2003対応
- 作者: ITP
- 出版社/メーカー: ソーテック社
- 発売日: 2004/07
- メディア: 単行本
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まで、同一の条件であれば同一の結果を返すようになっています。
コメント 0