シストレのストラテジーについて検討すると、取引頻度なんかを計算したくなりますよね。そうするとバックテスト期間中の日数を知る必要がありますが、株取引なので東証の営業日を数える必要があるわけです。この前その辺りで工夫が必要になったので、解決策を書いておこうと思います
基本はWebサービスで
インターネットというのは便利なもので、ちょっと検索すれば指定した期間から休日を除いた日数を計算してくれるサイトがすぐ出てきます
休日の種類で「銀行系」を選ぶと、土日祝日と12/31〜1/3を休日として計算するので、東証の営業日を計算する場合はこれです
非常に便利なサイトですがちょっと難点があって、2007年以後しか計算できません。なので2006年以前を含む期間の場合は他で計算する必要があります
困ったらエクセルで計算
というわけで、今度は表計算ソフトの力に頼りましょう。Excelには期間を入力するとその間の平日の数を返すNETWORKDAYS関数があります
使い方は↑を見てもらうとして、ここで問題があります。NETWORKDAYS関数は土日以外の休日を入力してやる必要がありますが、今の日本では振替休日やハッピーマンデーにより毎年休日の日付が違うのです。それに新しい休日が増えたり、代替わりで去年は天皇誕生日がなかったりもしましたよね
休日データのネタ元
そこで自分はこのサイトから祝日データを持ってきました
下の方にその年の祝日の一覧があるので、そこからコピペするだけです*1。年末年始の12/31, 1/2, 1/3を付け足すのをお忘れなく! 年ごとに分けて計算する必要がありますが、表計算にかかれば大した労力にはなりません
余談
これを応用すれば海外市場の営業日も計算できそうですね
ちなみに日数を計算するのに表計算でひと手間かける必要に迫られた時の記事がこちらになります