4
6

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.

楽天RSSで使えるオプション用証券コード最新版をサーバから抽出するスクリプト

Last updated at Posted at 2019-02-09

#はじめに

楽天RSSを用いると(楽天証券の口座を持っている人は)、リアルタイムで株価や取引板情報等が取得できます。この時に必要なものは表示したい銘柄等の証券コードです。

株の証券コードは一般的に一度決まれば、ほとんど変更がありません。しかし、オプションはほぼ毎週、限月の違う新規銘柄が追加で新規設定されます。また、相場状況や市場関係者のリクエストに応えてオンデマンドで追加設定される場合もあります。

 残念ながら、オプションのコード体系は利用者が皆不幸せになるような、極めてわかりにくいものになっています。

 こちらのページでは、最新のオプションのコード一覧表、およびそのデータを作成したスクリプトをメモ代わり+自分用に載せておきます。

#最新版データ(2019 feb 22)
最新版のデータのみが欲しい方はこちら:

オプション用証券コード最新版(CSV)

※形式(CSV)

lb CODE
03/C8000 144158018
03/C9000 194039018

#最新版をサーバから抽出するスクリプト
実行できるcolab上のノートブック

取引所サーバから最新の「清算値」ファイルを読込
コード関連データを抽出 ⇒ 使いやすい形に加工 ⇒ CSV保存 という流れです。

import pandas as pd
import requests
from bs4 import BeautifulSoup

sv = 'https://www.jpx.co.jp'


def latest_csv_path():
	"""
	:return: str
		JPXサーバ内にある最新の清算値CSVファイルへのPATH
	"""
	req = requests.get(sv + "/markets/derivatives/jnet-derivative/index.html")
	soup = BeautifulSoup(req.content, 'html.parser')
	return soup.find(class_="component-file").a.get('href')


def csv_to_df(csv_path, max_maturity_day=90):
	"""
	清算値CSVファイルをDataFrameに変換
	Parameters
	----------
	csv_path : str
	max_maturity_day :  int , default 90
		最大、SQ期日が何日後までのデータを取得するか(規定値90日後)
	Returns
	-------
	DataFrame

	"""

	colName = ("CODE", "NAME", "TYPE", "MATURITY", "STRIKE",
	           "PRICE", "TPRICE", "NK", "IV", "R", "TIME", "BASE")
	df = pd.read_csv(sv + csv_path, skiprows=3, encoding="SHIFT-JIS", names=colName)
	df = df.query(
		'BASE=="日経225"').query(
		f'TIME<={max_maturity_day} ').dropna()
	df = df.assign(
		PRICE=df.PRICE.astype(int),
		STRIKE=df.STRIKE.astype(int),
		lb=df['MATURITY'].astype(str).str[4:] + '/' + df.TYPE.str[0] + \
		   df['STRIKE'].astype(int).astype(str)).set_index(
		'lb')[["CODE", "PRICE", "TYPE", "STRIKE", "MATURITY", "IV"]]
	return df


csv_path = latest_csv_path()
df = csv_to_df(csv_path)
df[['CODE']].to_csv('op_code_list.csv')

4
6
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
4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?