LoginSignup
1
2

More than 3 years have passed since last update.

【システムトレード】pythonでStochastic Oscillatorをdecomposeして遊んでみた♬

Last updated at Posted at 2020-06-06

Stochastic OscillatorにNoise除去の目的でDecomposeすることにより、より長周期での変動から買目を読むことを試みる。
バックテストをするまでもなく、このアップダウンの株価は買目、売目は明らかだ。
【参考】
【システムトレード入門】pythonでstcを描いて遊んでみた♬
【要素分解入門】時系列解析の手法をRとpythonで並べてみる♬

やったこと

・Decomposeを組み込む
・結果はどうなのよ

・Decomposeを組み込む

組み込みは以下のとおり
利用するLibは参考②のとおり、なお、参考①の重複コードは省略します。

...
import matplotlib.pyplot as plt
...
import statsmodels.api as sm
from statsmodels.tsa.seasonal import STL

def...

データ取得は以下のとおりですが、series = ...を定義してDecomposeの準備をします。

stock = '6758.JP' #sony6758 Jal 9201 三井住友フィナンシャル 8316 docomo9437
start = dt.date(2020,1,1)
end = dt.date(2020,6,5)
df = pd.DataFrame(get_stock(stock, start, end))
series = df['Close']
print(series)

そしていよいよDecomposeします。
様子をグラフにプロットします。

cycle, trend = sm.tsa.filters.hpfilter(series, 144)
fig, ax = plt.subplots(3,1)
ax[0].plot(series)
ax[0].set_title('close')
ax[1].plot(trend)
ax[1].set_title('Trend')
ax[2].plot(cycle)
ax[2].set_title('Cycle')
plt.savefig("./stock/close_%K%D_{}_now.png".format(stock))
plt.pause(1)
plt.close()

結果は以下のとおり、見事にTrendデータがノイズ除去されて描かれました。特徴として、やはりObservedのTrendからの乖離Deviationは株価が激減したときに大きくなっています。ボラが大きいと言えます。
※元記事からCycleと名乗っていましたが乖離(Deviation)に変更しました
close_%K%D_6758.JP_now.png
そして、Noise除去されたTrendをdf['Close']に戻してやります。

df['Close']=trend

これをHighとLowについても実施してやると以下のようなグラフが得られます。High,Low,Closeがちゃんと分離して見えます。
All_%K%D_6758.JP_now.png
そして前回と同じコードで、こうして得られたデータで%K,%Dを計算し、描画します。

df['%K'] = STOK(df['Close'], df['Low'], df['High'], 14)
df['%D'] = STOD(df['Close'], df['Low'], df['High'], 14)

グラフは以下のように凄くシンプルなのが得られました。
これだと、流石に買い間違い、売り間違いはなさそうです。
6758Sony;買い過ぎリスク領域、リスク領域なので購入を控える
stc_%K%D_6758.JP_now.png

・結果はどうなのよ

どれもシンプルになりました!
当たり前ですが、これだと間違えずに売買出来そうです。
8316三井住友フィナンシャル;上げ過ぎ領域、あと少しで売場面?
stc_%K%D_8316.JP_now.png
9201日本航空;上げ過ぎリスク領域、あと少しで売場面?
stc_%K%D_9201.JP_now.png
9437NTTドコモ;下げ過ぎリスク領域、そろそろ買場面?
stc_%K%D_9437.JP_now.png

まとめ

・decompose関数でStochastic OscillatorのNoise除去を実施してみた
・グラフは単調な変化になり、売買が簡単になった

・実際、適用してみよう
・分足など短期売買に適用してみよう
・全銘柄に自動適用して買時、売時指数を指標化してみよう

おまけ

・短期売買

逆に日々のアップダウンを利用した短期売買はDeviationを利用すればできそうなのでやってみた。
やってみると以下のとおりになりました。
こちらは細かいのと、High、Low,Closeの値が本当にその上下関係になっているか(%K,%Dが0-100の範囲を上下に超えているので保証されていないようです)怪しく、それでもやってみる価値はありますが、得られたチャートから取引やってどうなのっていうのは、保証の限りではありません。
6758の結果
cycle_stc_%K%D_6758.JP_now.png
9437の結果
cycle_stc_%K%D_9437.JP_now.png

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