クオンツがPythonを使うのはどんな時?
SASやS-Plus、Matlab、Rなどを使っていれば特に必要ないかもしれないですが、どれも使っていなければPythonで全部を補うことができるでしょう。私の場合は持っていたので
- 機械学習
- 計算とグラフを自動出力
- スクレイピング
- 自動メール
などの開発を行いました。
良い点と悪い点
良い点
フリーですし、汎用言語としていろいろなライブラリが用意されています。特に機械学習やディープニューラルネットワーク系のライブラリが充実しています。
AWSやAZUREのクラウド環境でも環境が用意されており、機械学習を行うには最高の言語かもしれません。
悪い点
- フリーソフトなので自習しなくてはならず、学習コストが高い
- 開発環境も Jupyter、VS Code、PyCharmなど複数あり、Jupyter以外の設定が少し面倒
- 配列などの変数がライブラリなどによって微妙に違う、Python、Numpy、Pandasなどのクセを覚えるのが面倒
- バージョンがどんどん進化していき、ライブラリとのバージョンの整合性でトラブルになりやすい
- バージョンの環境を自由に変更する仮想環境構築の知識も必要
- 複雑な作業を自動化するまでになるにはハードルは高い
ということで、覚悟を決めてPythonをじっくり使っていくという姿勢でないと、難しい言語だと思います。
実際に開発したもの
機械学習
金融データはビッグデータほど大量のデータはないので、ディープニューラルネットワークのモデルを当てはめるのは現実的ではありません。
Scikit-learnの モジュールを使った分類問題などが実用的と思い、いろいろ試行錯誤したのですが、実際に活用するまでは行きませんでした。でも学習の課題としてはとても面白いと思います。
計算したグラフの出力
Accessに収録したデータをもとに、ファクターとマーケットデータに関する計算や、トレーダー別の業種別損益情報、ファクターエクスポージャーの計算を行い、それらをグラフ化したものを毎日出力しました。
PNGファイルとしてまとめて出力して、最終的にはEXCELでそれらのグラフを読み込んで整形して資料を作ったりしました。回帰グラフとか、スキャタープロットなどが簡単に綺麗に描画できます。
スクレイピング
WEB上のホームページのリンクからファイルを自動的に保存するのがスクレイピング、Pythonが便利です。
決算時期に、東証の適時開示情報のページを一つ一つたどって、目的の銘柄の情報を見たり、ファイル名を自分で書き込んで保存したりするのは大変です。
- ユニバースとして銘柄コードが記載されたCSVファイルから該当銘柄だけをセレクト
- 保存する名前を開示情報のタイトルや開示日付・時間から自動作成して保存
- 決まった時間にまとめてダウンロード(ただしサーバーに負荷がかからないような工夫)
するというプログラムを作成しました。まとめてファイルとして保存すると、決算チェックの時間が大幅短縮されると同時に、PDF内のテキスト検索もまとめて行えます。
他にもアカウントとパスワードを入力するサイトからもダウンロード可能です。
メールの自動作成と送出
ファイルを落としていたのが社内ネットワークと違うスタンドアロンネットPCだったので、決まった時間にそれらのファイルをZIPファイルにまとめてメール送信していました。
ここでもPYTHONで、ZIP化とファイルを添付して、メールで送信するというプログラムを書きました。
最初わからず、時間がかかったこと
- 漢字の文字化けをなおすこと
- データベースとの接続の問題
- グラフのタイトルの文字の大きさを調整すること
- Numpyのバージョンがあってなくてエラーがでたりしたこと
小さなことですが、時間がかかることが多く、昔 Unix Workstationで苦労したことと、どことなく似てます。
まとめと参考文献
やる気があれば、Pythonを使えば何でもできます。自分にとっては、持っているソフトでやるより、Pythonでやるほうが簡単そうな方法だけを選んでいったら部分的な利用になりました。
それぞれのインフラに応じて、本気で使ってもいいし、少しつまむ程度で良いと思います。
最後に私が学習した文献を紹介しておきます
- Python データサイエンエンスハンドブック
- Pythonによるデータ分析入門
- Pythonではじめる機械学習
- PYthon クローリング&スクレイピング
です。