目次

はじめに

本書の目的
Pythonの文法などについて
ソースコード(サポートページ)について
免責事項
表記関係
底本について

第1章 株取引の基礎知識

1.1 株取引をはじめるには?
1.2 株の買い方・売り方
1.3 株価の決まり方
1.4 権利確定日・権利落ち日・権利付き最終日
1.5 株式分割と併合

第2章 データー収集と管理

2.1 必要なデーター
2.2 データーの保存方法
2.3 銘柄情報の取得
2.4 四本値(日足)と出来高の取得
2.5 上場・廃止情報の取得
2.6 分割と併合への対応

第3章 取引戦略とバックテスト

3.1 集めたデーターを眺める
3.2 シミュレーターの作成
3.3 簡単な取引戦略の例 : ゴールデンクロスを利用した取引
3.4 株価以外も使う例 : 目標株価を利用した取引

第4章 取引戦略の評価手法

4.1 最終利益以外の評価方法の必要性
4.2 簡単な評価指標
4.3 指標をシミュレーターに追加 その1
4.4 リスクを考慮した評価指標
4.5 指標をシミュレーターに追加 その2

第5章 ファンダメンタルズを活用する取引戦略

5.1 ファンダメンタルズ分析における代表的な指標
5.2 営業利益が拡大している銘柄を買う戦略
5.3 営業利益情報の準備
5.4 戦略の実装
5.5 シミュレーション結果

第6章 つぎの一歩の前に

6.1 オーバーフィッティングに注意
6.2 「取り引きを高速化して儲ける」はお勧めできません

はじめに

本書の目的

 本書「株とPython─自作プログラムでお金儲けを目指す本」は、Pythonというプログラム言語で作成したプログラムを使って、株にまつわるデーターをWeb上から入手したり、入手したデーターをもとに編み出した取引戦略が有効かどうかシミュレーションしたりしながら、株取引でお金儲けを目指す最初の一歩を踏み出すための本です。

 最初に大事なことを書きますが目指すのであって、本書の内容によって、「お金儲けをする」という目標に必ずしも到達できるわけではありません。この本の内容は、プログラムを活用した株式投資のほんの入り口です。そして、なにより筆者自身が残念ながら自慢できるほどには儲かってはいません。

 筆者が株取引を始めたのは2015年4月です。アベノミクスだなんだと、日経平均がガンガン上昇しつづけて、株でかなり儲けたという話があちこちから聞こえてきた頃です。周りが儲けた話を聞いてから動くのは愚策であるとわかってはいても「趣味のプログラミングをいい感じに使って株取引すれば俺も儲けられるんじゃね?」という思いで株取引を始めました。

 とはいえ、最初は株取引に慣れていないとどんなプログラムを書いていいのかわからないので、適当に勘で取り引きを始めたらそれなりに儲かる → ダラダラと適当に売買、悪くない → 調子に乗って種銭を増やす→ 儲けの絶対値がなぜか変わらない、という状態になり、初心に返りプログラムを活用した株取引をしようと、勉強や仕組み作りを2017年ぐらいからちまちまと始めたところです。

 ということで、本書はプログラムを利用した株取引でバリバリ儲けている人が、そのノウハウを読者に伝えるものではありません。皆様より少しだけ先にPythonを活用した株取引を始めた筆者が、今思えば最初に知っておきたかった事や躓いたところなどをふまえて、これまでに習得した知識を纏めています。本書を通じて読者が私より素早くPythonを活用した株取引ができるようになる、または、興味を持っていただけることを願って執筆されたものです。

 「株」と「Python」というキーワードから、機械学習とかディープラーニングなどの話題を期待された方もおられると思います。が、本書にはこれらは登場しません。

 筆者自身、プログラムを活用した株取引を始めた当初からインターネット上の「機械学習で○○の株価を予測!」のような記事を大いに参考にさせて頂いています。しかし、これらの記事だけの知識では、次のような所で躓く可能性があります。

 ・他の銘柄の予測もしてみたいけど株価データーの入手元が分からない。

 ・なんとかして入手した株価データーを眺めると、ある日を境にいきなり株価が1/10になっている。このデーターがそのまま使えるのか分からない。

 ・上場している銘柄はたくさんあるけど、結局、いつ、どの株を買って、いつ売ると、どれだけ儲かる見込みなのかが良くわからない。

 そこで、Pythonを利用した株取引の第一歩を踏み出そうとする本書では機械学習などはおいておき、まずは株取引の基本を押さえ、次に必要なデーターを集め、集めたデーターをつかって取引戦略の有効性を確かめるシミュレーターを作成します。そしてそのシミュレーターでいくつかの取引戦略をシミュレーションしてみます。ここまでできれば今後は本書の応用で、新しい取引戦略を自分で検証して実際の取り引きに活かすことができます。その時に、機械学習やディープラーニングの利用も考えればよいでしょう。

 実際のところ本気で株で儲けるつもりであれば、かかる時間や信頼性を考えれば自分が書いたプログラムでデーターを集めるのではなく、有料のデーターを購入する方がリーズナブルです。また、シミュレーターも同じく市販のシミュレーターを利用する方が間違いはないでしょう。しかし、本書ではプログラミングを楽しむことも目的の一つとし、あえてこれらを自作します。

Pythonの文法などについて

 本書ではPythonの文法などについて、他のプログラミング言語については知っているけどPythonは知らない人がコードを見たときに何を行っているのか想像できないことが予想される部分については適宜解説を行います。しかし、それ以外の部分については解説を行いません。

 Pythonはほかの言語に比べ、一般に学習しやすい言語といわれています。またPythonの文法などを解説した書籍やインターネット上の記事も多数あります。本文中のソースコードでわからないPythonの記述があれば書籍やインターネット等で調べて頂くようお願いします。

ソースコード(サポートページ)について

 本書のコードの記載の多くはコードの一部抜粋となっています。コード全体は次のGitHubにて公開しています。本書と合わせてご覧ください。


 https://github.com/BOSUKE/stock_and_python_book

免責事項

 本書は、情報提供のみを目的として作成した物であり、有価証券の取り引きなどの勧誘を目的としたものではありません。

 本書の内容についてはなるべく正確を期することを心がけていますが、その内容を保証するものではありません。本書を用いたプログラム開発、開発したプログラムの実行、実行結果に基づく株式運用などは、すべてご自身の責任と判断によって行ってください。これらの行為の結果について著者はいかなる責任も負いません。

表記関係

 本書に記載されている会社名、製品名などは、一般に各社の登録商標または商標、商品名です。会社名、製品名については、本文中では©、®、™マークなどは表示していません。

 本書に記載しているURLなどの情報は2018年10月21日時点のものです。URLなどは変更になっている可能性があります。

底本について

 本書籍は、技術系同人誌即売会「技術書典4」および「技術書典5」などで頒布されたものを底本としています。

第1章 株取引の基礎知識

 本章では株取引を全く行ったことのない あるいは始めたばかりの方向けに、Pythonを活用した株取引を行う上で、最低限必要となるであろう基礎知識について解説します。

1.1 株取引をはじめるには?

1.1.1 口座を開こう

 何はともあれ、株取引を始めるには証券会社の口座が必要です。証券会社の口座を開設しましょう。

 実際に株取引をするのは検討中だけど、ちょっと株について興味がある・勉強してみたいという段階でも口座を開いてしまったほうがよいと思います。

 現在、インターネットでの取引をメインとしている主要な証券会社では、口座の開設も維持にもお金は一切かかりません。一方で、口座を開くとWebサイトで様々な投資情報を見れるようになる、様々な便利なツールを利用することができるなど、口座開設はメリットだらけです。

 どの証券会社で口座を開くべきかは、好みの問題です。取引手数料がとにかく安いところやツールが使いやすいところを選ぶのも良いですし、普段自分が利用している銀行と連携しているところを選ぶのも良いでしょう。判断基準は様々です。

 なお、複数の証券会社の口座をとりあえず開いて、そのあとツールの使い勝手などを確かめたうえで、メインで利用する証券会社を決めるというのものアリです。口座開設は無料ですからね。

1.1.2 源泉徴収あり? なし?

 では口座を開くぞ!と口座開設を申請しようとすると、どの証券会社でも特定口座を開設するか否か、開設する場合は源泉徴収あり・なし、どちらにするかを選択することになります。これらの選択によって、納税の方法が変わります。

 この選択は、口座を開いてから実際の取引をすると次の年度まで変更することができません。正確には特定口座預かりとなっている証券を譲渡した、または配当金・分配金等の処理が行われた以降は、次の年度になるまで特定口座の源泉徴収あり・なしの選択が変更できません。それぞれのメリット・デメリットを確認して、適切なものを選ぶとよいでしょう。


特定口座を開かない

 特定口座ではない口座を一般口座といいます。一般口座で行われた取引については、自分自身で年間の取引の内容をまとめ、確定申告を行い納税する必要があります。面倒なだけです。特定口座を開かないことで得られるメリットはありません。なお、一般口座は特定口座を開く・開かないにかかわらず開設されます。


特定口座を開く

 特定口座で行われた取引については、証券会社が取引を年度ごとにまとめ、年間取引報告書を作成してくれます。

 ・特定口座を開く&源泉徴収あり

 取引のたびに、証券会社が必要な税金を徴収する方法です。税金は証券会社が税務署に収めてくれます。源泉徴収ありの場合、特定口座で行われた取引については確定申告の必要がありません1

 ・特定口座を開く&源泉徴収なし

 証券会社が作成した年間取引報告書に基づき、自分で必要ならば確定申告を行い、自分で納税する方法です。給与所得者の場合、例えば、給与所得及び退職所得以外の所得が20万円を超える場合は確定申告が必要です。この20万円には、株の儲けだけでなくネットオークションなどでの儲け(雑所得など)も含まれます。また医療費控除などのために確定申告をする場合は、20万円を超えなくとも株の儲け分もあわせて申告する必要があります。


 株の儲けなどが年間で20万円を超えることはないし、医療費控除などで確定申告をすることはないといえるのであれば、特定口座(源泉徴収なし)を選択するのが最も合理的と言えるでしょう。そうではない場合は、源泉徴収あり・なしは、それぞれにメリット・デメリットがあります。どのポイントを重要視したいかによって選べばよいでしょう。なお納税関係の手間は特定口座(源泉徴収あり)が最も少ないので、よくわからなければ特定口座(源泉徴収あり)を選ぶとよいと思います。


手間をできるだけ少なくしたい=源泉徴収あり

 株の儲けに対する税金について何もする必要がありません。


株の儲けをできるだけ大きくしたい=源泉徴収なし

 源泉徴収は儲けが生じるたびに証券会社に税金分を徴収されてしまいますが、源泉徴収をなしにすれば確定申告を行い納税をするまでのあいだ、源泉徴収では徴収されてしまう分のお金を投資に回せるため儲けを増やせる可能性が高まります。


 ただし税金以外の観点で、源泉徴収なしを選択して自分で確定申告するのは不利となるケースがあります。株でいくら儲けようが株の儲けに対する税率は一定です2が、確定申告すると国民健康保険料の算定対象となる所得や各種の補助の条件となる所得に株の儲けも合算されてしまい、結果として税金以外のところで不利になる場合があります。

1.2 株の買い方・売り方

 株を売買するには証券会社に注文を出す必要があります。注文には複数の方法があります。まずは、基本の成行注文と指値注文を理解しましょう。

1.2.1 成行注文

 成行(なりゆき)注文は、価格を指定せずに銘柄と数量だけを指定して売買の注文を行うことです。正確な売買価格の決まり方は「1.3 株価の決まり方」で説明しますが、買いの場合であれば、市場に売り注文があれば、その中で最も価格が安いものとの間で売買が成立します。売買が成立することを約定(やくじょう)といいます。逆に売りの場合であれば、市場に買い注文があれば、その中で最も価格の高いものとの間で約定します。

 実際にいくらで売買が成立するか、注文をした時点でわからないのが欠点ですが、約定しやすい利点があります。後述する指値注文と成行注文では、成行注文が優先して約定します。また、同じ注文であれば早い時間に出された注文が遅い時間にだされた注文に優先されます。

1.2.2 指値注文

 指値(さしね)注文は、価格と銘柄と数量を指定して売買の注文を行うことです。買いの場合は、市場に注文した価格以下の売り注文があれば、その売り注文との間で約定します。逆に売りの場合は、市場に注文した価格以上の買い注文があれば、その買い注文との間で約定します。

 約定する場合は、注文したときと同じ、またはそれより有利な価格で約定するのが利点ですが、わずかでも注文価格より不利な状況では約定しないため、すぐに株を買いたい・売りたいという場合には不向きです。

1.2.3 特殊注文

 成行注文・指値注文以外の注文のうち、よく使われる注文について次にまとめます。これらの注文は、特殊注文と呼ばれる場合があります。なお、特殊注文は証券会社ごとに利用できる注文に差があります。


逆指値注文

 逆指値注文では、トリガーとなる価格とトリガーが成立した場合に行う成行注文、または指値注文をあわせて注文します。買いの場合は、トリガーとして指定した価格以上の株価になると、指定しておいた成行注文または指値注文が有効となります。売りの場合は、株価がトリガー価格以下に下がると、指定しておいた成行注文または指値注文が有効となります。

逆指値注文は、万一の株価急落に備えるために有効です。常に株価をチェックできる状況ではない場合、逆指値の売り注文を入れておけば、万一トリガー価格以下に株価が下落した場合に、自動でその株を売るための成行注文または指値注文が有効になります。

不成注文

 不成(ふなり)注文は、指値注文が取引時間中(ザラバといいます)に約定しなかった場合は、取引時間の最後の取引(引け、といいます)において、その注文を成行注文に変更する機能を持たせた指値注文のことをいいます。取引時間は、午前の前場(ぜんば)と午後の後場(ごば)のふたつに分かれており、前場に出された不成注文は前場中に約定しなければ前場の引けで成行注文となり、後場に出された不成注文は後場中に約定しなければ後場の引けで成行注文となります。証券会社によっては、前場で行った注文でも前場の引けで成行注文とはならず、後場の引け(大引け、といいます)で初めて成行注文となる大引不成注文が可能です。

不成注文は、例えば「この株を〇〇円以上で売りたい。でも、売れないからといって明日には持ち越したくない」といった場合に使うと効果的な注文方法です。

OCO注文

 OCO注文は、ふたつの注文を組み合わせて行います。OCOはOne side done then Cancle the Other orderの略です。その名が示す通りどちらか片方の注文が約定した場合は、もう片方が自動で取り消しとなる注文方法です。OCO注文は証券会社によって呼び方が異なっています。「逆指値付き通常注文」「ツイン指値注文」「W指値」「デュアル注文」などと呼ばれているものが、OCO注文です。

例えば「この株が〇〇円になったら売って利益を確定したいが、万が一株価が△△円以下になってしまった場合は損切りしたい」といったときに、OCO注文は役に立ちます。この場合、〇〇円での指値での売り注文と、△△円をトリガーとする逆指値の注文をOCO注文します。

1.2.4 単元株

 取引所では、株は単元株という単位で売買されます。ほとんどの銘柄において1単元の株数は100株ですが、1単元が1000株の銘柄や、1口単位で株と同様に売買されるETFやリート(REIT)などがあります。

 例えば、100株が1単元の銘柄の場合、取引所における株の売買は100株、200株、300株……と100の倍数の株数で行われ、10株や110株のような中途半端な株数での取引はできません。ただし、証券会社によっては複数の投資家からの単元株未満の売買注文を単元株の注文にまとめることで単元株未満の株数の注文を行えるようにした、ミニ株という仕組みを用意しているところがあります。

試し読みはここまでです。
この続きは、製品版でお楽しみください。