見出し画像

米株プログラミング[1-3](レーダーチャート編)

米株プログラミングサークルの皆様!こんにちわトミィ(@toushi_tommy)です。!チャート作成の続きを行いたいと思います。今回は、レーダーチャートを使いたいと思います。また、ここではさらに、株価のみでなく、毎日の動きの上昇率、下落率を簡単に取ってくる方法もお伝えいたします。

前回の課題が終わってない方はこちらをどうぞ

サークルは無料で運営しております。記事内容も無料です。トミィにジュースでもおごってあげようと思った方は投げ銭いただけると、今後の運営の励みになります。

GoogleColab立ち上げ

GoogleColabを立ち上げます。

新規作成の場合は、再マウントが必要になりますが、一度マウントが終わったファイルを「ファイル」から「ノートブックを開く」で開くとそのまま使えるようです。「+コード」でコードを追加してお使いください。

画像3

レーダーチャートとは

レーダーチャートとは、複数の項目の大きさを一見して比較することのできるグラフです。私はセクターがどこが上昇、下落しているかを一度に比較する為に使ってます。このような感じですね。


画像2

これができれば、自分がウォッチしている銘柄を一気にチャートで比較できます。それでは、まずはコードをお見せします。

レーダーチャート作成

プログラミングは以下の通りです。

import sys
sys.path.append('/content/drive/MyDrive/module')
import datetime as datetime
import matplotlib.pyplot as plt
import pandas as pd
import yahoo_fin.stock_info as si
import numpy as np

tickers = ['VCR','VDE','VPU','VOX','VFH','VDC','VAW','VIS','VHT','VGT']
df = pd.DataFrame()
for i in range(0,len(tickers),1):
 data = si.get_data(tickers[i])['adjclose']
 df=pd.concat([df, data], axis=1)
 df.rename(columns={'adjclose': tickers[i]}, inplace=True)

values = np.array(df.pct_change().iloc[-1]*100)
# 上限、下限リミットの設定 デフォルトは+3%から-3%
lim_max = values.max() if 3 < values.max() else 3
lim_min = values.min() if -3 > values.min() else -3

radar_values = np.concatenate([values, [values[0]]]) # 多角形を閉じる
angles = np.linspace(0, 2 * np.pi, len(tickers) + 1, endpoint=True) # プロット角度を生成
fig = plt.figure(facecolor="w")
ax = fig.add_subplot(1, 1, 1, polar=True)
ax.plot(angles, [0] * len(radar_values), color='red', alpha=0.8, linewidth=0.8) # 0を引く
ax.plot(angles, radar_values) # 線を引く
ax.fill(angles, radar_values, alpha=0.2) # 内側を塗る
ax.set_thetagrids(angles[:-1] * 180 / np.pi, tickers) # ラベル表示
plt.ylim(lim_min,lim_max) # 上限下限リミット
plt.show()

出力はこのようになります。

画像3

下記の部分は差分の計算になります。

df.pct_change().iloc[-1]*100

この部分は取得した株価の差分pct_change()で取り、その最新部分(最新の株価の上昇率) loc[-1]に100をかけてパーセントにしております。ちなみに、pct_change()は標準で前日との差分になりますので、一週間前との差分は pct_change(5)(5日ですが、土日はデータがないので、7にはなりません)になります。

以下の課題をお願いいたします。共有できる場合は是非discordの #課題提出等 へシェアをお願いいたします。

課題①

1週間の差分チャートや1ヶ月の差分チャートを見てみましょう。pct_changeのカッコの中が差分の数になります。

課題②

インデックス指数を確認しましょう。インデックスのティッカーは以下の通りです。
ダウ:^DJI、ラッセル:^RUT、S&P500:^GSPC、ナスダック:^IXIC

tickers = ['^DJI','^RUT','^GSPC','^IXIC']

このようなサンプルになると思います。また、自分がウォッチしているティッカーに変更したり、時期を変更したりしてみてください。現状MAX、MINは+/-3%になっておりますので、期間に応じて変更してみてください。この部分になります。

lim_max = values.max() if lim_max < values.max() else +3
lim_min = values.min() if lim_min > values.min() else -3

マニュアル参考

matplotlibドキュメント

本日は以上です。次の課題は円グラフ、棒グラフ作成になります。こちらをどうぞ。

ここから先は

0字

¥ 100

サポートいただけますと、うれしいです。より良い記事を書く励みになります!