1.はじめに
どうも、趣味でデータ分析している猫背なエンジニアです。
初コロナになりました。親友というか彼女というか婚約者がいてすごく安心しています。
そんなこんなもあり、今回の記事は短めに行きたいと思います...(´;ω;`)
今回は、前回に引き続き兆しシリーズの番外編として次のロジックについて考えたので記録していきます。
2. グランビルの法則
■ 概要
以前の記事で以下のような画像のスクリーニング1号機を作り内部ロジックで「デッドクロス抽出」のみロジック内に入れていましたが、次回までに「グランビルの法則」というロジックも試しに入れてみようと思っています。
■ グランビルの法則
「グランビルの法則 (Granville’s Rule)」は、米国の投資アナリスト ジョセフ・E・グランビル が考案した、移動平均線と株価の関係から売買のタイミングを判断する手法です。
基本の考え方としては以下3つからなっています。
1.移動平均線(MA)は株価のトレンドを示す指標。
2.株価とMAの位置関係、そしてMAの傾きから売買シグナルを読み取る。
3.「上昇局面で買い」「下降局面で売り」を4パターンずつ、合計 8つのルール で整理。
■ コーディング
未完成ながら基本の基本をコーディングしたものをのっけておきます。今後はこれをもとスクリーニング強化を目指していければと思います。
def screen_granville(df, window=25):
df = df.copy()
df['MA'] = df['Close'].rolling(window=window).mean()
df['Granville_Signal'] = np.nan # 新しい列に格納
for i in range(1, len(df)):
price = df['Close'].iloc[i]
prev_price = df['Close'].iloc[i-1]
ma = df['MA'].iloc[i]
prev_ma = df['MA'].iloc[i-1]
signal = None
# --- 買いシグナル ---
if prev_price < prev_ma and price > ma:
signal = "買い①: 下から上抜け"
elif price > ma and prev_price > prev_ma and price < ma * 1.01:
signal = "買い②: 押し目"
elif prev_ma < ma and price < ma:
signal = "買い③: 一時的な割り込み"
elif price < ma * 0.95:
signal = "買い④: 乖離しすぎ"
# --- 売りシグナル ---
elif prev_price > prev_ma and price < ma:
signal = "売り⑤: 上から下抜け"
elif price < ma and prev_price < prev_ma and price > ma * 0.99:
signal = "売り⑥: 戻り売り"
elif prev_ma > ma and price > ma:
signal = "売り⑦: 一時的な上抜け"
elif price > ma * 1.05:
signal = "売り⑧: 乖離しすぎ"
df.at[i, 'Granville_Signal'] = signal
return df
4.おわりに
今回は兆しシリーズのKK-FinancialEaterの一号機番外編を進めていきました。コロナがきつすぎてまともなコーディングできないの悔しいのでまた今度落ち着いたときに実施していきたいと思います。
📈 兆しシリーズ
■ 原点(KK-Adam)
■ KK-FinancialEater
〇プロトタイプ編
〇収集器強化編
参考文献