3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

QuantX Factory、pandasチュートリアル1

Last updated at Posted at 2019-07-09

この記事について

QuantX Factoryにてシステムトレードアルゴリズムを開発したい人向けのチュートリアルです。必要となるpandas知識を絞り込み、最短経路でシステムトレードアルゴリズムを作成できるようになることを目的とした記事となっています。
pandasの基礎を網羅的に知りたい方は、他の方のpandasまとめ記事をご覧ください。

QuantX Factoryとは

smart trade社が無料で提供しているシステムトレードアルゴリズムをブラウザ上でpythonを使って開発できるプラットフォーム。

以下の理由から、pythonで株価予測をやってみたい人におすすめです。

  • Web上のプラットフォームのため開発環境構築が不要であること
  • 各銘柄の終値や高値などの各種データが用意されておりデータセットの用意不要
  • 開発したトレードアルゴリズムは審査を通過すればQuantX Storeで販売可能
  • 新エンジン移行に伴い、終値、始値、指値での注文が選択可能になるなど、より多様な戦略を組めるようになったこと

データの収集、更新だけに大量の時間を持っていかれる時代もこれにて終わりですね。
QuantXの詳しい使い方についてはこちら

pandasとは

データ分析を効率的に行うライブラリで、数表および時系列データを操作する際によく用いられます。QuantXではこのpandasを基本としてコードが書かれているので、操作方法を着実に理解していきましょう!

(まだpythonを触ったことがない人は、こちらのリンクで簡潔にわかりやすくまとまっていたので、こういったサイトでpythonの基本を学ぶところから始めましょう!)

目標

チュートリアル1では、pandasを使って日付、銘柄ごとの株価表を作成することを目指します。

完成目標

jp.stock.1305 jp.stock.9984
2019-06-24 1640.0 5152.5
2019-06-25 1635.0 5099.0
2019-06-26 1628.0 5027.0
2019-06-27 1647.0 5201.0
2019-06-28 1646.0 5165.0

流れ

1、準備
実際にコードを書いて練習するための準備をします
2、練習
QuantX Factoryでの使用を想定し、サンプル株価データを使いながら、pandasの基本から練習していきます。
3、クイズ
練習したものの中から、数個クイズ形式で問題を出します。これをクリアして次のチュートリアルへ進みましょう!

1、準備

ただ読むだけでは飽きてしまうので、ブラウザ上でpythonコードを実行できるサイトを用いて、実際に書いて練習しましょう!操作はとても簡単です。
まずこちらのサイトを開いてください。paiza.IO (パイザ・アイオー)

paiza.IOの使い方

スクリーンショット 2019-07-04 15.47.40.png

赤丸で囲ってある、”コード作成を試してみる(無料)”をクリックしてください。

スクリーンショット 2019-07-04 15.54.32.png

すると、こちらの画面に移ります。
左上の緑色のボタンで言語をpython3へ変更してください。

スクリーンショット 2019-07-04 16.03.37.png

準備完了です!!
これでブラウザ上でコードを書き、結果を表示することができます。

大まかな使い方は以下の通りです。
1、上半分(黒背景)のコード記入部分にプログラムを記入
2、左下の緑色の実行ボタンを押す(ショートカットキー:Ctrl+Enter)
3、下半分(白背景)の出力画面で、プログラム実行結果を確認
(思ったように出力されていなければ、また1からスタート)

それでは、実際にpandasを使ってコードを書いていきましょう!

2、練習

import

まずはpandasライブラリを使用するために、pandasをimportしましょう!
(importの説明はこちらの記事をチェックしてください。)

import pandas as pd

paiza.IOのコード記入部分へ、このコードを記入して、左下の実行ボタンを押してください。ここでは、出力画面に何も表示されないのが正解です!

pandasをimportするときは、"as pd"を後ろに付けるのが慣例です。
これは、今後pandasライブラリ内の関数を使う際に、毎回pandasと書くのが面倒なので、pandasを"pdとして"importして、今後はpdだけ書けばOKにしますよ!っていう意味です。

さあ無事にimportできたら、実際にサンプル株価データを作成してみましょう!

シリーズ(Series)

pandasには主にシリーズ(Series)とデータフレーム(DataFrame)の2種類のデータ形式があります。それぞれデータを、シリーズでは1次元データ、データフレームでは2次元データとして収納します。まずは、シリーズを使って1次元データを作成しましょう。
(3次元データに対応するパネル(panel)もありますが、こちらはQuantX Factoryのチュートリアルで説明します。)

株価データ

今回はダイワ 上場投信-トピックス("jp.stock.1305")の2019年6/24~6/28までの株価(終値)を使ってみましょう。
(コードは毎回、前回のものを消去し、新たなもののみを記入してください。)

import pandas as pd
cp = [1640.0, 1635.0, 1628.0, 1647.0, 1646.0]
data = pd.Series(cp)
print(data)

コードが書けたら、実行を押し、出力を確認しましょう。
スクリーンショット 2019-07-05 11.22.49.png

株価のシリーズができました!

スクリーンショット 2019-07-05 11.22.49.png

株価の左に0~4と数字が並んでいますね。シリーズでは、データ配列とそれに関連づけられたインデックスというデータラベルの配列が含まれます。今回はインデックスを特に指定しなかったため、出力左列のように、0~4のデフォルトのインデックスが作成されています。

出力下部のdtypeとは、配列データのデータ型を示しています。ここでは特に気にする必要はありません。

日付をインデックスとして追加

pd.Series()中で、データののちに、追加したいインデックスを引数として与えることで、任意のインデックスを追加することができます。今回は日毎の終値データを使用しているの、日付をインデックスとして追加してみましょう。

import pandas as pd
cp = [1640.0, 1635.0, 1628.0, 1647.0, 1646.0]
cp_index = ["2019-06-24", "2019-06-25", "2019-06-26", "2019-06-27", "2019-06-28"]
df = pd.Series(cp, index=cp_index)
print(df)

コードを記入して、実行を押してください!

スクリーンショット 2019-07-05 11.31.29.png インデックスとして、日付を追加することができましたね!

データフレーム(DataFrame)

次に、データフレームを使って2次元データを作成しましょう。
次元が増えることで、先ほどの日付ごとのデータに、銘柄ごとや、値段の付け方ごと(始値、高値、安値)といった、新たな軸のデータを追加できます!
今回は、同じ時期のソフトバンクグループ("jp.stock.9984")の終値を追加してみましょう。

データフレームを作成するには様々な方法がありますが、ディクショナリーかNumpyの配列を使うのが最も一般的です。Numpyを知らない人もいると思うので、ここではディクショナリーを使用しましょう。

import pandas as pd
cp = {"jp.stock.1305":[1640.0, 1635.0, 1628.0, 1647.0, 1646.0],
      "jp.stock.9984":[5152.5, 5099.0, 5027.0, 5201.0, 5165.0]}
cp_index = ["2019-06-24", "2019-06-25", "2019-06-26", "2019-06-27", "2019-06-28"]
df = pd.DataFrame(cp, index=cp_index)
print(df)

さあ出力結果はどうですか?
スクリーンショット 2019-07-05 13.13.14.png
銘柄ごとの情報が追加されました!
さあ、これであなたもpythonで株価データ表を作成することができるようになりました!

Quiz

さあ、チュートリアルで学んだことを使って、新しい株価表を作ってみましょう!
今回は、同時期の日産自動車("jp.stock.7201")、ファストリテーディング("jp.stock.9983")の株価表を作ります。

使用するデータはこちら(簡単のため、小数点以下四捨五入しています)

jp.stock.7201 jp.stock.9983
2019-06-24 767 66530
2019-06-25 764 66090
2019-06-26 761 65400
2019-06-27 778 65390
2019-06-28 772 65130

先ほどのコードの必要な部分だけ修正して、pandasで新しい株価表を作りましょう。

正解の出力がこちら。簡単ですね!次のチュートリアルはこちら
スクリーンショット 2019-07-08 11.14.39.png

解答

import pandas as pd
cp = {"jp.stock.7201":[767, 764, 761, 778, 772],
      "jp.stock.9983":[66530, 66090, 65400, 65390, 65130]}
cp_index = ["2019-06-24", "2019-06-25", "2019-06-26", "2019-06-27", "2019-06-28"]
df = pd.DataFrame(cp, index=cp_index)
print(df)
3
5
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
3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?