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?

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

Last updated at Posted at 2025-12-14

1.はじめに

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

2. グランビルの法則

■ 概要
以前の記事で以下のような画像のスクリーニング1号機を作り内部ロジックで「グランビルの法則」を入れましたが、今回は「移動平均乖離率」というロジックも試しに入れてみようと思っています。

■ 移動平均乖離率
現在の価格が移動平均線からどれぐらい離れているかをパーセンテージ(%)で表したもの。移動平均線は価格の動きの慣性を引き出したものであり、移動平均線に対して価格が離れすぎた乖離率の拡大は価格が上下に行きすぎた状態なので、価格は移動平均線の慣性力に引き戻され、これを修正する動きをし、この考えに基づくのが移動平均乖離率。よって、価格の天底を判断し、そろそろ相場が反転すること予想し、主に逆張り投資に使われる手法です。

$$ (C_t​<SMA75_t)∧(\frac{C_t - SMA25_t​​}{SMA25_t}​​×100<−5)$$

■ コーディング
実際に移動平均乖離率を実装してみました。シンプルに実装したつもりですが、果たして性能はどうでしょうか....。

移動平均乖離率
def screen_sma(df):
    df = df.copy()
    # SMA
    df['SMA25'] = df['Close'].rolling(window=25).mean()
    df['SMA75'] = df['Close'].rolling(window=75).mean()
    df['Bias25'] = (df["Close"] - df["SMA25"]) / df["SMA25"] * 100

    # 最新足で判定
    last = df.iloc[-1]

    SMA_flag = False
    # --- 買いシグナル ---
    SMA_flag = False
    if last["Close"] < last["SMA75"] and last["Bias25"] < -5:
        SMA_flag= True

    return SMA_flag

■ 実行結果
今回のスクリーニングでは、だいぶカットする結果になりました...。
私自身SMA乖離がここまで効果的とは思っていませんでした。
逆にカットしすぎてあってるか不安になってきましたが、とりあえずは目をつぶります😇

4.おわりに

今回は兆しシリーズのKK-FinancialEaterの一号機を進めていきました。まさか今回のスクリーニングでは、ここまで効果がでるとは思いませんでした。
制御できるにはまだまだ勉強不足が見える本プロジェクトですが、温かい目で見てもらったらいいと思います。

📈 KK-FinancialEater

■ 原点(KK-Adam)
■ その1:プロトタイプ編
■ その2:収集器強化編
■ その3-番外編:グランビルの法則 - 設計編
■ その3:グランビルの法則

参考文献

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?