専業システムトレーダーが学習するPython_基礎学習環境
さて、今回はPythonの初期学習環境を紹介していきます。
プログラミング言語習得に限ったことではありませんが、目標を持つことが学習を効率化させるコツですので、方向性が見えていない方は前回のエントリーを参考にしてみてください。
また、私は学生時代に文学を専攻していたガチ門外漢ですので、「プログラミング専門外のトレーダーがPythonを学ぶ」という目線での記事になります。
この身近になったPython言語の紹介記事が、各自のトレーディングのパワーアップに一助となれれば幸いです。
1、Anacondaパッケージ
Python言語は単体でインストールするのではなく、科学技術計算用のライブラリが入った「Anaconda」というパッケージでインストールしておきましょう。
システムトレーディングに必要なものが一通りセットになっているので、非常に便利です(用途に応じて他のライブラリも必要にりますが)。
以降紹介していく書籍のほとんどが、Anaconda環境を前提にしています。
2、エディタ・統合開発環境
Pythonの開発環境は様々ありますが、情報量が多くデータサイエンスにも問題なく取り組むことのできる開発環境を以下に挙げてみます。
・Spyder
・VisualStudio(Python Tools for Visual Studio)
・ATOM
・PyCharm
・Jupyter
まずはデータサイエンティストご用達のSpyder。
Anacondaのパッケージに標準で入っていますので、余計なインストールの必要がありません。
十分なデバッグ機能と、変数やイテレータの中身を確認できるVariable explorerという機能を持つのがSpyderの売りです。
日本語化もされています。
次に、おなじみMicrosoftのVS。
VS2015はもとより、VS2017もつい先日Pythonに対応しました。
こちらもデバッグ機能が充実しており、シストレ開発には十分すぎる環境です。
Python以外の言語にも対応していますので、SpyderではなくVSを選ぶ理由はその辺かなと感じます。
もちろん日本語化されています。
次にGitHub製のATOM。
先に紹介した2つに比べると、超絶シンプルなインターフェースをしています。
その初期状態のATOMに様々な拡張機能(パッケージ)を組み込んで自分なりの開発環境を作成することができるIDE。
私はこのATOMを使っているのですが、デバッグ機能が前述のエディタに劣るので、少し複雑な数値計算のプログラムを作成する際にSpyderに浮気したくなります^^;
Python以外の言語にも対応し、日本語化するパッケージもあります。
次にPython最強の統合開発環境Pycharm。
機能特盛りで、少しでもおかしな構文を書けば思春期時の母親並みに口うるさく突っ込みをいれてくれます。
いまのところ日本語化はされておらず、機能を使いこなすまでには時間がかかりそう。
私はPycharmに疲れてATOMに乗り換えましたが、興味のある方は一度お試しあれ。
そして最後にJupyter(IPython)。
ブラウザ上で対話的に開発を進めることができ、データサイエンスによく使われる環境です。
前述した開発環境とは仕様が根本的に異なるので、書籍やWEB情報から使い方を学ぶ必要があります。
以下の書籍はJupyterを用いて解説していますので、Jupyter環境を選択する際には参考にしてみてください。
・IPythonデータサイエンスクックブック
・Pythonによるデータ分析入門
3、とりあえず言語に触れてみる1冊目のPython本
1~2時間で読めて、Pythonの仕様をざっくりつかめる書籍を「1冊目の本」として選びました。
プログラミング言語を初めて学習する層をターゲットにした2冊になります。
・独習 Python入門 1日でプログラミングに強くなる
・Pythonスタートブック いちばんやさしいパイソンの本
個人的には先に挙げた「独習 Python入門」がおすすめ。
コンパクトにまとまっているため早く読むことができ、WEBアプリやスクレイピングにも触れている実用を見越した構成が良い感じです。
一方「Pythonスタートブック」は王道のPython入門書。
基本・初歩的な文法をしっかりまとめてある安心設計です。
初歩に少し時間を掛けたい方はこちらを。
4、情熱をぶつける2冊目の入門書
1~2か月腰を据えて向き合う入門書を取り上げてみます。
すでに他言語を扱える方は、こちらを一冊目に選んで良いかもしれません。
・みんなのPython
・実践力を身につけるPythonの教科書
・入門 Python 3
まずは定番の「みんなのPython」、通称「みんぱい」。
私はシステムトレーダーの先輩にこれを勧めていただいて、2か月ほど使い倒しました。
この「1~2か月使い倒してお別れする」ことに丁度良い、絶妙な内容量・構成に調整されています。
書籍の内容のほか、著者のブログも非常に参考になる内容で、二冊目にお付き合いするには安定の一冊。
次に「実践力を身につけるPythonの教科書」。
例文が多く、視覚的にも見やすい、バランスの良い内容構成の良書です。
オブジェクト指向の解説に多めのページ数を割いてくれているので、プログラム設計の部分もしっかり学習したい方には参考になる一冊だと思います。
最後にオライリー快心のPython入門書、「入門 Python3」。
「入門」と銘打ってはいますが、並行処理やスクレイピングライブラリにまで触れていて、内容が非常に濃く、丁寧です。
同じ入門書ですが、こちらはおそらく「みんなのPython」のように「さくっと使い倒してお別れ」的な使い方にはならなそうです(少なくともこちらのオライリー本の方が読みこなすのに時間がかかる)。
わたしは暇があれば、未だにこの本を読み返して知らないネタを探していたりと、長くお付き合いできる一冊。
内容はもちろん、このコンパクトで美しい製本・装丁が、Python学習者を魅了している気がする。
5、基礎学習に係るその他のPython本
Pythonの基礎学習は前述した書籍を使うのことをお勧めしますが、その他にも標準ライブラリ周辺を扱う際に参考になる書籍を紹介しておきます。
・Python文法詳解
・退屈なことはPythonにやらせよう
・Effective Python
・ハイパフォーマンスPython
はじめに、日本人が書いたオライリー本、「Python文法詳解」。
タイトルの通り、基礎文法事項が一通りまとめてある良書。
Pythonの基本的な文法や仕様を確認する際に、非常に参考になる一冊です。
次に、最近翻訳された「退屈なことはPythonにやらせよう」。
ボリュームのあるこの本の約半分はPythonの基礎文法について書いてあるため、残りの半分の内容は実用的なものに焦点を当ててあります。
文法事項のおさらいも含め、全般的に参考になる項目が多い。
スクレイピングについても分かりやすい解説で記載されていますので、初学者には有用な一冊になるかと思います。
そして、Pythonのポテンシャルを引き出すための二冊、「Effective Python」と「ハイパフォーマンスPython」。
システムトレーダーがこの二冊から学ぶべきものは多くありますが、とりわけ重要な項目は「並行処理」に関する部分。
皆さんのPCは、おそらくマルチコアCPUを搭載しているかと思いますが、並行処理はそのCPUの能力を最大活用するための技術です。
ExcelVBAと同じようにPythonのスクリプトを書いても、本来の数分の一程度のパフォーマンスしか出せません(それでもVBAよりずっと早い)。
しかし、プログラムに5~10行程度の並行処理の構文を組み込むことで、数倍の処理速度を出すことができます(私の4コアCPUで3~4倍程度)。
変数の組み合わせを総当たり的に探索するような本格的なバックテストをする際には、この並行処理が必須になりますので、Pythonの基礎の仕上げとしてこの2冊を参照しながら学習されることをお勧めします。
一方で、「Pythonでスクレイピングだけやりたい」という方は並行処理を取り入れる必要はありません。
スクレイピングプログラムはWEBサイトへの過剰な高頻度アクセスをsleep関数等を用いることで避けるのが基本です。
異なるIPアドレスを持った複数のサーバーから……というレベルの方はこの記事を読んでいないでしょう…。
さて、思ったより長い記事になってしまったので、今回は以上のとおりPythonの基礎部分までにしておきます。
次回はより実践的な内容として、
・スクレイピング
・バックテスト
・データベース
・オブジェクト指向
の項目に関してこんな感じの記事にしてみますので、興味のある方は参考にしてみてください。
とても分かりやすく、アドバイスにしたがってがんばってみます。ありがとうございます。
匿名様
コメントありがとうございます。
執筆から少し時間が経ち、当時と状況も変わりつつありますが、現在でも記事の内容は活かせるように思います。
一点追加したい内容として、使用するエディタに「VSCode」を加える必要がありました。
microsoft製の軽量・万能なエディタです。
Pythonの勉強会に出席してみたら、ほぼ全員がVSCodeを使用していたということもありましたw
2次情報も多いですので、ぜひ一度触ってみてください^^