はじめに
2024年に何をしたいか目標を立てていなかったので振り返りも何もできませんでした。なので今年は目標をたててみようと思って記事を書いています。
XBRL関連
XBRLについては今年は以下の2点を頑張ろうかと思っています。
- EDINETのXBRLから欲しいデータを収集する
- EDINETのXBRLをダウンロードするプログラムを修正する(出来れば)
EDINETのXBRLからのデータ収集は2022年に1度やっていましたが、途中で頓挫しました。途中までは頑張ったのですが方法を見直した方が良いと判断し、作業を中断していました。原因は沢山あるのですが
- XBRLの構造を表示リンクから取得していた
- pandasを使っていなかった
- loggingを使っていなかった
あたりが主な理由でしょうか。XBRLの構造誤りを修正したり、独自のデータ整理クラスやロギングクラスを実装しなければならなかったのは大変でした。特にXBRLの構造誤りの訂正は膨大な作業となっており、遅々として進みませんでした。5年分で15000くらいのxbrlを処理する必要があるのですが、そのうち3000か所くらい*1の構造誤りがあり(表示リンクから取得しているので厳密には構造誤りだとは言い難いですが)、これを手作業で修正するのは無理だと判断しました。
今回はXBRLの構造取得に計算リンクを使用するのと、pandasやlogginなどのライブラリを使うことにしているのでもう少し楽になるのではないかと思っています。あと、全上場企業のデータを取得するのではなく、取得したい一部の企業だけに絞って処理することにします。機械学習に使うデータ収集のために使おうかなと。
それに関連して最近上場企業のデータをネットから収集をしたのですが、その中でIRバンクという先駆者を知りました。IRバンクはEDINETのXBRLからデータを収集してネットで公開しており、非常に充実したサイトです。なので自分がEDINETのXBRLを独自に分析するメリットは薄いのですが、支払利息とか有価証券の保有額などのメインターゲットから外れたデータについてはIRバンクから収集できないので、そこに独自実装の動機を求めていこうかと思っています。
加えてEDINETのXBRLの収集も継続していこうと思っています。EDINETは過去10年分のXBRLを公開していますが、10年を超えたXBRLは非公開になります。非公開になったXBRLを後から入手する手段は基本的にないため、データの蓄積は重要です。既に2013年~2023年までのXBRLは収集済みなので2023年以降のものを収集することになります。プログラムは2年前に作ったのですが、ごみクズみたいなコードなので出来たら修正したいなと思っています。期限には余裕があり、大体2030年くらいまでにXBRLの追加収集プログラムを走らせれば大丈夫なので、これについてはのんびりやっていこうと思っています。
それより早めにやりたいことはデータのバックアップ体制を構築することでしょうか。一応複数のHDDにバックアップは取っているのですが個別のXBRLのデータ破損については無防備なのでwinrarなどを使ってリカバリーレコードを付与するなど対策したいところです。同じようなことをやっている仲間がいれば破損したXBRLをピンポイントで提供しあうみたいな体制を作りたいなぁなんて思っています。
機械学習関連
機械学習については今年は以下の2点に取り組む予定です。
- 非公開化企業の予測
- 競馬のレースについて単勝と複勝を予想する
非公開化企業の予測は株仲間とやっている案件で自分は主にデータ収集を担当しています。ただ、やるからには機械学習にもチャレンジしたいなと思っているところです。
- 非公開化企業と比較対象企業の各種データを収集
- 説明変数の候補について、非公開化した企業とそうではない企業で有意差があるのかを検定
- 有意差ありそうな説明変数を使って学習モデルを作成
みたいな流れになるのかなと思っているんですが(3は実際には説明変数の選別はしないかも)、機械学習については本当に知識がなくてヤバいです。正直何から始めていいのかわからないです。
なので競馬のレース結果の予想をやってみようかと思っています。競馬の結果ってわかりやすいから機械学習初心者には良い教材になるのではないかという思惑からです。現時点でnetkeibaの2008年~2023年までのレースデータを取得済みなので、これを元に説明変数を作って、単勝と複勝を予想してみようかと思っています。とりあえず、決定木を使ってみるつもりです。
おわりに
ブログについては上記で書いた内容について知見がたまったら記事にしていこうかと思っています。また、コーア商事とエスプールを購入しているにもかかわらずブログでなにも言及していないので記事にする予定でいます。仕事の合間を見つけて少しづつ取り組んでいきますので、今年もよろしくお願いいたします。みなさんのお役に立てる記事を書けることを目指していきたいと思っています。
今回はここまでです。
*1:1ファイル当たり5構造のデータが取得できるので75000構造のデータのうち5%の誤りがあると大体3000~4000か所の構造誤りがある計算になる