見出し画像

ファンダメンタルデータ

ヘルプ - 分析テクニックとストラテジ ー ファンダメンタルデータ で検索を実行すると以下の項目が表示されます

頭CRは実績データ、CEは予想データです (全ての項目にデータが入っているわけではありません確認必要)
現在分かっているのは予想データは簡単に取得出来ますが、実績データは日付を見て判断する必要がありそうです
例:実績EPS、予想EPS
インジケーター、カスタムでCR_EPS、CE_EPSを入力した場合、プログラムでGetFundDataで取得する場合を比較確認
Value1 = GetFundData("CR_EPS", 0) ;
Value2 = GetFundData("CE_EPS", 0) ;
Plot1( Value1, !( "CR_EPS" ) ) ;
Plot2( Value2, !( "CE_EPS" ) ) ;

予想のデータは合っていますが、実績のデータは微妙に違っているのが分かります
本決算と四半期の違いなのか、もう少しどのように実績データが作成されているのか調べてみないと分かりません

開発環境のヘルプ - オブジェクトリファレンスでファンダメンタルデータを検索するとまた違う項目が出てきます

浮動株の項目とか使用したいのですが、米国版らしくHELPのやり方やGetFundDataではエラーになり取得できません

Value1 = FundamentalQuotesP1.Quote["FLOAT"].DoubleValue[0];
Plot1( Value1, !( "FLOAT" ) ) ;

現状は使用できない感じです(´д`)

営業利益・進捗インジケーターを作る際に、実績データを検証して前回謎だった部分が判明したのでまとめます

ファンダメンタルデータは主に、カウント(件数)、シンボル(銘柄コードと市場)、フィールド(項目)、値、日付で 1件 のデータになっています
他にヘルプにも載っていない項目で確認できているのが、期間、会計基準、連結/単独、期間タイプがあります
既存のインジケータでよくある上記入力項目3つは、この非表示の項目とマッチングしてプロットされています
東急不動産を例に営業利益の実績データを見てみると、
GetFundData("CR_OP", 0)やFundamentalQuotesProvider等で
最新のデータを取得する場合
シンボル3289-TSと項目CR_OPと履歴(0)でデータを取得する為、最新実績データの3Qの値16,786を取得します
既存の営業利益インジケータの場合、シンボルと項目は同じですが、入力項目で選択しているため(デフォルトでは期間12、連結1、会計基準0) 本決算の値68,750が表示されるようになっています

既存インジケータのカスタムファンダなどで入力する場合も同じで、期間12、連結/単独1、会計基準0、遡り0で入力するとカウント明細4のデータが最新の本決算連結データとして表示されるようにプログラムで制御されていて違う会計基準や期間、非連結のデータは省かれて、遡り1はカウント明細9のデータが表示されるようになっています
上記の例で、期間3、連結/単独1、会計基準0、遡り1で1Qの9,356が、遡り0で3Qの16,786が表示されます
これによりGetFundData等で取得する場合と差異が生じているようなので、使い分けやプログラムでの制御が必要です
本決算の後に非連結のデータも同日で作成されている場合があります
期間の数字はその期間でまとめられている的な意味だと思うので
各Quarterごと3か月分のデータではなく
基本的に1Q、3Qは3か月でQuarter、2Qは1Q+2Q分の6か月MidTermで
中間決算、4Qは12か月FullTermで本決算です
再上場や新規IPO銘柄や決算期の変更等で3、6、12以外の月数でまとめられているデータもたまに存在しています
実績は4半期ごと作成されていて、予想は本決算時に殆どが連結は連結、単独は単独の次期予想としてデータが作成されると思う
上方や下方があった場合もそれが最新になるので、予想の方はそれほどGetFundData等で取得する場合と差異がないと思います
たまに連結なのに単独の中間期予想のデータがある会社もありました(´д`;)
今回の調査で連結/単独の部分や四半期や中間、本決算等のデータ部分がある程度理解できたのでよかったです
ここまでの理解で営業利益・進捗インジケーターの作成に取り掛かる事になります

ファンダメンタルデータ(検証用)

レーダースクリーン用です
既存のカスタムファンダのインジケータでも一応使えますが1つずつ確認するのは面倒なので前に作ったものを改良しました
ファンダメンタルのデータはヘルプの日本株と書かれてるものを見て下さい、書いてないものは米国版で現在日本のトレステでは使用できません
入力項目は銘柄コード、項目、遡りで
デフォルトは、0000-TS、CR-OP(実績営業利益)、0(履歴)です
画面には指定した項目、遡りの値を表示(銘柄コードは指定しなくても表示します)銘柄コードを入力したものは印刷ログに全データを表示します
既存のインジケータの多くは入力項目の、月数、連結単独、会計基準等でデータを選択して表示していますが、隠された項目も表示できるようになってますのでデータベースの概要を掴みやすいと思います
まだ隠されてる項目もあるかもしれませんが今現在見つけたものだけ表示しています
例は7806MTGです
営業利益の実績は2件、最新のデータは5289で7/10に作成されていますが既存のインジのデータは5787になっています
これは最新のデータは月数が6で半期の実績の為というのがわかります
隠された項目でプログラム内で選択されているため実績のインジには1つ前の月数12の5787が表示されています

プログラム

using elsystem;
using tsdata.marketdata;

inputs:		{ 入力変数宣言 }
	string FundSymbol( "0000-TS" ) [DisplayName = "Symbol"],								//任意の銘柄コードを指定
	string FundField( "CR_OP" ) [DisplayName = "Field"],									//任意の項目を指定:実績営業利益
	int PeriodsAgo( 0 );																	//任意の遡りを指定:0が最新

vars:		{ 変数宣言 }
	FundamentalQuotesProvider FQP( null ),													//FundamentalQuotesProvider クラス
	bool logPrint( true );																	//印刷ログ出力

constants:	{ 定数宣言 }
	string KeyMonthsReported( "MonthsReported" ),											//月数
	string KeyAccounting( "AccountingStandard" ),											//会計基準
	string KeyConsolidated( "ConsolidationLevel" ),											//連単
	string KeyTermType( "TermType" );														//期間タイプ
	
method void Fundamental_Updated( elsystem.Object sender, tsdata.marketdata.FundamentalQuoteUpdatedEventArgs args ) 
vars: int fieldNo, int counter, string output;
begin
//入力した銘柄コード、項目、遡り、データを画面に表示
	if FQP.HasQuoteData( 0 ) then begin
		Plot1( FQP.Quote[0].Count, "Count" );
		Plot2( FQP.Quote[0].Value[PeriodsAgo].ToString(), "Value" );
		Plot3( FQP.Quote[0].PostDate[PeriodsAgo].ToString(), "Date" );		
		Plot4( FQP.Quote[0].ExtendedProperties[PeriodsAgo][KeyMonthsReported].ToString(), "Month" );		
		Plot5( FQP.Quote[0].ExtendedProperties[PeriodsAgo][KeyAccounting].ToString(), "Acct" );
		Plot6( FQP.Quote[0].ExtendedProperties[PeriodsAgo][KeyConsolidated].ToString(), "Consol" );
		Plot7( FQP.Quote[0].ExtendedProperties[PeriodsAgo][KeyTermType].ToString(), "TermType" );
	end;
//全データを印刷ログに表示
	if FundSymbol.Contains( symbol ) then begin												//指定名を持つクオートがプロバイダーに存在する場合は真
		if logPrint then print( Symbol );
		if FQP.HasQuoteData( 0 ) then begin													//指定インデックスを持つクオートに値が含まれる場合は真
			for counter = 0 to FQP.Quote[0].Count -1 begin
				output = NumToStr( counter, 0 );
				output += "	";{ Tab }
				output += " "{ Space } + FQP.Fields[0];
				output += "	";{ Tab }
				output += ": " + FQP.Quote[0].Value[counter].ToString();
				output += "	";{ Tab }
				output += " " + FQP.Quote[0].PostDate[counter].ToString();
				output += "	";{ Tab }
				output += " " + FQP.Quote[0].ExtendedProperties[counter][KeyMonthsReported].ToString();
				output += "	";{ Tab }
				output += " " + FQP.Quote[0].ExtendedProperties[counter][KeyAccounting].ToString();
				output += "	";{ Tab }
				output += " "{ Space } + FQP.Quote[0].ExtendedProperties[counter][KeyConsolidated].ToString();
				if FQP.Quote[0].ExtendedProperties[counter][KeyConsolidated].ToString() = "NonConsolidated" then
				output += "	"{ Tab } else output += "		";{ Tab*2 }
				output += " " + FQP.Quote[0].ExtendedProperties[counter][KeyTermType].ToString();
				if logPrint then print( output );
			end;{ For }
			if logPrint then print( FQP.Fields[fieldNo]," " , FQP.Quote[fieldNo].Description," " , FQP.Quote[fieldNo].Type.ToString() + NewLine );
		end else print( FQP.Fields[fieldNo], " is not available" + NewLine );
	end;{ FundSymbol.Contains }
end;{ Fundamental_Updated }

once begin
	FQP = FundamentalQuotesProvider.Create();
	FQP.Symbol = symbol;
	FQP.Fields += FundField;
	FQP.Updated += Fundamental_Updated;
	FQP.Load = true;
end;{ once }
※ " ";{ Tab }のWクォーテーションの中はタブで*2はタブ2回です、
 " ";{ Space }のWクォーテーションの中は半角スペースです
 コピペでTabとSpace部分変になるかもしれないので入力し直して下さい
※ この表示の印刷ログのフォントはMSゴシックで揃えていますので自身 のフォントで使用する場合はスペースやタブで見やすく調整して下さい

いいなと思ったら応援しよう!

ひでぼー
サポートされると喜んでアイスを買っちゃいます!٩(๑❛ᴗ❛๑)۶