【e-Taxソフト】⑥有価証券の内訳書を期末評価する

#<h1>はじめに</h1>
税務（法人税法）ではなく、
会計（金融商品に関する会計基準、第64項）の規定で、
有価証券を帳簿価額ではなく時価で評価しなければならない。

株価データ（決算期末の終値）が必要ですが、
	Yahooファイナンスは（Webスクレイピング）禁止だし、
	有料でデータを買うのもバカバカしいし、
	国税庁は持ってるはずだけど公開してないようだし、
元ネタとしてJPX（東京証券取引所）から入手することとした。

株式相場表があれば、有価証券と突合するだけ！

だけどこれ、PDFなんですよ。。

PDF:株式相場表:をCSV（テキスト）に変換しました。
※これが一番大変

この記事が意味をなくす時が来ることを望む。

#<h1>使い方</h1>
PDF:株式相場表:と言っても、
必要なのは「立会市場」だけ。
※PDFの右上「1-n」のページのみ抽出

```R:PDF変換.R
source(	file.path( なんとかディレクトリー,"PDF_株式相場表.R" ) ) 
f <- file.path(	なんとかディレクトリー ,"stq_20200831.PDF" ) # ダウンロードした元ネタ
立会市場 <- 株式相場表.main( f )
```
```R:期末評価.R
	# ⑥有価証券の内訳書(i06_e)ができてる前提で残高行のみ抽出
帳簿価額 <- i06_e[ !is.na(i06_e[,6]) & i06_e[,6] != 0,c(4,5,6,8)]
	# ⑥有価証券の内訳書（帳簿価額）に時価カラムを追加する
有価証券 <-	merge( 帳簿価額 ,立会市場[,c(1,11)] ,all.x=T ,by.x="種類=株式" ,by.y="コード=" )
	# 目検
	sapply( 有価証券 ,mode )
	nrow(帳簿価額) ;nrow(有価証券) 
	# 微調整
有価証券[,3] <-  as.integer( 有価証券[,3] ) # （列３）数量 
有価証券[,4] <-  as.integer( 有価証券[,4] ) # （列４）帳簿価額 
有価証券[,5] <-  as.integer( gsub( "," ,"" ,有価証券[,5] ) ) # （列５）時価
	# 期末評価額（列６）＝数量（列３）＊時価（列５）
有価証券 <- cbind( 有価証券 ,"期末評価額="=有価証券[,3]  * 有価証券[,5] )
	# 差額（列７）＝期末評価額（列６）ー　帳簿価額（列４）
有価証券 <- cbind( 有価証券 ,"差額="=有価証券[,6]  - 有価証券[,4] )
	# 会計（評価益、その他有価証券差額など）に反映
sum( 有価証券[,4] ,na.rm=T) # 帳簿価額	 
sum( 有価証券[,6] ,na.rm=T) # 期末評価額	 
sum( 有価証券[,7] ,na.rm=T) # 差額	 
```
```R:PDF_株式相場表.R
	# pdfデータをインポートするため
library( pdftools )	# install.packages( 'pdftools' )

株式相場表.init <- function( n=1 ) {
			# 列数
	df <- data.frame( matrix( NA ,0 ,16 ) )
			# 列名
	colnames( df ) <- c(
	 "コード="		# 列1
	,"売買単位="		# 列2
	,"銘柄名="		# 列3
	,"午前.始値="		# 列4
	,"午前.高値="		# 列5
	,"午前.安値="		# 列6
	,"午前.終値="		# 列7
	,"午後.始値="		# 列8
	,"午後.高値="		# 列9
	,"午後.安値="		# 列10
	,"午後.終値="		# 列11
	,"最終気配="		# 列12
	,"前日比="		# 列13
	,"売買高加重平均価格="	# 列14
	,"売買高="		# 列15
	,"売買代金="		# 列16
	)
	switch( n
	, "1" =  { # 普通取引
		# print( sapply( df ,mode ) )
		}
	, "2" =  { } # 当日決済取引
	, "3" =  { } # 発行日決済取引		
	, "4" =  { } # 立会外分売取引		
	, "5" =  { } # ToSTNeT市場		
	, "6" =  { } # 優先株等		
	, "7" =  { } # 		
	, "8" =  { } # 内国投信等		
	, "9" =  { } # 		
	, "10" =  { } # 外国株式		
	, "11" =  { } # 		
	, "12" =  { } # 		
	, "13" =  { } # 		
	, "14" =  { } # 		
	, "15" =  { } # ToSTNeT市場	当日決済取引	
	)
return( df )
}
print( c( "株式相場表.init()" ,株式相場表.init ) )

# y抽出
yn <- function( page ,y )	{
		# page:株価相場表の特定ページ
		# y:明細行の"y"
	r <- subset(	page ,page[ ,"y"] == y	,select=c("x","text") )
	o <- order( as.integer( r[,"x" ] ) )
	r <- r[ o, ]	
return( r )
}
print( c( "yn()" ,yn ) )

株式相場表.page <- function( page ) {
	df_code <-subset( page ,page[ ,"x" ] == 74 )	# コード	
	mei <- 株式相場表.init()
	if( nrow( df_code ) == 0 ) return( mei )
	for( l in 1:nrow( df_code ) ) {
		n <- as.integer( df_code[ l,"y" ] )  	
		r <- yn( page ,n ) 	
		mei[ l,1:2 ] <- r[1:2 ,2 ] 	

		mei[ l, 3 ] <- r[ 3 ,2 ]
		switch( nrow( r ) - 16  
		,"1" = { mei[ l, 3] <- paste( r[ 3 ,2 ] ,r[ 4 ,2 ] ) } 
		,"2" = { mei[ l, 3] <- paste( r[ 3 ,2 ] ,r[ 4 ,2 ] ,r[ 5 ,2 ] ) } 
		,"3" = {
			 print( r ) 
			 }
		 ) 	
		mei[ l, 4:16] <- tail( r[ ,2 ] ,13 ) 	
	}		
return( mei )
}
print( c( "株式相場表.page()" ,株式相場表.page ) )

株式相場表.main <- function( f ,n="1-") {
	p <- pdf_info( f )$pages
	df <-	pdf_data( f )

	stack <- 株式相場表.init()
	for( i in 1:p )	{
		page <-	sapply( df[[ i ]] ,"[" )
		s2 <- subset( page ,page[,"y"] == 71 ,select="text")[ 2 , ]
		s3 <- subset( page ,page[,"y"] == 71 ,select="text")[ 3 , ]
	print( paste( "page =" ,i ,s2 ,s3 ) )
		if( s2 != "1-") break
		r <- 株式相場表.page( page )
		stack <- rbind( stack , r )
	} 
return( stack )
} 
print( c( "株式相場表.main()" ,株式相場表.main ) )
#
```
#<h1>元ネタ</h1>
#<h6>JPX、よくあるご質問</h6>
Q5.	税金の申告に必要な過去の株価（終値）を知りたい。
https://www.jpx.co.jp/faq/stock_listed_company.html

【お問合せの前に】
●過去1年以内の株価につきましては　→「東京証券取引所日報」をご利用ください。
　　東京証券取引所日報 
https://www.jpx.co.jp/markets/statistics-equities/daily/

![2020-10-17 1.31のイメージ.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/374784/f45e2557-d3c7-1e89-c0df-1a2e34e00480.jpeg)