0
0

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 3 years have passed since last update.

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

Last updated at Posted at 2020-10-18

はじめに

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

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

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

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

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

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

使い方

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

PDF変換.R
source(	file.path( なんとかディレクトリー,"PDF_株式相場表.R" ) ) 
f <- file.path(	なんとかディレクトリー ,"stq_20200831.PDF" ) # ダウンロードした元ネタ
立会市場 <- 株式相場表.main( f )
期末評価.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] ) # (列3)数量 
有価証券[,4] <-  as.integer( 有価証券[,4] ) # (列4)帳簿価額 
有価証券[,5] <-  as.integer( gsub( "," ,"" ,有価証券[,5] ) ) # (列5)時価
	# 期末評価額(列6)=数量(列3)*時価(列5)
有価証券 <- cbind( 有価証券 ,"期末評価額="=有価証券[,3]  * 有価証券[,5] )
	# 差額(列7)=期末評価額(列6)ー 帳簿価額(列4)
有価証券 <- cbind( 有価証券 ,"差額="=有価証券[,6]  - 有価証券[,4] )
	# 会計(評価益、その他有価証券差額など)に反映
sum( 有価証券[,4] ,na.rm=T) # 帳簿価額	 
sum( 有価証券[,6] ,na.rm=T) # 期末評価額	 
sum( 有価証券[,7] ,na.rm=T) # 差額	 
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 ) )
#

元ネタ

JPX、よくあるご質問

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

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?