【Python✖日本株】 はじめに
【お知らせ】
2021.6.20に記事をupして以来、多くの方に読んでいただきました。
今後、プログラムのメンテナンスができなくなる可能性がありますので、本記事(第1章から第5章)を9月20日をもって停止しました。
ご購読ありがというございました。
Python✖日本株 全体目次(リンク)
はじめに
第0章 Python準備編
第1章 データ収集 Part 1 Tweet編
第1章 データ収集 Part 2 株価編
第2章 データ分析
第3章 バックテスト
第4章 フォワードテスト
第5章 取引BOT
はじめに
Python 初学者のみなさん、プログラミングを楽しんでいますか?
いま流行りのプログラミングをはじめてみようと初心者向けのプログラミング本をやって、簡単なプログラムをかけるようになったけど次なにやろう?とか、機械学習やスクレイピングについても一通りやってみたけど自分でプログラミングしてみたいことがないなぁ…など、やりたいことがなくて、止まってないですか。
今も人気がありますが、少し前にPython ✖︎ Excel の本がすごく流行りました。ExcelファイルをPython をつかって処理するというものです。パラパラと読んだことがありますが、そんな作業するならマクロで組んだ方が便利だし、役に立つというものがほとんどだなと感じました。
これらの本が人気なのは、プログラミングとしてPython を学習したけど使いみちがない、という人が仕事で必ず使っているExcelファイルを加工できるというのが魅力的だからかと思います。
プログラミングは何かをするためのツールです。この「何か」がないまま、プログラミングを学習すると、一通りのことができるようになった時点で詰まってしまいます。
そこでその「何か」としてExcleファイルを対象にしたのが、Python ✖︎ Excel だったのです。Excelファイルは仕事に必須でよく使います。それを効率的に処理することで、Python のプログラミング技術を向上できるというのが魅力的なのです。
本当にExcelを効率的に処理するのが目的であればExcelマクロを学ぶほうが有益だと思います。マクロを使いこなしてGAFA部長になった人もいるのですから。
でもこれって、仕事大好きな人ならともかく、趣味でプログラミングで始めた人にとって、その結果が仕事効率化というのはなんだかプログラミングの楽しさが半減していると感じます。
ということで、Python のプログラミング技術を向上させるネタとして、こちらも趣味である投資、日本株を対象としてみようというのがこのnote記事のコンセプトです。
プログラミングと投資の自動売買(BOT)は、ビットコイン(BTC)などの暗号通貨との相性が抜群でお手軽だと思います。ちょびっとの資金で遊びたい人や、本気でbotで稼ぎたい人も暗号通貨がよさそうです。
そのあたりのBTCのbotは、いっぱいいろいろな人が販売してますし、すこし古い情報もありますが無料でもこのブログなど素晴らしい内容です。
それなのになぜ日本株を選んだかというと
■ 個人的に一番最初に始めた投資なので馴染みがある
■ 銘柄の会社が知っている名前なのででとっつきやすし、
その会社の情報入手も比較的簡単
■ 銘柄選択にTwitter検索を使用するので、日本語のTweetが有効そう。
■ 自動売買に適したAPIがある証券会社が少なく、botを動かす人が少なそうなので、なんかちっちゃなアルファがあるかも・・・
との単純な理由からです。
もちろんデメリットもあります。
■ 売買の一単元が100株と大きいので少額での運用ができない
→ 株価が100円動くと、10,000円の損益になる... お試し運用が厳しい
→ 多くの銘柄をBOTで動かすと、かなりの証拠金をいれておく必要がある
■ API環境がよくなく、動かすのに人手がかなりかかる
→ 毎日、決まった時間に動かす必要あり。botといえるのか・・・
投資で儲けたい方はbitcoinで、さらに気合の入った方はFXで、チャレンジして大金をゲットしてみてください。
本note記事はすべてを趣味として楽しむことをコンセプトにしています。
想定してる読者
■ Python の初学者
ここでいう初学者の定義はわたしの別ブログに書いてますので、参考にしてください。
初心者向けのPython教材ではないです。
ある程度Python が動かせる方を対象にしています。
初心者でPythonをはじめる方はこちらをご参考まで。
■ 日本株投資の経験者、または、興味ある人
フォワードテストまでは、損得がありませんので経験者でなくても問題ありませんが、興味ない人は続けられないでしょう。
信用取引をするので、実売買をする人は投資経験者でないと、危険でしょう。
経験者でも初心者でも、ちょっと変わったことが起きたら、かなりの損失がでる可能性がありますが、初心者では何が起こったかわからないうちに大損、ということがありえます。
■ windows 10 の使用者
バックテストまでであれば、macやubuntu でも動きます。私は普段のプログラミングではubuntu18.04 を使っていたのでバックテストまではubuntu でつくりました。
今回、フォワードテスト、実売買はauカブコム証券のkabuステーションAPIを使用しています。kabuステーションがwindows 10でしか動かないので、windows10使用者を対象としてます。
このnoteでやること
このnote記事は構想1日という単純な発想を、6ヶ月かけて形にしたものです。
戦略は次のとおり。
■ twitter で銘柄に関連するtweetを集める。
■ そのtweetを感情分析し、ポジティブかネガティブかを判断してスコア化する
■ 1時間毎に感情スコアを計算し、スコアが増えたときは買い、減った場合は売り
んー、かなり浅い考え方です。でも、bitcoinでも価格とtweet数に相関も検討されていますし、うまくやれば、趣味投資家が少し益がだせる程度のアルファが見つけられるか・・・・? です
noteの章立て
このnoteは章ごとに、それそれ異なる記事で書いています。
第1章は無料ですが、それ以降は有料にしてます。価格は変動する場合があります。
自分が動かしているうちは公開を継続するつもりですが、使用しなくなったときは動作を確認できなくなりますので、公開を取り消すつもりです。
各章のはじめに動かすのに必要なサンプルプログラムをおいています。購入する方はサンプルプログラムが動くのを確認してから購入してください。
サンプルプログラムが動かないと本プログラムは動きません!
私のプログラミング力は初学者レベルです。
第1章をみてもらえば、だいたいの私のプログラミング力はわかると思いますので、プログラミングが拙くて買う気にならないけど、BOTの動きは試してみたいという方は、自力で実装を楽しんでください。
その章でやることはすべて記事のはじめに書いてますので、プログラミング力のある方は簡単に実装できると思います。
プログラムはすべてjupyter notebookの形式(ipynb)で、添付しています。
第0章 準備編(記事価格: フリー)
基本のpython の設定や各章で使用するプログラムやモジュールなど設定を記載してます。
第1章 データ収集
1.1 twitterデータの収集(記事価格:フリー)
【概要】
twtterのAPIを使用して、銘柄をキーワードとしてそのtweetを集めます。
twitterは1週間までしかデータが取れないので定期的に実施する必要があります。
twitterの取得はこの方の方法をそのまま採用させていただきました。
https://qiita.com/newt0/items/243b6f98a31433d2faaf
【事前準備】
TwitterのAPIキーが必要となります。お持ちでない方は先に取得してください。
すべて英語で申請しないといけないので、英語が苦手な人にとってはハードルが高いですが、google先生に「twitter api 申請」と聞けば、何種類ものブログを教えてくれます。
かなり丁寧な説明もありますので、なんとかなると思います。
なおtwitterの申請フォームはちょこちょこと変更がされている場合がありますので、わからないところはgoogle翻訳で翻訳しながら進めてみてください
API申請はすぐ発行される、数日かかるなど、あるようですが、わたしの場合は2日ほどで申請がとおったと思います。
【プログラムの特徴】
さきほどのQiita記事をそのまま採用させていただきました。
twitter取得部分はわたしのプログラム力より上ですので、説明できません。
わたしの作った部分は簡単です。
1.2 株価データの収集(記事価格:フリー)
【概要】
yahoo.comから、対象期間の株価を取得します。
選択した銘柄の1時間毎株価を取得します。
1時間毎ではありませんが、UKIさんのQiitaを参考にさせていただきました。
ぜひこの記事を一読し、プログラムを動かしてみることをお勧めします。
余談ですが、UKIさんは投資系のnoteを書いており、どれもが興味深いので投資に興味ある方は一読をお勧めします。
【プログラムの特徴】
シンプルで特記すべきことはありません。
第2章 データ分析(記事価格: 800円)
【概要】
2.1 感情分析
取得したtweetの感情分析を行いスコア化します。
2.2 銘柄の抽出
株価と感情スコアの相関を計算します。
相関の高い銘柄を抽出します。
【事前準備】
感情分析にあたり、感情分析できるようにPCの環境設定が必要です。
詳細は第2章に記載していますが、環境構築に最も時間がかかり苦労しました。
【プログラムの特徴】
感情分析は、現在のDeepLearningのメインの研究分野のひとつである自然言語処理であり、機械学習系のプログラミングとして、本note記事の中で最もやりがいパートです。
なお本noteでは、次のQiitaを参照して言語分析を使わせていただいています。
https://qiita.com/hnishi/items/0d32a778e375a99aff13
この感情分析を改良、変更することで、結果が大きく変わると考えています。
自然言語処理系のプログラミングを学んできた方はこの部分に変更、追加をしていくことが一番楽しめると思います。
わたしはテーブルデータ、画像処理系をやってきたので、自然言語系は今後の課題です。
銘柄の抽出はpandasのデータ整理のみです。
【概要】
指定銘柄のバックテストを行い、利益率を計算します。
【事前準備】
とくになし
【プログラムの特徴】
シンプルです。
変数をいろいろ変えることにより、いろいろなチェックができますがプログラム的には特筆事項はありません。
この章はプログラミング力ではなく投資能力が必要なのだと思います。
【概要】
指定銘柄を実取引と同じ環境でテストし、損益を確認します。
【事前準備】
APIを使用するためauカブコム証券のkabuステーションを使用します。
よって、auカブコム証券の口座を作る必要があります。
わたしの場合、ネット証券なのにカブコム証券は口座を開くまでに1ヶ月ほどかかりました。
ネット証券にしては非常に時間がかかった印象です。
証券口座を開設、維持するのだけであれば無料ですので計画的に開設しておいたほうがよいでしょう。
なおAPIを使用するためにはKabu ステーションを使うのが必須となります。このkabuステーションは有料ですが、証券口座の状況に合わせて無料で使用できます。
Kabuステーションの中に①通常プラン、②Fintechプラン、③Premiumプランの3つがあり、APIを利用するためには②以上のプランになる必要があります。無料条件をよく確認しておいてください。
「初回申込みの翌々月第1営業日まで」までは無料ですので、口座開設したら無料期間にいろいろ試してください。
新規にカブコム証券口座を作る場合は、ポイントサイトでよい条件がないかを確認するとよいでしょう。
私のときは「ハピタス」で4000ポイント(4000円相当)でしたが、この記事を書き始めたとき(2021/5/30)をみると8000ポイントになっていました。今(2021/6/20)は残念ながらやってないようです。
普通の証券口座ではなくFX口座を開設にしたほうがポイントは高くなるときがありますので、FX経験者はそちらから開設してもよいでしょう。(FXはリスクあるので経験者のみで。)
なおポイントサイト「ハピタス」を初めて利用される場合は、以下のリンクから登録いただければ幸いです。
いま(2021.7.13)なら、ちょびリッチで16000ポイント(8000円相当)で口座開設やってます。
http://www.chobirich.com/cm/ad/?p=8224777069&i=3044645
【プログラムの特徴】
APIに関してはkabuステーションが公開しているプログラムを使用しています。(第4章で使用しているAPIは株価取得のみ)
この章ではじめてクラスを使いました。自分でプログラミングをして成長したと感じるたとです。
クラスのまとまりなど、ホントにこれがよいのかはまだ判断できるレベルにないですが、オブジェクト指向の便利さはわかりました。
オブジェクト指向がよくわからなかったときに読んだ「オブジェクト指向でなぜつくるのか」はためになりました。
kabuステーションのAPIの仕様で毎日、Kabuステーションを立ち上げて、APIキーを取得しなければなりません。
それに合わせてプログラムも毎朝立ち上げて実施する必要があります。
これは面倒ですが、日々の損益を確認するということで投資としてはよいこと?ではないでしょうか。
BOTとしては、pyautogui など使って、すべてを自動化してしまうように改造するのがよいと思っています。
第5章 取引BOT(記事価格:9,800円 ⇒ 800円):
【概要】
指定銘柄を自動売買します。
この章の価格をかなり高くしています。
⇒ 削除までの間、価格変更しました。(2021.9.11)
ここの価格を高く設定しているのは、
① 4章とほぼ同じ構成であり4章まで実践すると5章は自分で実装できると考えられるので、あえて購入は不要
② 1銘柄を最小の100株で運用しても、1日の取引で10,000円以上の損をだすのは珍しくなく、プログラミングの時間がもったいないので、この値段をだしても取引したいという投資能力の高い方向けのため。
フォワードテストでよい銘柄をみつけたからすぐに取引を試してみたいという投資能力が高い方がいた場合のためとして準備しました。
実取引はしなくてもにフォワードテストで十分、雰囲気は味わえます。
わたしは取引BOTとフォワードテストは同じ条件で動かしていますが、ほとんど同じ結果となります。
(なお第4章のフォワードテストは手数料を考慮していないので手数料分は考慮が必要です)
実取引は成行で注文をだしていますが、場合によっては約定までに時間がかかりフォワードテストと乖離する可能性はもちろんあります。
【事前準備】
第4章と同じで、kabuステーションのAPIが使える状況にしておく必要があります。
また、信用取引口座も必要です。
【プログラムの特徴】
第4章で作ったクラスForwad_test()に対応した、クラスDeal()を作っています。
メインのプログラムはほとんど第4章と同じです。
第4章ではkabuステーションのAPIの株価取得しか使っていませんでしたが、買い、売り、ポジション確認のAPIを使用します。
おわりに
私はwindows10 proとwindows10 homeの2つを持っていて、どちらのPCでも記事のプログラムが動くことは確認しています。しかし、すべての環境での動作は保証できません。ご自分の環境で動かなかった場合、動かないものを動かすようにするのも学習ということで理解した上で購入をお願いします。動作保証が欲しい方は購入をお控えください。
注意事項:
プログラミング、投資は、自己責任で行なってください。
このnote記事の情報に基づいて被ったいかなる損害についても、当方は一切責任を負いません。最終的な投資の意志決定は、使用者ご自身の判断でなさるようお願いいたします。なお、予告なしに内容が変更または廃止される場合がありますので、予めご了承ください。また、本サイトがリンクしているサイトの内容につきましては、当方が一切の責任を負うものではありません。
Python✖日本株 全体目次(リンク)
はじめに
第0章 Python準備編
第1章 データ収集 Part 1 Tweet編
第1章 データ収集 Part 2 株価編
第2章 データ分析
第3章 バックテスト
第4章 フォワードテスト
第5章 取引BOT
何かわからないことがありましたら、コメントください。
回答できるかぎり回答します。
以上です。
この記事が気に入ったらサポートをしてみませんか?