見出し画像

楽天証券の実現損益データをPythonでグラフ化

今回は、楽天証券の実現損益データをグラフにしてみました。

実現損益とは、保有する株式などを売却したり決済したりして確定する損益のことを意味します。それまでは含み損益と呼び、現金化されることでその損益を確定することになります。

つまり、実現損益を確認することで、自分が今まで得をしたのか、損をしたのかがわかります。

いわば自分の通知表です。

過去の成績を振り返り、同じミスをしないよう、今後の投資に活かしていきましょう。

csvファイルの取得

まずは楽天証券から実現損益のデータ(csvファイル)を取得します。

楽天証券にログインし、口座管理→損益・税金履歴→実現損益を開きます。

以下のような画面が表示されたら、画面右下の「CSV形式で保存」をクリックして保存します。

画像1

以下のように、楽天証券から実現損益のcsvファイルを取得することができました。(見にくいですが、99%損してます。)

画像2

※csvファイルの注意点

楽天証券から持ってくるcsvファイルですが、実は「銘柄コード」以外のすべてのデータ型が「object型」となっています。(dtypesでデータ型を確認)

画像3

データ型に関しては、以下の記事をご覧ください。

このままだと計算ができないので、「object型」を「int型」に変換する必要があります。

Pythonを使って型を変換しましょう。

と言いたいところでしたが、私にはどうしてもできませんでした。
ということで、今回はスプレッドシートで直接「int型」に変換するという苦肉の策をとりました。

スプレッドシートでファイルを開き、表示形式を「自動」にします。

画像4

これで「object型」を「int型」に変換することができました。

今後の課題ですね。

「こうすればできるよ!」という心優しい方がおられましたら、教えていただけたら幸いです。

作成の手順

それではcsvファイルを読み込み、実現損益をグラフ化していきましょう。

完成したコードはこちら。

from google.colab import drive
drive.mount('/content/drive')

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv('drive/My Drive/csv/rakuten-int.csv', encoding='utf-8')

df.head()

df.dtypes

df['実現損益[円]'].cumsum().plot(figsize=(8,6),fontsize=18)
plt.xlabel("Number of transactions",size="12")
plt.ylabel("Realized profit/loss",size="12")
plt.grid(True)
plt.show()

まず初めに、csvファイルをGoogle Colabで読み込めるようにします。

しかし、Google Colabはインターネット上で実行するため、csvファイルの読み込みには工夫が必要です。

以下のコードを実行しましょう。

from google.colab import drive
drive.mount('/content/drive')

「count」ディレクトリ以下の「drive」というフォルダに、Google Driveをマウントするという意味です。

Google Driveのファイルはここで指定したフォルダ「drive」以下の、「drive/My Drive」フォルダに格納されます。

このコードを実行すると認証URLが出てくるので、以下の記事の通り、アップデートまで進めてください。

import pandas as pd
import matplotlib.pyplot as plt

アップデートまで終わったら、csvファイルを読み込むために、pandasとmatplotlibをインポートします。

df = pd.read_csv('drive/My Drive/csv/rakuten-int.csv', encoding='utf-8
')

dfにcsvファイルを代入します。

read_csv:csvファイルを読み込む際に使用

'drive/My Drive/csv/rakuten-int.csv':csvファイルまでの相対パス

encoding=’utf-8’:文字コード

楽天証券から持ってきたcsvファイルは文字コードに問題?があるため、エラーが発生します。

相対パスの後に必ず「encoding=’utf-8’」を記入しましょう。

詳しくは以下の記事をご確認ください。

df.head()

データが取得できたか確認します。

画像5

df['実現損益[円]'].cumsum().plot(figsize=(8,6),fontsize=18)
plt.xlabel("Number of transactions",size="12")
plt.ylabel("Realized profit/loss",size="12")
plt.grid(True)
plt.show()

実現損益のデータをグラフ化します。

df['実現損益[円]']:dfの中の['実現損益[円]']

cumsum():累積和(数列に対して、最初の項からn番目の項まで足したもの)
例えば、日々の売上データからその日までの累計の売上データを出すような計算です。

plt.xlabel("Number of transactions",size="12")
x軸のラベルをプロットします。

Number of transactons:x軸の名前(日本語で「取引回数」)
size:フォントサイズ

plt.ylabel("Realized profit/loss",size="12")
y軸のラベルをプロットします。

Realized profit/loss:y軸の名前(日本語で「実現損益」)

軸のラベルが英語表記なのですが、日本語表記にすると文字化けします。
本当は日本語表記にしたかったのですが、長くなりそうなのでまた別の機会にします。

plt.grid(True):グリッド(格子)をグラフに表示する
plt.show():作ったグラフを画面に表示する

ここまでの実行結果がこちらです。

画像6

実現損益のデータをグラフにすることができました。

見事なWボトムからのジリ貧です。
グラフで可視化すると非常にわかりやすいですね。

一時はマイナス20万円近くまで行きましたが、急激に取り戻してプラス15万円近くまで回復し、調子に乗って結局マイナスで終わりました。

ちなみに、最終の実現損益は−5,091円です。(2020年4月30日でいったん終了)

1年間かけて資産をおよそ5,000円失いました。

勉強代と思えば安いものですね。

今後の課題

・Pythonを使って「object型」を「int型」へ変換する
・軸のラベルを日本語表記にする
・実現損益を±0以上にする

もっとPythonのスキルをつけて、詳細な分析ができるようにしたいですね。

そして、恥ずかしくない取引データがお見せできるように、資産運用も引き続き頑張ります。

この記事が気に入ったらサポートをしてみませんか?