株取引AI “AI Deep Kabu” を作り10ヶ月公開運用した知見：インフラ構成・料金、収益化難度、除外すべき銘柄

## TL; DR

- 実物はこちら
    - https://ai-deep-kabu.com/
    - https://blog.ai-deep-kabu.com/
    - https://twitter.com/ai_deep_kabu
- ※この記事では人工知能のアルゴリズムについては言及しません（商売道具になるかもしれないので🤫）
- ※この記事では以下の内容を扱います
    - 作成したWebサービスのインフラ構成
    - 現在のシミュレーション損益値等
    - Webサービスを保守運用して気付いたこと
- 作成したWebサービスでは下記のことを行いました
    - その日に買うべき・手仕舞い（売る）するべき株式を自作アルゴリズムに推薦させた
    - その推薦結果をtwitterとブログで毎日無料配信した
    - 仮にその情報に沿って売買した場合、最高で `2,290,530円` （約230万円）の確定した利益がでていた（含み益ではない）
- [#今回のプロジェクトから得られた教訓、知見](#今回のプロジェクトから得られた教訓知見)


## はじめに

### 自己紹介

@dogwood008 と申します。普段は プログラミング教育サービス [N予備校](https://www.nnn.ed.nico/pages/programming/) のバックエンドを担当しています。

一番好きなのはRuby + Rails ですが、 Python, Node.js, Android (Java, Kotlin) あたりもだいたい使えます。私が[過去に書いた記事一覧はここ](https://qiita.com/dogwood008)です。

### 免責事項

```
• 本記事の内容は、著者個人が趣味の時間に自発的に行ったものです。著者が所属する会社または団体の監督指導の下に行ったものではありません。アドベントカレンダーとして表示されるため、所属する会社または団体の発表のように見えることがありますが、その会社または団体は本記事の内容について、一切関知しておらず、なんら責任や関連はありません。
• 本記事の内容は、著者個人による見解であり、所属する団体、組織、会社、その他一切の枠組みによる公式見解ではありません。また、それらは本記事に対する責任や関連も一切ありません。
• 本記事の内容は、著者個人の成果物に関する情報の提供を目的としたものであり、投資の勧誘を目的としたものではありません。
• 本記事の内容または本記事の内容を元にして作成されたWebサービスあるいはそれによる予測（以下、その成果物が生成する情報と呼称）を参考にして、投資の判断を行わないでください。また、本記事の内容またはその成果物が生成する情報が正確であることを、著者は一切保証しません。未来の出来事に対する予想も、あくまで予想であり、その時々の状況によって変わりうることにご注意ください。
• 投資を行う際には、投資を行う本人のみの判断と責任において行ってください。
• 仮に投資に失敗し、投資を行った者の資産が減ったり債務を負ったりしても、著者はなんら責任を負いません。
• その他、本記事を参考にしたかどうかに関わらず、投資の失敗や機会の損失等を含むいかなる不利益が何人に生じたとしても、著者はなんら責任を負いません。
```

### 人工知能と株取引

世の中にはいろんな人工知能があり、[ポーカー用AI](http://news.livedoor.com/article/detail/14079514/)、[囲碁用AI](https://diamond.jp/articles/-/154418)、[将棋用AI](https://japan.cnet.com/article/35115995/)等さまざまあります。じゃあ株取引のAIもあるのかと探してみると、一番良さそうなのは、ロボアドバイザー[^robo_ad]でした。

ロボアドバイザーとは、入金して投資の配分を決めておくと勝手にリバランスを行って良い感じに分散投資してくれるというやつです（そうでないのもある）。これはこれで良いのですが、リスク（想定する±変動幅）とリターンが単元株数以上の個別株売買より抑えめになっている[^low_risk]ので、長期投資向けです。

一方、今回自分がやりたかったのはそうではなく、いわゆるデイトレーディングに近いことです。つまり短中期で個別株の売買を行うことでリスクを許容しつつ大きいリターンを得たいということです。素人が適当に買って勝つのはなかなか難しいと思いますが、本記事で扱うのはAIがそれを推薦したらどうなるか？というテーマです。

株式の売買で儲けるには安い時に買い、高い時に売ることが必要です。その逆、高い時に売り[^make_sell_pos]、安い時に買う[^close_sell_pos]こともできるのですが、手数料等株価の値動き以外にかかる費用が高くなりがちなのと、仮に株価がぐんぐん伸びた時に損失が青天井なので、今回は対応しません。今回はAIに買い時・売り時の株式を推薦させて、それにしたがって売買した際のシミュレーション値と、予測した推薦株の配信を実際に行っていたので、そのインフラ構成や得た知見を紹介します。

[^low_risk]: ロボアドバイザーに預ける額にもよる
[^robo_ad]: 赤いやつとか青いやつとか、具体的な名前を出すのは法に触れるかわからないので止めておきます、この記事はそれらの勧誘を目的とするものではありません
[^make_sell_pos]: 人から株を借りて売る
[^close_sell_pos]: 買い戻して借りた人に株を返す


### 予定と誤算

当初は、それなりの実績を作れたら予想結果を売ろうと思っていました。しかし、個別株の売買シグナルを会員に有料販売するには `投資助言業` の認可を取る[^auth]必要があるらしいということが調べていくうちにわかりました。認可を取るのは面倒だけどせっかく作ったのをお蔵入りさせるのももったいない、じゃあ無料で配っちゃうかという感じでここまできました。後で述べますが、これにより得られたあるチャンスがありました。

[^auth]: 法人成りして供託金500万円を積んで投資助言業者になる

## 構成

基本的には[GCP](https://cloud.google.com/)[^gcp]を使用し、一部[AWS](https://aws.amazon.com/jp/)[^aws]を使用しています。理由はAWSを使ったことはあるから、GCPを使えるようになりたかったためです。

そもそもGCPに興味を持った理由は、あちこちで「GCPの方がAWSより安い」みたいな記事をみかけたことです。本当か？と思い、じゃあ実際に使ってみるか、といった感じで採用しました。実際に安いかどうかはわかりません（使い方によるとしか言えない）。

GCPの兄弟サービス？であるFirebaseは、以前調査（[わかる！Firebase ～全てのサービスをおつまみ紹介～](https://qiita.com/dogwood008/items/fa95b62ad151f823af70)）したことがあったためなじみがありました。GCPのサービスはいくつかFirebaseでも提供されており、その辺はあまり心配はありませんでした。それに対し、他のIaaSはそもそも何のサービスが提供されているかを調べるところから始まるため、GCPより学習のイニシャルコストがかかると考えました。結果、今回は検討対象にしていません。

私がやろうとしていたことの範疇では、GCPとAWSとでは、できることは大差ありませんでした。使用したいコンピューティング環境やストレージはそんなにスペックを要求しないので、低コストで運用できれば良いなぁと思って取りかかりました。

後から気付きましたが、GCPには「アルファ版」「ベータ版」と冠の付くサービスがちょくちょくあります。今回のプロジェクトは趣味レベルなので、仮にそれらであろうとガンガン使いましたが、もしプロダクションレベルで必要になったら、使用するのは少し躊躇するかもしれません。その辺は運用するサービス次第だと思います。

[^gcp]: Google Cloud Platform
[^aws]: Amazon Web Services

### 推薦部


買い目・売り目の株を推薦する部分のインフラ構成は下図のようになっています。

![ai-deep-kabu.png](https://qiita-image-store.s3.amazonaws.com/0/28930/55bf2b92-6924-9d7b-ed9f-0c7a0a84df9b.png)

株価取得サーバが [Cloud Functions](https://cloud.google.com/functions/) で動いており、これは [App Engine](https://cloud.google.com/appengine/) により、決められた時刻に [Cloud Pub/Sub](https://cloud.google.com/pubsub/docs/) でイベントが発火することにより起動＆決められた動作を行います。

同様に毎朝08:50になると、[App Engine](https://cloud.google.com/appengine/) が [Google Compute Engine](https://cloud.google.com/compute/) を起動します（ここは後で詳しく述べます。）。ここで起動されたマシンは続けて[起動スクリプト](https://cloud.google.com/compute/docs/startupscript)を実行します。これにより、指定した　Python　のスクリプトが自動的に実行されます。

起動スクリプトで実行される Python スクリプト内では、 Pub/Sub の予測開始epicの Subscribe を行うようになっています。現在の株価取得完了後に Publish されるエピックを Subscribe するようになっており、この時に初めて各株式の現在値と過去の値を[Google Cloud Storage](https://cloud.google.com/storage/)から取得し、買い目株の推測を行うようになっています。

推測された買い目の株式は、その後 Twitter の API を Python から叩くようになっています。これの続きは[#配信部](#配信部)で詳細に述べます。


#### イベント通知

前述の通り、イベント通知には [Cloud Pub/Sub](https://cloud.google.com/pubsub/docs/) を使用しています。これはAWSでいうところの [SNS](https://aws.amazon.com/jp/sns/) [^sns]のように使えます。

イベント（Pub/Subではトピックと呼ばれる）通知をトリガーとして、 [Google Compute Engine](https://cloud.google.com/compute/)
を起動したり、 [Cloud Functions](https://cloud.google.com/functions/) を動かしたりすることができます。

開発中では、Publisher が Publish したエピックを Subsucribe しようとすると「エピックがない」という旨のエラーが発生し、うまく Subscribe できないことがちょくちょくありました。これは「毎日新しくエピックを新規作成し、不要になったらエピックを削除する」ことで解決できました。

[^sns]: Amazon Simple Notification Service （Social Networking Service ではない）


#### タスクの定期実行

定期実行、つまりcronのように「事前に定めたある日時」であることをトリガーにエピックを Publish するために、GCPでは [App Engine](https://cloud.google.com/appengine/) を使用します。これで例えば「[毎日 08:45にイベントをpublishする](https://cloud.google.com/appengine/docs/standard/python/config/cronref?hl=ja)」といったことができるようになります。

この時、 [Cloud Pub/Sub](https://cloud.google.com/pubsub/docs/) を使用して、 Subscriber に向けてエピックを Publish します。

##### AWS でやるなら

AWSであれば [Amazon CloudWatch Events で、cron式を用いてイベントをpublishできます](https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/events/ScheduledEvents.html)。

その次はGCPとは異なり、 [AWS Lambda](https://aws.amazon.com/jp/lambda/)へイベントを流し、Lambdaが[EC2](https://aws.amazon.com/jp/ec2/)[^ec2]をキックして起動する、という流れになります。

Publish されたイベントを順番に処理(FIFO)する必要がある場合は [SQS](https://aws.amazon.com/jp/sqs/)[^sqs] へイベントを流すこともできます。

[^ec2]: Amazon Elastic Compute Cloud
[^sqs]: Amazon Simple Queue Service


#### サーバレスアーキテクチャ

サーバレスアーキテクチャとは、ソースコードだけアップロードしてデプロイしておけば、後はそれを動かす環境はIaaS側でよしなに用意して実行してくれるといった構成です。

GCP のサーバレスアーキテクチャサービスである [Cloud Functions](https://cloud.google.com/functions/)は、[AWS Lambda](https://aws.amazon.com/jp/lambda/) と同じようなことができます。

AI Deep Kabu では Pub/Sub　で流れてきたイベントを拾って、サーバレスで一時的なアプリケーションを実行する環境を用意し、予め用意したコードを実行する、という使い方をしています。


#### コンピューティング環境

時間貸しのVPSのようなものがGCPで提供されており、 [Google Compute Engine](https://cloud.google.com/compute/) と呼ばれています。 AWS でいうところの [EC2](https://aws.amazon.com/jp/ec2/) です。

App Engine を使用することで、タイマー起動・終了が可能になります。例えば08:50に起動して、09:10に終了する、といった使い方です。これにより、スポット的に必要な時間のみコンピューティング環境を使用することができ、不要なリソースによる課金を回避できます。詳しくは次の記事を参考にしてください：　[GCEの自動起動・自動停止をスケジューリングする](https://qiita.com/hatappi/items/a756ea8fd29d7d802e13)

AI Deep Kabu では、朝9時ちょっと過ぎにバッチがまわるようになっています。これを実現するために [Pub/Sub と App Engine を組み合わせ](https://cloud.google.com/solutions/reliable-task-scheduling-compute-engine)て使用しています。

予めタイマー起動しておいたインスタンスでバッチ開始のトリガーとなるトピックを Subscribe しておき、予め仕込んでおいた時間になったら App Engine がトピックを Publish します。それを受けて Subscribe していた　GCE インスタンスはバッチ処理を開始する、という流れになっています。図で表現すると、次のような流れです。



> ![GCE + Pub/Sub + App Engine](https://qiita-image-store.s3.amazonaws.com/0/28930/49361f9e-1103-7386-40e2-a840af5294fd.png)
> 
> [Google Compute Engine での信頼性の高いタスクのスケジューリング](https://cloud.google.com/solutions/reliable-task-scheduling-compute-engine)より引用。2018年12月12日閲覧。


#### ストレージ

過去の株価情報を保存するためにストレージサービスを使用しています。GCP では [Google Cloud Storage](https://cloud.google.com/storage/) という名前で提供されています。 AWS でいうところの [S3](https://aws.amazon.com/jp/s3/) です。

私の利用用途では、Route 53 のエイリアス先に S3 を選べること以外は、両者の間に特筆すべき違いはないように思います。


#### コード管理

GitHub の private レポジトリで行っています。GCP や AWS にも [Cloud Source Repositories](https://cloud.google.com/source-repositories/), [AWS CodeCommit](https://aws.amazon.com/jp/codecommit/) と呼ばれるサービスがありますが、今回は使用しませんでした。理由は、既に github の Developer プランに加入しており、無制限に private リポジトリを作れるためです。

#### Pythonでの開発と実行環境

Pythonでの開発は基本的に [Jupyter Notebook](http://jupyter.org/) 上で行っています。保存するとファイル名が `hoge.ipynb` になります。これを保存時に自動実行されるスクリプトで `hoge.py` に変換するようにしてあります。スクリプト実行時には `.ipynb` ではなく `.py` の方を実行するようにしています。

これには理由があり、 `.ipynb` だとgithubでのレビュー時にコード差分が読みづらいというのと、 `.ipynb` のままでターミナルからスクリプトを実行することはできないと思い込んでいたためです（後から知りましたが、[実際はできる](https://stackoverflow.com/questions/35545402/how-to-run-an-ipynb-jupyter-notebook-from-terminal)）。


### 配信部

#### Twitter

https://twitter.com/ai_deep_kabu

推薦部で推薦された買い目/売り目の株式を Twitter を使って配信します。これは Twitter の API を Python から叩くことで行われます。

この際、例えば2日続けて買い目株が無い場合は全く同じ内容をツイートすることになります。しかし、Twitter の API は、連続して同じ内容をツイートしようとすると受け付けてくれない仕様（ `[187] status is a duplicate` ）になっています。このため、AI Deep Kabu では `12月10日の株価予測結果（買い）` のように、日付をツイート文の前に入れることでこれを回避しています。

また、毎日14:30過ぎにその日の売り目（手仕舞い推奨）株式の推測を行います。これの流れも買い目株の推測と同様です。

#### ブログ

[https://blog.ai-deep-kabu.com/](https://blog.ai-deep-kabu.com/)

はてなのブログにも、twitterと同様に予想結果を配信します。これには [pythonでwsse認証を用いて、はてなブログにエントリーを投稿する](https://qiita.com/hirohuntexp/items/26ea150a531fbc9da722) を参考に自分で実装したクラスからポストしています。


#### Static HTML page

Twitter での配信とは別に、 AI Deep Kabu には静的ページで作成された Landing Page があります。

[https://ai-deep-kabu.com](https://ai-deep-kabu.com)

これは Cloud Storage ではなく AWS の S3 + CloudFront + Route 53 で構成されています。これは、Zone Apex をエンドポイントにしたかったのが理由です。

どういうことかというと、 AWS の Route 53 を使用すると、[本来はCNAMEレコードを設定できない](https://qiita.com/haruyosh/items/95b20bef7beb63d200ab)　http://ai-deep-kabu.com に対して、 CloudFront のエンドポイントを Alias レコードとして設定することができる、ということです。

つまり、 http://ai-deep-kabu.com にアクセスされた際、 S3 に置いてある静的ページを CF 経由で表示することができます。これにより、サーバレスでWebサイトをサブドメイン無しでホストすることができます。

また、SSL/TLS証明書も無料で作ることができるため、CFで設定することにより、httpプロトコルでアクセスされた際に自動的にhttpsプロトコルのものへリダイレクトさせることができます。さらに、HTTP/2で配信することも可能です。実際に[AI Deep KabuのLP](https://ai-deep-kabu.com)ではHTTP/2で配信されています。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/28930/440891f1-b1c3-4e7d-ee24-cfb14cdf0030.png)
画像は[https://http2.pro/check?url=https%3A//ai-deep-kabu.com/](https://http2.pro/check?url=https%3A//ai-deep-kabu.com/)より

以上の技術と設定により、 `www` 等のサブドメイン無しでWebサイトを運用しています。S3で静的Webサイトをホスティングする詳しい手順は別の記事で記載したので、下記をご覧ください。

[AWS S3で静的Webページをホスティングする](https://qiita.com/dogwood008/items/a92abae789f4b0466f38)


## 運用

### 利用規約

利用規約の作成には、[Webサイトの利用規約](https://kiyaku.jp/index.html)を参考にさせていただきました。非常に多くの時間を節約することができました。ありがとうございます :bow:

### 成績

各取引をまとめたスプレッドシートは[こちら](https://docs.google.com/spreadsheets/d/1Z_accom-LYq_1eGKkKbN7kdsk4DtjwnGCOEm8xW-0eA/edit?usp=sharing)にあります。

下図は運用開始から12月17日までの損益を計算したグラフです。横軸は日付を、縦軸は合計の損益を表します。また、各約定日について、青は利益が出た日、赤は損失が出た日を表します。なお、手仕舞いによる利益確定・損切りのみを掲載しているので、含み損益はこのグラフにはあらわれていません。

![pubchart.png](https://qiita-image-store.s3.amazonaws.com/0/28930/d9dc2757-f47f-3088-aecf-2b7b7e7334f9.png)

コツコツと利益を重ねていくような形で、11月19日には最高で `2,290,530円` （約230万円）の確定した利益をだしていました[^profit]。しかし、大きく3回ほど負けた日があります。1日に50万円以上の損失を確定させた日は `6月21日` 、 `11月26日` 、 `同30日` の3回でそれぞれの銘柄コードは `7974` `7974` `5019`です。つまり、`7974` だけで合わせて100万円以上の損失が発生している計算になります。これが無かったら今頃プラスなんだよなぁ…

`7974` の6月21日、11月26日の株価は、それぞれ `36,720` `32,320` です。ここから得られた教訓は、「株価が高い銘柄は、他の銘柄に比べて注意を要する」ということでした。次のバージョンアップでは高い株価の銘柄は組み込まないようにします…

12月17日現在の各種数値は下記のようになっています。

|項目名|数値|単位|
|:--|--:|:--|
|総利益額|-109,320|円|
|勝率|66.8|%|
|総取引回数|1,594|回|
|開始からの経過日数|328|日|

最新の値は、 [AI Deep Kabu のLP](https://ai-deep-kabu.com/#fh5co-counters)にて公開中です。

なお、ここで示した数値は下記の条件に基づいて算出しています。

- 買い予測で配信した指値がその日の安値以上なら、単元株数で買いポジションを持つ
    - 既に買いポジションで持っている株に対し、買い予測が配信された場合、単元株数だけ買い増す
- 手仕舞い予測で配信された株式のうち、保有するものがあればその日の終値で全て手仕舞いする
- 手数料、利息、その他諸経費は0円とする


[^profit]: 含み益ではない

### 費用

以下は2018年のAI Deep Kabuの開発・運用にかかったGCPのインフラ費用です。

実は工数が足りずdev環境とprod環境で共存していたのですが、それによりサービスがダウンしてしまうことが何度かありました。安定稼働が必須のサービスであれば、あたりまえですが dev と prod が同居するのは良くないですね。これらが同居しているため、月の費用にばらつきがあります。AWSも他のプロジェクトをやっていたりしているので、毎月一定ではありません。

ただ、多く使わない月は GCP と AWS を合わせて毎月1000円程度あれば十分であるため、常時サーバ稼働が必要なサービスに比べるとかなり安くすんでいると思われます。


| 月 | GCP費用（円） || AWS費用（米ドル） | AWS費用（円※）
|--:|--:|--:|--:|--:
|4| 342||0.88|99.88
|5| 590||0.86|97.61
|6| 319||0.84|95.34
|7| 323||0.89|101.02
|8| 322||1.47|166.85
|9| 295||1.10|124.85
|10| 480||0.65|73.78
|11|1061||7.72|876.22
※1米ドル=113.5円で計算




### 実際に運用してわかったこと

#### 結構細かいところまで見られている

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">AI Deep Kabu(AIディープカブ）では「餅は餅屋に、株の運用は人工知能に」とありますが、それを言うなら「餅は餅屋に、株は株屋に」ではないかと‥<a href="https://twitter.com/hashtag/%E6%A0%AA?src=hash&amp;ref_src=twsrc%5Etfw">#株</a><a href="https://twitter.com/hashtag/%E4%BA%BA%E5%B7%A5%E7%9F%A5%E8%83%BD?src=hash&amp;ref_src=twsrc%5Etfw">#人工知能</a></p>&mdash; コロンブスの卵@株式投資 (@mr_columbus_egg) <a href="https://twitter.com/mr_columbus_egg/status/970849071257722880?ref_src=twsrc%5Etfw">2018年3月6日</a></blockquote>

「専門家に任せておくのが良いよ」位の意味合いで3秒で考えたクソザコキャッチコピーなので、そのうち変えるかもです…

<blockquote class="twitter-tweet" data-cards="hidden" data-lang="ja"><p lang="ja" dir="ltr">「本サービスのWebページを閲覧した場合、下記の利用規約に同意したものと見なします」そんな規約が通るのか。｜株の運用を人工知能で AI Deep Kabu <a href="https://t.co/WSIfLNHr2M">https://t.co/WSIfLNHr2M</a></p>&mdash; data_sciesotist (@data_sciesotist) <a href="https://twitter.com/data_sciesotist/status/1057509445926903810?ref_src=twsrc%5Etfw">2018年10月31日</a></blockquote>

利用規約、誰も読まないでしょと思ってたのでかなり無茶な条項入れておいたのですが、ちゃんと見ていただけて嬉しい？です。さすがにちょっと無茶すぎたかもなので、そのうち修正します[^terms]。

[^terms]: 「第9条（利用規約の変更）」による

#### 無料で公開しても、思ったほどフォロー数が伸びない

やっぱり怪しく見えるのでしょうか…おそらく私に無料で公開するメリットがないように見えるからだと思います。

[フリーミアム](https://ja.wikipedia.org/wiki/%E3%83%95%E3%83%AA%E3%83%BC%E3%83%9F%E3%82%A2%E3%83%A0)モデルで始めるなら、なぜ無料なのか、どのように収益化するか等を真摯に説明しないと「ただの怪しいサービスっぽい」で終わってしまうのかもしれません。運営しているのが有名な企業や団体ならそうはならないかもしれないのですが、残念ながら無名な個人なので…

ソースまるごと一式を買い取って有効活用していただける企業・団体様がいれば、違った結果になったのかもしれません。


#### サーバ代は回収できそうだが、人件費まで直接回収するのは無理そう

[ブログ](https://blog.ai-deep-kabu.com/)に AdSense を貼り付けています。[金額を公表すると規約違反になってしまう](https://adbeginners.com/profit-release/)ので、認められた範囲で言うと「毎月のサーバ代を払うと何も残らないか、そもそも足りない」くらいのお金が発生しています。

勉強にかかった時間・授業料（数十〜百数十時間？の人件費と学費年数十万円）、開発運用保守にかかった時間（数十〜百数十時間の自分の人件費）等トータルで考えると、数字では残念なほどマイナスです。

しかし、このWebサービスをきっかけに私自身に興味を持っていただけたり、お話しをさせていただける機会を頂戴したりすることができました。

今回は、人件費と学費をお金という形で回収することはできませんでした。しかし、完璧ではないにしろある程度機械学習がわかる、人工知能を作れるという武器や、人・会社に会う手がかりになるというチャンスを手に入れることができたことを考えると、今後長い年月を掛けてそれらを回収することができるのではないかと考えています。



#### 今回のプロジェクトから得られた教訓、知見

- 機械学習や人工知能の勉強は、数式がたくさん出てきて難しそうに見えるけど面白い
    - さらに、機械学習や人工知能の仕組みがわかる、あるいはそれらを作れるエンジニアは（少なくとも今は）[市場価値が高い](https://www.dip-net.co.jp/news/press-release/2016/11/ai651.html)ので、良いスキルアップになる
        - 少なくとも日本においては、[国の意見として人工知能を理解・研究開発できる人材がもっと必要なことが表明されている](https://www.nedo.go.jp/content/100862415.pdf)
    - ただ、今は[ハイプサイクルの幻滅期](https://ja.wikipedia.org/wiki/%E3%83%8F%E3%82%A4%E3%83%97%E3%83%BB%E3%82%B5%E3%82%A4%E3%82%AF%E3%83%AB#5%E3%81%A4%E3%81%AE%E6%AE%B5%E9%9A%8E)にある、という[見方もある](https://japan.zdnet.com/article/35126917/)
        - 機械学習・人工知能で何でも解決できると思っていた人たちが「あれ？そうでもないな」と思い始めてくる時期
    - 今後はわからないが、数年前のビッグデータの時の流行を考えると、仮に今の機械学習・人工知能の波が沈んでも、今後も数年〜十数年後にまた波か来るんじゃないか
        - [「技術の変化は振り子ではなく螺旋」和田卓人さん](https://www.publickey1.jp/blog/18/2018.html)
            - [dwango](http://dwango.co.jp/recruit/)の新卒研修で和田さんにお話しいただいたのとほぼ同じ内容です。著名な方の実体験に基づいたお話しを入社直後に伺えたことは、大変貴重な体験でした。
- お金を殖やすためには、お金が必要だった
    - 資本主義とは富める者がますます富む構造だった
        - お金がないと株を買うことすらできない
        - わかってはいたが、現実に直面した
    - プレイヤーにならずにプラットフォーマーになる方が、金を抜きやすいし負けにおびえなくて良い
        - 証券会社や新聞雑誌は（客が付けば）強い…
    - Bitcoinをはじめ暗号通貨の予測配信ならお金取れるだろうか？
        - [DQNで機械学習した人工知能がBitcoinをシストレして月700万円儲けるまでの話（失敗）](https://qiita.com/dogwood008/items/18905088ad8d9d4bf672)
- 株価が高い銘柄を保有するのは危険
    - 当たり前のことなのですが、負けた時の損失がでかい
    - バージョンアップの際に株価が高い銘柄を除外するのがよさそう
- インターネット環境があり、かつtwitterアカウントを持っていない人数は自分の予想よりいる[^twitter]ので、サービスをつくるときはtwitterアカウントを持っていることを前提にして大丈夫か考えておくべき
    - 「株取引に興味があってtwitterアカウントを持っていない人」と「スパムtwitterアカウント」は同数程度だった
        - [@ai_deep_kabu](https://twitter.com/ai_deep_kabu)でフォローバックすると、ちょくちょく「フォロー数： 1, フォロワー数: 0」のアカウントがいる
            - AI Deep Kabuのためだけにtwitterアカウントを作ってくださった人々
        - スパムはDMで「画面ポチポチだけで数十万儲かる！」のような[詐欺](http://www.kokusen.go.jp/g_link/data/g-20181025_10.html)の勧誘文書を送ってくる
    - [自分のメールアドレスを知らない・わからない人が一定数いる](https://twitter.com/search?q=%E8%87%AA%E5%88%86%E3%81%AE%E3%83%A1%E3%83%BC%E3%83%AB%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%20%E3%82%8F%E3%81%8B%E3%82%89%E3%81%AA%E3%81%84&src=typd)のでtwitterアカウントを持っていなくても不思議な話ではなかった
    - [SMTPがRFC 821として制定されたのが1982年](https://ja.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol)、もう36年前のこと
        - 電子メールを置換するような、みんなが確実にアカウントを持っていてメッセージを届けられるサービスか何かがそろそろできてほしい


[^twitter]: 少なくとも日本においては

## おわりに

### Future work

株価が高い銘柄を推薦対象から外すことが最優先だと考えています。また、[損益算出のスプレッドシート](https://docs.google.com/spreadsheets/d/1Z_accom-LYq_1eGKkKbN7kdsk4DtjwnGCOEm8xW-0eA/edit?usp=sharing)を手作業で更新しているので、これを自動化したいです[^gssheet]。今Pythonスクリプトのリファクタリングを進めているので、それらを徐々に進めていこうと思います。

[^gssheet]: 面倒くさい ＆ スキルにならない ＆ ミスを生みうるので、人間がやる仕事ではなかった…

### その他やっていること

大学時代の同期と組んでBotで暗号通貨の自動取引をさせたり、三角裁定取引をさせたりと、ちょっと面白いこともやっています。こちらも充実させていきたいです。
https://blog.2x3dimensions.tech/

### ひとこと

長文でしたが、ここまでご覧いただきありがとうございました。この記事のどこか一部でも参考になれば幸いです。
参考になったらページ左側の「いいね」ボタンを押してもらえると励みになります :pray:

本記事中で何かあれば、コメント欄、[TwitterのDM](https://twitter.com/dogwood008)、[ここ](https://qiita.com/dogwood008)に記載のメールアドレスまでお願いします。

## Special thanks

Pub/Subでうまくイベントをpublishできなかった時、相談に乗ってくださった @namusyaka さん、ありがとうございました :bow: