LoginSignup
18
29

More than 5 years have passed since last update.

3つの分析手法、勝手にまとめてみた

Last updated at Posted at 2018-12-11

お前だれ

都内某T大学部4年、機械学習・統計手法でバイオインフォマ、ケモインフォマでケモケモしたりFinTechしようとしているSmartTrade社インターンのRic.です。

今回の内容は主にQuantX Factory ユーザー向けですが、
それ以外の方にも参考になる内容かと思います。

「QuantX Factoryってなんだよ」って方はこちら

URL:QuantX Factoryホームページ

注意

めちゃめちゃ長いです、必要な所だけ虫食いしてください。
(「概要だけ見たい!」って方はまとめの方へどうぞ!)

三大分析手法

金融における値動きの分析手法は様々ありますが自分が知っている範囲では
三つの分析手法に分けられます。それが以下3つ

  1. テクニカル分析
  2. ファンダメンタル分析
  3. センチメント分析

それぞれ素人なりに内容や数理的な話はひとまず、

「どうやったら上手く使えそうか?」

と言うのをメインにまとめてみます。

1.テクニカル分析

着眼点と種類

株価などの

"値動きやその推移のチャート"

に注目し分析する手法、具体的な指標としてにはRSIや移動平均線、MACDなどがあり
それぞれテクニカル分析の中でも以下のように分けられます。

  1. トレンド系指標 → 相場の方向性(トレンド)・中長期の動向
  2. オシレーター系指標 → 相場の勢い・反転

それぞれのテクニカル分析の実装・コードに関しては今後の記事にて公開していく予定ですので、そちらを是非ご覧ください。

実装について

個人的には割と一番とっつきやすいと感じていて
何故ならば、RSIや移動平均線・MACDなどの指標は"TA-Lib"と言うライブラリで簡単に実装できてしまうからです。

実際の実装のために重要なコードは以下(本当は前処理とかありますが)

TA-Lib.py
rsi_S[sym] = ta.RSI(cp[sym].values.astype(np.double), timeperiod=9)
#期間9日間のRSI、ta.RSI(...)ってとこがキモ
sma5 = ta.SMA(buy_1min_s.close, timeperiod=5)
#5日間の移動平均線(Simple Moving Average)、ta.SMA(...)ってとこがキモ
upper, middle, lower = ta.BBANDS(buy_1min_s.close, timeperiod=5)
#5日間のボリンジャーバンド、ta.BBANDS(...)ってとこがキモ

みてもらえば分かるように実装に関してはそれほど多くのコーディングを必要とする訳ではありません。

最初はTA-Libで実装していきコーディングの感覚を捉えてからより複雑な指標に挑戦と言うのがいいかと思います。

単体で優秀な指標もいくつも有りますが、注意しなければならないのは

"それぞれの指標にも得意・不得意がある"

と言うことです。
それぞれ特有の上手く使うためにはそれぞれの
得意不得意を鑑みて組み合わせる事が重要でしょう。

2.ファンダメンタル分析

着眼点と種類

企業や株などの

"財務状況・業績などから出す本来の価値"

に注目し分析・株価が割高か割安か、その企業が成長性・安定性・収益性を持つか判断する手法、具体的な指標としてにはROEやROA・EPS・PERなどがあり取引のタイミングだけでなく取引する銘柄を選定(割とこれがQuantX Factoryでは重要?)する際にも用います。

それぞれ個人的にアツいと思っている順に軽く紹介していきます。

・EPS(アツい)
$EPS = {\frac{当期純利益}{発行済株式総数}\times100}$

一株あたりの当期純利益、これも理論株価の計算に用いました。
またこれの経年推移によって企業の成長性の判断できるようです。

・ROE(アツい)
$ROE = {\frac{当期純利益}{株主資本率}}$

但し

$株主資本率 = {\frac{株主資本}{株主資本+他人資本}}$

簡単に言ってしまうと
「株主からの投資資本をどれだけ効率よく利益に繋げているか。」
のことです。

・配当性向(アツい)[%]
$配当性向 = {\frac{一株あたりの配当額}{EPS}\times100}$

当期純利益のうち配当金がどれ位支払われているかを百分率で表したもの
これは後ほど触れる理論株価(これがアツい)の計算に用いました。

・BPS(アツいらしい)
$BPS = {\frac{株主資本}{発行済株式総数}}$

又は

$BPS = {\frac{株価}{PBR}}$

一株あたりの株主資産、これも理論株価の計算に用いたりします。
安定性を測ることもでき、これが高いと企業の安定性が高いと言える。
(一株を支える資産が大きい)

・PBR
$PBR = {\frac{株価}{BPS}}$

株価の一株あたりの株主資本に対して倍率のことで、これが1(倍)以下だと株主資本にしては割安でお得!投資価値アリ!
(この値は倒産しそうな時も下がるので注意)

・PER
$PER = {\frac{株価}{EPS}}$

株価の一株あたりの当期純利益に対して倍率のことで、これが15(倍)以下だと純利益にしては割安でお得!投資価値アリ!
(この値は倒産しそうな時も下がるので注意)

・理論株価
(実勢)株価に対して利益性や、企業の人気などを加味して
理論的に株価を推測したもの。
様々な雑誌や四季報、サイトがそれぞれの計算式を公開しているためどれがベストと言うものはない。

近々この理論株価を用いて作成したトレードアルゴリズムを公開・解説する予定です。
ファンダメンタルデータいじってみた 〜RSI長期短期を添えて〜

実装について

テクニカル分析に比べると…
やはり大きなハードルになるのは下の二つ

  • 四季報やサイトから以上データを集める必要あり (株価はQuantX Factoryに有り)
  • 株価と違い四半期ごとで公開のものも、短期取引には…

ここで我らがロイター社登場(ダイレクトマーケティング)

この大きなハードルの一つ目をマルッと解決してくれるのが

"ロイター社提供ファンダメンタルデータ"

以上の多くのデータが揃っている上に手軽にそのデータを使うことができるのです。
(QuantX Factoryでは2019/3あたりまで?願わくばずっと使わせて欲しい)

もう一つのハードルに関しては自分が解決?します。

ロイター社提供のデータを引っ張ってくる (使えるデータはこちら)
引っ張り方としては

reauter.py
def initialize(ctx):
    # 設定
    ctx.logger.debug("initialize() called")
    ctx.configure(
      channels={          # 利用チャンネル
        "jp.stock": {
          "symbols": [
            #"jp.stock.9508", #九州電力
            "jp.stock.3401", #帝人
            #"jp.stock.4587", #ペプチドリーム
          ],
          "columns": [
            "close_price",        # 終値
            "close_price_adj",    # 終値(株式分割調整後) 
            "roe",                #自己資本利益率
            "per",                #株価収益率
            "pbr",                #株価純資産倍率
            "divident_payout",     #配当性向
            "eps",                 #一株あたりの純利益
            "net_income",          #当期純利益
            "capital_to_asset_ratio",  #株主資本比率

          ]
        }
      }
    )

こんな感じで"columns"のところに使いたいデータを入れましょう、これだけで以下の様に四半期のデータを引っ張って来てくれます!(以下の様なデータの可視化はreturnの所でやりましょう)

スクリーンショット 2018-12-07 15.39.45.png

四半期ごとのデータだと短期中期取引は…(第二のハードル)
確かに上のグラフを見るとそんな感じがしますし…
短期間で見てみると…ほぼ直線で使えなさそうです…
(ポートフォリオを組む際には重要です)

スクリーンショット 2018-12-07 16.15.16.png

しかし自分が思いつく短期中期取引での活用方法が二つほど有りますので紹介させて頂きます。

1.短期中期のテクニカル分析と組み合わせて用いる
今回はテクニカル分析とファンダメンタル分析を分けて説明していますがテクニカル分析にファンダメンタル分析を補助として噛ませることです。

例えば理論株価とRSIの組み合わせの条件が以下の様

RSI&TheoSto.py
        df_buy = rsi_S[(rsi_L < 36) & (ratio_pct > 0.8) | (rsi_S < 12)]
        df_sell = rsi_S[(rsi_L > 64) | (ratio_pct < 0.001) & (ratio_pct > -0.001) |(rsi_S > 88)]

ratio_pctはファンダメンタルデータから計算されたものです。

2.計算で式の中に日足(1日ごとに変わる)データを混ぜる
何を言っているか分からんと言う方もいるかと思いますので実例で説明いたします

これは先ほどのratio_pctを計算するのに必要なTheo_st (理論株価)と言うものの計算式です。

Theo_st.py
for (sym,val) in cp.items():
        discount_rate[sym] = (div[sym]*eps[sym]/cp[sym]) + roe[sym]*(1-div[sym])
        Theo_st[sym] = (div[sym]*eps[sym])/discount_rate[sym] - roe[sym]*(1-div[sym])
        '''
        ここでcp[sym]はその日の株価の終値(close_price)で、日ごとに変動する。
        但し
        割引率 = (配当性向*一株あたりの当期純利益/株価) + 自己資本利益率(1-配当性向)
        理論株価 = (配当性向*一株あたりの当期純利益)/割引率 - 自己資本利益率(1-配当性向)
        '''

この様にすることで

スクリーンショット 2018-12-11 11.03.12.png
スクリーンショット 2018-12-11 11.03.59.png

短期であれば

  • Theory_stockA(Theory_stockのA日移動平均線)
  • Theory_stockAから計算したratio_pct

は日毎に動いておりファンダメンタルデータを加味した株価の動きを扱える様になっています。この様に日毎のデータを噛ませることで日足の動きにファンダメンタルデータを潜ませることができます。

このアルゴリズムは理論株価の説明とともに近日公開予定です

3.センチメント分析

着眼点と種類

企業や株などに対しての

"投資家の感情や評価"

に注目しSNSや各種メディアの文章などを分析することで投資家の動きを予想、取引を優位にする分析のことです。

代表的な物としては以下のものがあります。

・楽観、喜び、恐怖、信頼、論争、怒り

メディアの種別としてSNS、ニュースメディア等があるようですが

  • SNS → 仮想通貨の動きに敏感
  • ニュースメディア → 株や為替の動きに敏感

という特徴があるようです、これも示唆に富んだ特徴です。

実装について

正直な所、ハードルの高さはこれが

"一番高い"

です。一般個人ではこのセンチメントデータはまず手に入りません。
もし手に入れようとするならば…

「Webスクレイピングして…その文章を機械学習やら形態素解析でネガティブポジティブ判断して…それをリアルタイムで…」

無理ィ!!

そこで助けてくれるのが、またまたダイレクトマーケティング
(自分はロイター社の人じゃないです)

我らがロイター社登場

ロイター社では先述したファンダメンタルデータだけでなく、これらのセンチメントデータも取り揃えています。(株取引じゃなくても活用できそう)
実際に使えるデータ集はこちら

実際の実装に関してはこちらの記事に詳細がありますので是非是非

センチメントデータいじってみた 〜やらかし企業を添えて〜

まとめ

ここまで長々と書いてしまいましたがここまでの内容と詳細を表にまとめると

テクニカル分析

着目点 分析系 代表例 出来ること
値動き・チャート オシレーター系 RSI
  • 相場の過熱感・勢いを測る
  • 相場の反転を読む、逆張り
ストキャスティクス
モメンタム etc..
トレンド系 移動平均線
  • 相場の方向性
  • 相場の中長期の動き
DMI
ボリンジャーバンド etc..

ファンダメンタル分析

着目点 基準 指標の代表例
企業業績・財務状況 安定性 自己資本比率
流動比率・手元流動性 etc...
成長性 EPSの推移
キャッシュフロー etc...
収益性 ROE
ROA etc...
株価が割高か割安か PBR:1倍以下で割安
PER:15倍以下で割安
理論株価:実勢株価と比較

センチメント分析:個人的に面白いシリーズ

着目点 感情・指標 活用法?
投資家の感情 サイバー犯罪への言及: ns_cybercrime 銘柄を情報セキュリティ系とデータベース系の会社で組ませたい
ファンダメンタル: ns_fundamentalstrength これでファンダメンタル分析の強化?
配当の増減への言及: ns_dividents ファンダメンタルの配当利回りとか配当性向の調整係数に?
感情vs事実: ns_emotionvsfact 感情が勝っている時はテクニカル分析などに従わない可能性を示唆?
アナリスト格付け: ns_analystrating 理論(目標)株価の係数にできそう?
利益予想: ns_earningforecast

終わりに

今回は金融素人の自分が色々調べて三つの手法をまとめてみました。
間違っている点等ありましたら御指摘くださると幸いです。

宣伝

勉強会やってるよ

日時:毎週金曜日19時〜
場所:神田 千代田共同ビル4階 SmartTrade社オフィス
内容:初心者(プログラミングってものを知らなくてもOK)向けに初心者(私とか)がこんな内容をハンズオン(一緒にやる事)で解説しています
備考:猛者の方も是非御鞭撻にいらして下さい、そして開発・伝導者になりましょう

もくもく会もやってるよ

日時:毎週水曜日18時〜
場所:神田 千代田共同ビル4階 SmartTrade社オフィス
内容:基本黙々と自習しながら猛者の方に質問して強くなっていく会
備考:お菓子と終わりにお酒が出るよ

詳細はこちらだよ

Pythonアルゴリズム勉強会HP:https://python-algo.connpass.com/
(conpassって言うイベントサイトに飛びます)

免責注意事項

このコード・知識を使った実際の取引で生じた損益に関しては一切の責任を負いかねますので御了承下さい。

18
29
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
29