2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

📈そろそろ来るかも?株&投資信託の“兆し”を分析して自動ポストする仕組みを作った話 - その6(RSI)

Posted at

1.はじめに

どうも、趣味でデータ分析している猫背なエンジニアです。
今回は、前回に引き続き兆しシリーズのロジックについて考えたので記録していきます。

2. RSI(Relative Strength Index : 相対力指数)

■ 概要
以前の記事で以下のような画像のスクリーニング1号機を作り内部ロジックで「ボリンジャーバンド」を入れましたが、今回は「RSI」というロジックも試しに入れてみようと思っています。

■ RSI
RSI(相対力指数)は、オシレーター系のテクニカル指標の代表で、人気ある指標の一つ。数多くのテクニカル指標を生み出したJ.W.ワイルダー(米国)が考案し、現在の相場の相対的な強弱(過熱感)を表す指標。
特徴としてボックス相場が続いているときの的中率は高いものの、上下に強いトレンドが出ると、売買シグナルが出ていたとしても、トレンドの勢いが止まらずに、結局ダマシに終わることがある。

$$
\mathrm{RSI} = 100 - \frac{100}{1 + RS}
$$

※ RSは以下の式で示す。
$$
RS = \frac{\text{Average Gain}}{\text{Average Loss}}
$$

■ コーディング
以下のようにRSIを実装しました。買いシグナルがあるものをピックアップする式にしているので、一般的なソースとは別かもしれません。

RSI
def screen_rsi(df):
    df = df.copy()

    diff = df["Close"].diff()
    gain = diff.where(diff > 0, 0)
    loss = -diff.where(diff < 0, 0)
    df["RSI"] = 100 - 100 / (1 + gain.rolling(14).mean() / loss.rolling(14).mean())

    last = df.iloc[-1]
    # --- 買いシグナル ---
    rsi_flag = False
    if last["RSI"] < 30:
        rsi_flag = True

    return rsi_flag

■ 実行結果
SMA乖離率のスクリーニングの際に1/10まで削れて、そこからさらにボリンジャーバンドを通過、残りをRSIで抽出していることから、スクリーニング率はあまり高くないですが、10銘柄ほど削れていることがわかります。

4.おわりに

今回は兆しシリーズのKK-FinancialEaterの一号機を進めていきました。前回に引き続きスクリーニングできていることが確認できますね。
今回作成したRSIに関してですが、種別として、テクニカル分析の中のオシレータ分析に該当するもので、1号機とはまた別の方法かもしれないと思いだしました。
近いうちに2号機に移そうと思いますが、とりあえずはこのまま運用を続けたいと思います。

📈 KK-FinancialEater

■ 原点(KK-Adam)
■ その1:プロトタイプ編
■ その2:収集器強化編
■ その3-番外編:グランビルの法則 - 設計編
■ その3:グランビルの法則
■ その4:移動平均乖離率
■ その5:ボリンジャーバンド

参考文献

2
0
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?