コラム わたしとPython by yamamoto

Python講座。リンクスリサーチでいよいよ開催します。

わたしが本格的にプログラミングを覚えたのはMATLABが最初でした。そのころ、コロンビア大学院のEE (Electric Engineering)で回路計算や制御システムのフィードバック系での計算に使っておりました。ですが、音声認識や画像認識でDSP(digital signal processing)の授業をとったとき、これは本当に大変で、毎晩、徹夜でプログラミングを仕上げたものでした。しかし、MATLABは有料でした。Student Versionは安価でしたが、それではDSPの処理ができない。高いお金を払う必要がありました。しかし、MATLAB以外に選択肢はありませんでした。

おかげさまでそこそこのGPAでコロンビア大学を無事に修了。次に、プログラミングが必要になったのは、中央大学の数学科の修士論文です。

「複素多項式の特異点とそのリンクのトポロジー」

13N1100009E

その描画のほとんどをPythonで作成しました。Pythonは無料です。処理スピードも速い。Rよりも速い。Aizu Onlineというところでprogramingの問題を解くなどしつつ、複素数も容易に扱えることにびっくり。これが無料かと。複雑な幾何学にも対応。わたしは特異点のリンクの変化の把握のために、わかりやすく習得が容易なpythonを選んだのです。MATLABよりも安易です。プログラミングはとても簡単になったのです。

修士論文の描画の例
修士論文の描画

これらは、複素多項式の零点集合を三次元球面で切ったときの切り口をしめしているのですが、手では計算できません。Pythonがなければわたしは数学の修士をとることができませんでした。もちろん、幾何では計算よりも証明がメインでしたら、計算しつつ、あたりをつけて、証明を考えることで新しい証明の仕方を見出すことができたのです。

アナリスト レポートで使うPython

扶桑化学のわたしのレポートには多くのpythonプログラムが動いています。以下の通りです。以下、株価のリスク横軸とリターン。年度ごとのもの。時系列の系列。リスクとリターンの関係の整理では、多くの時系列データを用います。以下のグラフは横軸がリスクで縦軸がリターン。個別株の数字ですが、綺麗なリスクリターンの関係が見えます。

上のグラフたちは時系列データ。わたしは会社に愛着を持ったので、ハートマークを用いました。これが別に、ミッキーマウスでグラフを書いたっていい。自由なカスタムメイドのグラフが得られるのがpythonの魅力です。

portfolioのリスク計算

たとえ100銘柄であっても、リスク計算はpythonではすぐにできます。

上の図。1銘柄から計算して、5銘柄まで増やすことで分散効果は格段に効きます。リスク横軸。リターン縦軸。なぜならば、高成長株同士は共分散が低いからなのです。ただし、あまり銘柄数を増やしてももうリスクは下がっていかないという事を上のグラフは示しています。

リスク横軸で上のグラフはピンクが個別株。25銘柄あります。

わたしのポートフォリオです。これをウエイトを考量して計算したのが、青い円。リスクは20%以下にしています。リターンが縦軸。リターンを犠牲にしないでリスクだけを低減しているのです。

長期の時系列データ

時系列データでは、Fredという連銀のサイトから70年分のデータが無料で加工できますし、そのcorelation, autocorelationなどが計算できます。

上は日経平均の70年分のデータをグラフにしたものです。

これもpythonで作成しました。(パンローリング「Python3で始めるシステムトレード」参照)。中大の森谷さんが執筆した本ですが、fredから直接呼びこめ、50万件の統計情報が得られます。

特許分析などにもよくつかっています。

上はある企業の特許のIPCによる分類です。特許の分野を一覧するのには便利なツールになります。これは特許庁のページを解析したものです。

Pythonの力は、これだけじゃないです。

みなさんと一緒にいろいろなアプリケーションを作っていきたいと思っています。

アプリを開発していく過程で面白い結果を出していきたいですね。

たとえば、30年分の利益率の推移をpythonで分析することもできます。

「平均へ回帰」しない高収益企業

たとえば、過去30年間で、30年前に利益率の低いものと高いものを特定。それらがその後の30年間で営業利益率がどのように推移したかをカウントしたものが上のグラフです。高い利益率のグループは30年後も高い。低いものは低い。平均への回帰はなかなか起こらないという結果になり、わたしたちは三段階のDDMを採用し、ファーストステージをできるだけ長くとれる銘柄を調査することにしたのです。その結果、勝率8割を記録することができました。

価格COMなどのデータを整理

スクレイピングといって、Webのデータをとってきて、データ処理をすることがpythonではたやすくできます。たとえば、価格comのページから、どの製品が売れ筋でラングが上がったか下がったか、価格が下がったもの、上がったもの、などの整理が容易にできます。これもpythonの威力のひとつ。価格が安定しているものに投資をするのがよいのです。

 

山本 潤

商品, お勧め商品

Posted by 山本 潤