いろいろな株の売買の方法が提案されています。

例えば、以下はある本で紹介されていたものを単純化したものです。

買いのタイミング
株価の75日移動平均線が上を向いていて、株価が75日移動平均線を下から上に抜けるとき。

売りのタイミング
株価が75日移動平均線を上から下に抜けるとき。

 
このブログは、上の方法を東証COREの30銘柄のデータすべてに試してみたときの覚書になります。

コードは、Pythonで、Jupyter notebook で順番に実行していくという想定です。

移動平均を求める関数を作る

75日移動平均線とは、今から過去75日までの株価の平均を、「今」の時間でプロットして作られる線です。

以下は、日数を引数として移動平均線を求める関数を作り、ChatGPTにリファクタリングしてもらってできたコードです。作る過程はこちらのブログに詳細を書きました。

株価の人工データを生成する関数を作る

はじめから実データを使うより、小さい人工データを作ってプログラムを確かめながら進めた方が効率的ですので、人工データ生成関数を作りました。

ランダムウォークを仮定して作っています。いい感じですね。

株価売買アルゴリズムを作る

では、株価売買アルゴリズムを実装していきます。

小さい人工データを作る

まず、人工データを準備します。

2日間の移動平均を求めて、先ほどのグラフに重ねる

実際には75日間の移動平均を使いますが、プログラムが正しいことを確かめやすいように、まず2日間の移動平均でアルゴリズムを作ります。

今の株価と一つ前の日の株価の平均が、正しくオレンジのグラフで表されていることがわかります。

メインの売買シミュレーションを作る

では、アルゴリズムの実装です。ルールを再掲します。

買いのタイミング
株価の75日移動平均線が上を向いていて、株価が75日移動平均線を下から上に抜けるとき。
売りのタイミング
株価が75日移動平均線を上から下に抜けるとき。

以下のように出力されます。

結果をグラフ表示します。

株価(青)が平均線(オレンジ)を越えた時に、株を買い(赤丸)、株価が平均線よりも下がったら株を売ります(青)。
株を売った時に、買った時との差額でお財布(Wallets)の中身が変わります。

赤と青を結んだ黄色の線が上向きだと儲けが出て、下向きだと損をしていることになります。この例ですと、3回の取引をしていて、初めの2回で損をして、3回目に少し得をするという結果になっています。

関数化する

ここまでの処理を関数にして、複数のデータを一度に処理する準備をします。

実際の株価のデータでテストする

前のブログで作った東証Coreの30銘柄データをまとめたall_close.xls を使います。

株価データの読み込み

銘柄の一つ”c5″(リクルートホールディングス)に対して、売買のアルゴリズムを試してみます。

c5 (リクルートホールディングス)のデータに、実際の手順で指示されている75日移動平均を使いました。売買のチャンスはめったにこないですね。この場合ですと、200日の間に、買って売れたのは1回だけ、そこで損をしています。

30銘柄で試す

では、30銘柄のデータすべてに同じアルゴリズムで売買してみて、どれくらい稼げるのかを見てみます。

上のグラフの各プロットが、各30銘柄の結果になります。横軸が稼いだ金額、縦軸が売買をした回数です。

儲けが出ている銘柄もありますが、多くは損をしています。平均が-39.22、中央値が-20.15でした。

うーん、やはり簡単にはいきませんね。

しかし、株は、売買のアルゴリズムを過去の実データで簡単に検証できるののがとても良いですね。