Twitter分析で投資のポジティブネガティブを判断する(まずはPythonで)

2018年12月7日

スマホ上のTwitter

今回はPythonでツイート内容を分析して、投資のポジティブネガティブを判定してみようと思います。

本格的な解析というよりは今後のアイデア実現のための事前準備と考えているので、最低限のプログラムで実行できるようにします。

いずれはMQLでもツイートしたり、検索結果を解析して環境認識に使おうと考えています。

事前準備

Twitterを外部から利用するので、以前LINEを利用したときのようにAPIを利用するための情報を取得しておく必要があります。

取得方法はここでは説明しませんので、「Twitter API」などでグーグル検索してください。

※利用方法は、できるだけ最近作成された記事を確認してください。

以前は簡単にAPIを利用できたようなのですが、現在はかなり厳格になっていて、複数のWebサイトで登録方法を確認したのですが、ほとんどが古い情報でした。

ただ、API利用を申請してみた感想としては、「面倒だけど厳格ではない。」という印象でした。

英語が読めれば簡単に進められます。

私は英語が全く読めないので、グーグル翻訳で頑張りました。

 

やりたいこと

やりたいことは4つです。

  • ツイートする
  • タイムラインの情報取得
  • ポジティブネガティブ判定
  • 検索

これを実現するために必要なプログラムを書いていきます。

 

共通部分

全ての処理に必要なプログラムになります。

 

事前準備で取得したキーを入力すれば完成です。

キーは、自分用なら直接書いてしまってもいいですし、気になるなら外部のファイルから取得しても大丈夫です。

 

ツイートする

 

たったの1行ですが、しっかりとツイートされています。

 

タイムラインの情報取得

 

先頭の1行でタイムラインの情報を取得して、後ろのforで中身を抽出しています。

画面は載せませんが、実行すると200件ほどのツイートが表示されます。

 

ポジティブネガティブ判定

 

先頭の2行がポジティブ/ネガティブのワードです。
今回は私の好みで適当に選びました。

「勝ち、負け」なども入れたかったのですが、「一本勝ち」などのワードで想定外にポジティブが増えてしまうので断念しました。

これを区分けするにはもう少し高度な仕組みが必要です。(確か機械学習であった気がしたのですが、忘れてしまいました。。。)

 

[2018/12/07の実行結果]

16時頃

ポジティブ:15
ネガティブ:25

21時頃)

ポジティブ:14
ネガティブ:17

だいぶネガティブが減っているので、全体的に損失が限定(ある意味確定)されたのかもしれません。

応用次第で沢山のことができそうですね。

 

※最終系は、「リツイートの数・いいねの数」から各ツイート毎に点数を割り振って、そのうえでポジティブネガティブを判定していくことだと思います。

 

検索もできる

 

実はタイムラインではなく検索を主軸にしたかったのですが、思ったよりも条件が難しくて断念しました。

不要な情報まで引っ張られてしまい、正しい判定を行うのにもう少し時間が掛かりそうです。

 

先頭の1行目のみ少し説明します。

(FX OR @123454321)によって、FXを含んでユーザー名にはFXを含まない情報を取得します。

これは、ユーザー名にFXが入っているデータを大量に引っ張ってしまうのを避けるためです。

ネットを調べると、「探したいワード OR @存在しないID」とすることで実現できるようです。

「-RT」でリツイートを除外して、「:)」でポジティブツイートを選択、「since:2018-01-01」で期間を指定しました。

結果、想定していたほど完全なデータが取得できませんでした。

条件をシンプルにすると思った通りに取得できるのですが、細かい条件を設定していくとデータの取得件数が本来の量より減ってしまいます・・・まだまだ考慮できていない部分があるのかもしれません。

 

情報共有のお願い

MQLとPythonをとても簡単に連携する方法をご存知の方がいましたら、ご教示いただきたいです。

親和性がいまいちに感じていて・・・簡単にできるなら色々なことが実現できそうです。

現時点ではPython側を動かしっぱなしにして連携を取ったり、Cythonをかます方法くらいしか把握しておらず・・・Pythonが簡単にdll化できれば、MQLからも簡単に呼び出せるのですが、今のところやり方が分かっていません。

Pythonをexe化することはできているのですが、exeではMQL側から標準では読み込めないです。(例えばMQL5なら標準でimportできるのは、ex5とdllのみです。)

dllとしてimportできれば中のメソッドをそのまま使えるので、何かを作る時にとても楽だなと考えています。

実現したいのは、「Pythonを簡単にdll化できないか?出来ないならMQLと簡単に連携できる方法はないか?」です。

もしご存知の方がいましたらお手数ですがご連絡ください。

 

最後に

マーケットの環境認識を真剣に考えていくと、チャートの形状や大きな指標の状況分析だけではなく、SNSの解析も必須なのではないかと思います。

SNS解析も加味したバックテストはとても難しそうなので、今後の課題です。

現時点では、ポジティブ/ネガティブのモデルを作成してリアル口座で動かしながらジャッジしていく方法しか思いつきません。

 

FXの自動売買に興味がある方は以下もご覧ください。