株ブログ はっしゃん式 投資研究室


株式投資コラムや分析レポート、自作プログラムを公開するITエンジニアの株ブログ

スポンサーリンク

投資パフォを正確に計算できる修正ディーツ法の考え方とプログラム式


投資コラム

はっしゃんです。

今日は投資パフォーマンスの計算と
修正ディーツ法について紹介します。

スポンサーリンク

投資パフォーマンスの計算

投資家にとって
正確な投資パフォーマンス計算は、
大切なことですよね。

例えば、

 投資元本:100万円
 時価評価:120万円

であれば、損益+20万。
パフォーマンス+20%です。

この程度なら、すぐ計算できますが、
入出金で元本が変わったり、
投資期間が長くなってくると
計算もややこしくなります。

修正ディーツ法は、
このようなケースで
(比較的)正確なパフォを計算する
のに向いています。

元本が変わらない場合のパフォ計算

入出金がなく、
元本が変わらない場合
パフォは次の式で
計算します。

 損益=時価評価-投資元本
 投資パフォ(%)=損益/投資元本*100

例えば、

 投資元本:250万円
 時価評価:350万円

なら、損益は、
 350万-250万=100万
投資パフォは、
 100万/250万*100=40%
となります。

ここまでも大丈夫ですよね。

元本が変わらない場合の年初来パフォ計算

次に、元本が変わらない場合の
年初からのパフォを計算しましょう。

 損益=時価評価-基準値
 投資パフォ(%)=損益/基準値*100

12月末を基準値として、
次のように月末の時価評価が
推移したとします。

12月:500万(基準値)
 1月:550万
 2月:600万
 3月:700万
 4月:650万
 5月:575万
 6月:525万

各月末の年初来パフォーマンスは、
 1月:(550-500)/500*100=10%
 2月:(600-500)/500*100=20%
 3月:(700-500)/500*100=40%
 4月:(650-500)/500*100=30%
 5月:(575-500)/500*100=15%
 6月:(525-500)/500*100=5%
となります。

ここまでも計算は、
小学生レベルですから、
簡単にできますね。

入出金があった場合の年初来パフォ計算

では、入出金があって、
元本が変化した場合
年初からのパフォを連続で
計算してみましょう。

12月:500万(基準値)
 1月:600万 ※50万入金
 2月:700万 ※50万入金
 3月:850万 ※50万入金
 4月:850万 ※50万入金
 5月:825万 ※50万入金
 6月:675万 ※100万出金

このようなケースでは、
修正ディーツ法を使いましょう。

修正ディーツ法の計算式

修正ディーツ法の特徴は、
入出金の有効期間を算出して、
修正基準値を計算していくことです。

上の計算式を分かりやすいように
分解すると下のようになります。

 累計基準値=基準値+累計入出金
 損益=時価評価-累計基準値
 有効入出金=入出金*有効期間
 修正基準値=基準値+有効入出金
 投資パフォ(%)=損益/修正基準値*100

まだ、難しそうに見えますが、、
図で表すと、分かりやすくなります。

修正ディーツ法の分解図

1月の場合では、
 累計基準値=500+50=550万
 損益=600-550=50万
 有効入出金=50*0.5=25万
 修正基準値=500+25=525万
 投資パフォ=50/525*100=9.5% 
となります。

※有効入出金の算出がポイントになりますが、
 ここでは月の中間に入出金したとみなし、
 0.5を使っています。
 より正確には日数から按分して計算します。

さらに2月の場合は、
1~2月の有効期間から、
修正基準値を算出するので、
 累計基準値=500+50+50=600万
 損益=700-600=100万
 有効入出金=(50*1.5+50*0.5)/2=50万
 修正基準値=500+50=550万
 投資パフォ=100/550*100=18.2% 
となります。

修正ディーツ法の分解図2

2月の計算でも有効入出金の算出が
理解のポイントです。

1月で50万入金。
2月も50万入金ですが、
当月分は0.5倍になりますので、

 1月入金分:50*(0.5+1.0)/2=37.5万
 2月入金分:50*0.5/2=12.5万

となります。
100万入金したとしても、
有効期間を考慮すると、
50万が有効入出金というわけです。

ちなみに、3月の有効入出金は、

 1月入金分:50*(0.5+1.0+1.0)/3=41.75万
 2月入金分:50*(0.5+1.0)/3=25万
 3月入金分:50*0.5/3=8.3万

となり、150万円の入金合計のうち、
半分の75万円が期間有効分となります。
(上図を見れば、分かりやすいと思います。)

同様の手順で、残り月の
パフォを計算すると
 1月: 50/525*100=9.5%
 2月:100/550*100=18.2%
 3月:200/575*100=34.8%
 4月:150/600*100=25%
 5月: 75/625*100=12%
 6月: 25/637.5*100=3.9%
となります。

このように、修正ディーツ法は、
入出金の有効期間から修正基準値を求めるため、
途中で入金や出金があった場合でも、
パフォーマンスの連続性を維持して
計算できます。

手順や考え方が少し複雑ですが、
計算式は難しくはありませんので、
考え方を理解したうえで、
積極的に利用するとよいでしょう。

修正ディーツ法のプログラム式

javascript版

修正ディーツ法をjavascriptの
プログラム式であらわすと
下のようになります。

元本(基準値)と時価の配列から
パフォマンスの配列を計算して
返すfunctionになっています。

function calc_dietz(ganpon, jika) {
	var profit = [];
	var base = [];
	var ratio = [];
	if(jika.length == ganpon.length) {
		// 損益計算(修正ディーツ法)
		for(var i=0; i<jika.length; i++) {
			profit[i] = jika[i] - jika[0] - (ganpon[i] - ganpon[0]);
		}
		// 基準値計算(修正ディーツ法)
		for(var i=0; i<ganpon.length; i++) {
			base[i] = jika[0];	// base割当
		}
		for(var i=1; i<ganpon.length; i++) {
			var change = ganpon[i] - ganpon[i-1];	// 分母の増減
			var bunsi = 0.5;	// 対象期間(当日・当月の真ん中0.5)
			var bunbo = i;		// 全期間
			for(var j=i; j>ganpon.length; j++) {
				base[j] += change * bunsi / bunbo;
				bunsi++;	// 0.5 1.5 2.5
				bunbo++;	// i+0 i+1 i+2
			}
		}
		// パフォ計算(修正ディーツ法)
		for(var i=0; i<jika.length; i++) {
			var temp = null;
			if(base[i] > 0) {
				temp = (profit[i] / base[i]) * 100;
			}
			if(temp != null) {
				temp = temp.toFixed(1);	// 小数点を1桁に統一
			}
			ratio[i] = temp;
		}
	}
	return ratio;
}

php版

同じくphp版のfunctionです。

function calc_dietz($ganpon, $jika) {
	$profit = array();
	$base = array();
	$ratio = array();
	if(count($jika) == count($ganpon)) {
		// profit計算(ディーツ法)
		for($i=0; $i<count($jika); $i++) {
			$profit[$i] = $jika[$i] - $jika[0] - ($ganpon[$i] - $ganpon[0]);
		}
		// base計算(ディーツ法)
		for($i=0; $i<count($ganpon); $i++) {
			$base[$i] = $jika[0];	// base割当
		}
		for($i=1; $i<count($ganpon); $i++) {
			$change = $ganpon[$i] - $ganpon[$i-1];	// 分母の増減
			$bunsi = 0.5;	// 対象期間(当日・当月の真ん中0.5)
			$bunbo = $i;	// 全期間
			for($j=$i; $j<count($ganpon); $j++) {
				if($change != 0) {
					$base[$j] += $change * $bunsi / $bunbo;
				}
				$bunsi++;	// 0.5 1.5 2.5
				$bunbo++;	// i+0 i+1 i+2
			}
		}
		// パフォ計算(修正ディーツ法)
		for($i=0; $i<count($jika); $i++) {
			$temp = null;
			if($base[$i] > 0) {
				$temp = ($profit[$i] / $base[$i]) * 100;
			}
			if($temp != null) {
				$temp = round($temp, 1);	// 小数点を1桁に統一
			}
			$ratio[$i] = $temp;
		}
	}
	return $ratio;
}
損切りをしない投資方法について考える

修正ディーツ法を自動計算する無料ツール

最後に、はっしゃんが開発して
実際に使用している
元本と時価のカンマ区切りデータから、
修正ディーツ法で投資パフォーマンスを
自動計算してグラフ画像を作成できる
無料ツール「パフォ画像メーカー」
を紹介しておきます。

パフォ画像メーカー:http://kabuka.biz/funda/perfor/
 コラムで使用した1~6月分の年初来パフォーマンスで作成した画像です。

修正ディーツ法サンプル画像

データ作成用のExcelテンプレートも
無料提供していますので、
お役立ていただければ幸いです。

修正ディーツ法向け元本と時価の推移を記録するExcelテンプレート

スポンサーリンク

株初心者のためのランチェスター戦略

はっしゃんの投資心得10ヵ条

ピックアップ