エンジニアリングとお金の話

都内で働くエンジニアの日記です。

【投資】クロス取引の金利とツール作成について

【SPONSORED LINK】

f:id:hatakazu93:20160926141436j:plain 先週末に9月の株主優待を取得したい銘柄の購入を行った。なお、購入した銘柄は以下の通りである。

2016年9月 株主優待取得銘柄

コード 会社名 株価 購入枚数 購入金額 手数料 金利 優待額 補足
2288 丸大食品 490 1000 490000 272 262 3000
2594 キーコーヒー 1945 1000 1945000 921 1039 5000
2874 横浜冷凍 1080 1000 1080000 582 577 2000 サーモン詰め合わせ 2000円程度と予想
2897 日清食品 6230 300 1869000 921 999 3500
3002 グンゼ 327 3000 981000 487 524 4000
3088 マツモトキヨシ 5310 100 531000 487 284 2000
4326 インテージ 1675 800 1340000 582 716 4000
4661 オリエンタル 6282 800 5025600 921 2685 14000
4665 ダスキン 1932 300 579600 487 310 2000
4732 ユーエスエス 1746 1000 1746000 921 933 5000
4928 ノエビア 3190 1000 3190000 921 1704 22000
4951 エステー 1218 1000 1218000 582 651 3000
4958 長谷川香料 1921 500 960500 487 513 2000
7230 日信工業 1590 300 477000 272 255 3000
7550 ゼンショー 1836 1000 1836000 921 981 12000
8252 丸井グループ 1401 1000 1401000 582 748 6000
8803 平和不動産 1404 100 140400 185 75 1000
9007 小田急電鉄 1164 1000 1164000 582 622 2000 鉄道半額切符4枚。2000円程度と予想
9024 西武 1772 300 531600 487 284 1000 鉄道半額切符2枚。1000円程度と予想
9201 日本航空 3080 1000 3080000 921 1645 15000 航空料金半額券5枚 。1枚3000円と予想
9831 ヤマダ電機 511 1000 511000 487 273 5000
- - - - 30,096,700 13,008 16,079 116,500

3000万円分程購入し、優待金額としては12万円程度を取得出来る計算である。なお、売買手数料とクロス取引に伴う金利を合わせると3万円程度なので差引9万円という計算となる。

最近優待取りを行う際は必ずクロス取引にて購入を行う様にしている。クロス取引とは権利付最終日までに「現物取引の買い」と「信用取引の売建」を同じ値段で同時に行い、権利落ち日に「現渡(げんわたし)」という方法で決済する取引をいう。このクロス取引を行う事で、権利落ち後の株価の下落(現物取引の買いにて発生)を信用取引の売建分にてカバーする事が可能となり株価変動の影響を受ける事なく株主優待を取得出来る。

なお、以前逆日歩で痛い目に合っているので一般信用取引銘柄のみを対象としている。売建する際は金利が発生し、SBI証券では年利3.9%となる。今回金利だけで、1万6000円程度掛かっているが、あまり売建の金利について理解していなかったので整理してみた。

売建の金利について

まず、株を購入してもその日に株を得る事は出来ない。正確には購入日から含めて4営業日後に取得する事となる。その為、月曜日に購入した際は、木曜日に、火曜日に購入した際は金曜日に取得する事となる。なお、土日を挟む際は営業日にカウントされない。その為、水曜日に購入した際は、月曜日に取得する事となる。

購入曜日 取得週 取得曜日
月曜日 今週 木曜日
火曜日 今週 金曜日
水曜日 来週 月曜日
木曜日 来週 火曜日
金曜日 来週 水曜日

なお、売建の金利については株を取得後、返却するまでの日数に対して発生する。その為、月曜日に購入し火曜日に返済した際は、木曜日に取得し金曜日に返却となるので合計2日間の金利が発生する。また、火曜日に購入し、水曜日に返却した際は、金曜日に取得し月曜日に返却となるので、金・土・日・月の4日間分の金利が発生する。権利確定日に購入し、権利落ち日に返却した際の金利発生日数について纏めると以下の通りとなる。

権利確定日 権利落ち 取得曜日 返却曜日 金利発生期間
月曜日 火曜日 木曜日(今週) 金曜日(今週) 2日間(木・金)
火曜日 水曜日 金曜日(今週) 月曜日(来週) 4日間(金・土・日・月)
水曜日 木曜日 月曜日(来週) 火曜日(来週) 2日間(月・火)
木曜日 金曜日 火曜日(来週) 水曜日(来週) 2日間(火・水)
金曜日 月曜日 水曜日(来週) 木曜日(来週) 2日間(水・木)

権利確定日が火曜日の場合は株を返却する際に土日をまたぐ必要がある為、2日分余計な金利が掛かる。今回金額が大きかった事もあり、1日当たりの金利は3200円(3000万×3.9%÷365)程掛かる計算となった。大きな金額のクロス取引を行う際は金利の発生期間についても考慮しておいた方がよい。

一般信用取引の確認ツール

売建を行うと逆日歩が発生する可能性がある。逆日歩とは株を借りる際の手数料の様なもので、人気の銘柄で株不足となった際は優待金額よりも大きな金額となる事がある。自分の経験では過去に1000円のクオカードを取る為に3200円の逆日歩を払った。

hatakazu.hatenablog.com

なお、逆日歩については一般信用取引にて売建を行った際は発生しない。その為、一般信用取引にて売建を行う方が安心である。ただ、多くの人が一般信用取引にて売建を行うと、株不足となり、売建を行う事が出来ない状態となる。

その為、一般信用取引が可能かどうか各銘柄毎に確認する必要がある。ただ、9月は一般信用取引が可能な銘柄が156銘柄有り、一銘柄ずつ確認するのは非常に手間が掛かる。また、売建時の金利の関係から権利確定日の直前まで購入を粘りたい思惑もあり、あまり早いタイミングで購入するのも得策では無い。

最初は全ての一般信用銘柄について手で確認していたがあまりにも手間だったので一般信用取引銘柄の情報を確認するツールを作成した。処理としては、対象となる月の一般信用取引が可能な証券コード全てを取得し、その証券コードを一銘柄ずつ検索し取引可能情報を取得している。言語はpythonを使用しており、スクレイピングにはseleniumを使用している。

ソースコード

#-*- coding:utf-8 -*-

from selenium import webdriver
from BeautifulSoup import BeautifulSoup
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.common.by import By
import re
import time

#接続URL
url="https://www.sbisec.co.jp/ETGate"

driver.implicitly_wait(10)

#接続URLからドライバーを作成
driver.get(url)

#設定した文字が表示されるまで処理を待つ
WebDriverWait(driver,10).until(expected_conditions.title_is(u"SBI証券―ネット証券最大手の証券会社。オンライントレードでの投資をしっかりサポート―"))

#SBI証券ログイン処理
driver.find_element_by_xpath('//*[@id="user_input"]/input').send_keys('ログインID')
driver.find_element_by_xpath('//*[@id="password_input"]/input').send_keys('パスワード')
driver.find_element_by_xpath('//*[@id="SUBAREA01"]/form/div/div/div/p[2]/a/input').submit()

driver.find_element_by_xpath('//*[@id="navi01P"]/ul/li[3]/a/img').click()
driver.find_element_by_xpath('//*[@id="MAINAREA01-INNER-R"]/div[1]/div/div/div/div/div/div/div[2]/div[2]/a').click()

#9月優待 ※優待情報を取得したい月を設定する
driver.find_element_by_xpath('//*[@id="month9"]/p').click()
WebDriverWait(driver,10).until(expected_conditions.text_to_be_present_in_element((By.XPATH,'//*[@id="month_output"]/td[2]/p'),u'優待権利確定'))

#一般信用取引が可能な銘柄のみ絞る
driver.find_element_by_xpath('//*[@id="selling_hedge1"]/p').click()
WebDriverWait(driver,10).until(expected_conditions.text_to_be_present_in_element((By.XPATH,'//*[@id="selling_hedge_output"]/td[2]/p'),u'つなぎ売り'))

stock_code=set()
target_count=driver.find_element_by_xpath('//*[@id="totalCount"]').text

#一般信用取引が可能な銘柄分処理を実施
for num in range(int(target_count) / 20 + 2):
    bs=BeautifulSoup(driver.page_source.encode("sjis","ignore").decode("utf-8","ignore"))
    for line in bs.findAll("a",attrs={"href":re.compile("i_stock_sec=\d{4}")}):
        #一般信用取引が可能な証券コードを配列に格納
        stock_code.add(re.compile("i_stock_sec=(\d{4})").search(str(line)).group(1))
    time.sleep(3)
    driver.find_element_by_xpath('//*[@id="nextPageTop"]').click()

driver.find_element_by_xpath('//*[@id="navi01P"]/ul/li[3]/a/img').click()
driver.find_element_by_xpath('//*[@id="MAINAREA01-INNER-R"]/div[7]/ul/li[1]/p/a').click()

#一般信用取引可能情報を取得
for line in stock_code:
    driver.find_element_by_xpath('//*[@id="cbsSearchProductForm"]/table/tbody/tr/td[1]/div[1]/p[2]/input[1]').send_keys(line)
    driver.find_element_by_xpath('//*[@id="cbsSearchProductForm"]/table/tbody/tr/td[1]/div[1]/p[2]/input[2]').click()

    bs=BeautifulSoup(driver.page_source)
  #会社名
    name=[x for x in bs.findAll('a',attrs={'href':True})][158].text.encode("utf-8","ignore") if [x for x in bs.findAll('a',attrs={'href':True})][158].text != "" else [x for x in bs.findAll('a',attrs={'href':True})][157].text.encode("utf-8","ignore") 
    #取引可能情報1
    dicision1=re.compile(".*>(.*?)<br />(.*?)</p>").search(str([x for x in bs.findAll('p',attrs={'class':'fm01'})][23])).group(1)
    #取引可能情報2
    dicision2=re.compile(".*>(.*?)<br />(.*?)</p>").search(str([x for x in bs.findAll('p',attrs={'class':'fm01'})][23])).group(2)
    #購入可能単元
    unit=re.compile('<p class="fm01">(.*?)</p>').search(str([x for x in bs.findAll('p',attrs={'class':'fm01'})][24])).group(1)

    print "%s,%s,%s,%s,%s" % (line,name,dicision1,dicision2,unit)
    driver.find_element_by_xpath('//*[@id="cbsSearchProductForm"]/table/tbody/tr/td[1]/div[1]/p[2]/input[1]').clear()

最後に

クロス取引は有効に活用すればほぼノーリスクで株主優待を取得出来る裏ワザの様な手法である。信用取引口座を開設する必要があるので手間は掛かるがその手間を上回るメリットを得る事が出来る。株主優待に興味がある人は是非有効に活用して欲しいと思う。