修正ディーツ法[ 1 ] [ 2 ] [ 3 ]は、外部フローが存在する投資ポートフォリオの事後的(すなわち過去の)パフォーマンスを測る指標である。(外部フローとは、ポートフォリオへの現金、証券、その他の金融商品の移動など、価値の移動であり、同時に反対方向への価値の移動はなく、また、利子、クーポン、配当金など、ポートフォリオへの投資による収入ではない。)
修正ディーツリターンを計算するには、外部フローを差し引いた価値の増減を、測定期間の平均資本で割ります。平均資本は、個々のキャッシュフローを、期間末までの期間の長さに応じて重み付けします。期間の初めに発生するキャッシュフローは、期間の終わりに発生するキャッシュフローよりも高い重み付けになります。計算結果は、保有期間の パーセンテージリターンとして表されます。
このリターン計算方法は、現代のポートフォリオ運用で用いられています。これは、投資パフォーマンス評議会(IPC)が世界投資パフォーマンス基準(GIPS)の一環として推奨するリターン計算方法の一つです。GIPSは、ポートフォリオのリターン計算方法に国際的な一貫性をもたらすことを目的としています。[ 4 ]
この手法はピーター・O・ディーツにちなんで名付けられました。[ 5 ] ピーター・ディーツの研究の背後にある元々のアイデアは、当時利用可能な非常に低速なコンピュータを用いた反復的なアプローチがかなりの時間を要していたため、より迅速でコンピュータへの負荷が少ないIRR計算方法を見つけることでした。この研究はBAI(銀行管理研究所)のために行われました。改良ディーツ法は線形IRRです。
修正ディーツ法の式は次のとおりです。
どこ
そして
重みは 、フローが発生した時点から期間の終了までの期間の割合です。フローが1日の終わりに発生すると仮定すると、 次のように計算できます。
どこ
これは、フローが1日の終わりに発生することを前提としています。フローが1日の初めに発生した場合、そのフローはポートフォリオに1日追加されるため、ウェイトを計算するには次の式を使用します。
修正ディーツ法は、真の時間加重収益率法に比べて実用上の利点があります。修正ディーツ収益率の計算では、外部フローが発生するたびに各時点におけるポートフォリオ評価を必要としないからです。内部収益率法も、この実用上の利点を修正ディーツ法と共有しています。逆に言えば、ある時点でポートフォリオ評価が存在する場合、その時点での修正ディーツ法によるキャッシュフローの評価は、実際の評価と一致する可能性が非常に低くなります。
技術の進歩により、ほとんどのシステムは日次リターンを計算し、幾何学的にリンクさせることで月次、四半期、年次、またはその他の期間のリターンを算出できる時間加重リターンを計算できるようになりました。しかし、修正ディーツ法はパフォーマンス要因分析において依然として有用です。なぜなら、修正ディーツ法は、資産の修正ディーツリターンを、平均投下資本に基づいて計算されたポートフォリオのウェイトと組み合わせることができるという利点を依然として持っており、加重平均によってポートフォリオの修正ディーツリターンが得られるからです。時間加重リターンでは、これは不可能です。
修正ディーツ法は、結果を得るために何度も試行錯誤する必要がないという、内部収益率(IRR)法に比べて実用的な利点も持っている。 [ 6 ]
修正ディーツ法は、単純な利子率原理に基づいています。複利原理を適用する内部収益率法に近い手法ですが、フローと収益率が十分に大きい場合、修正ディーツ法の結果は内部収益率から大きく乖離します。
修正ディーツリターンは次の方程式の 解です。
どこ
そして
これを(年率換算されていない)内部収益率(IRR)と比較してみましょう。IRR(より厳密に言えば、IRRの年率換算されていない保有期間収益率)は、以下の式の解となります。
ポートフォリオの価値が1年目の初めに100ドル、2年目の終わりに300ドルで、1年目の終わりと2年目の初めに50ドルの流入があるとします。(さらに、どちらの年も閏年ではないため、2年間の長さは同じであると仮定します。)
2年間の利益または損失を計算するには、
2年間の平均資本を計算するには、
したがって、修正されたディーツリターンは次のようになります。
この例では、内部収益率(年率換算でない)は 125% です。
そのため、この場合、修正ディーツリターンは非年次化IRRよりも著しく低くなります。修正ディーツリターンと非年次化内部収益率のこの乖離は、期間内の大きなフローと、リターンが大きいという事実によるものです。フローがない場合、修正ディーツリターン、非年次化IRR、または保有期間リターンを計算する他の方法との間に差異はありません。フローが小さい場合、またはリターン自体が小さい場合、修正ディーツリターンと非年次化内部収益率の差異は小さくなります。
IRR が 50% となる理由は次のとおりです。
しかし、IRR法を用いた年率換算ではない保有期間のリターンは125%です。年利50%を2期間にわたって複利運用すると、保有期間のリターンは125%になります。
修正ディーツ法は、キャッシュフローが計測期間中のどの時点で発生したかに関係なく均等に加重される単純ディーツ法とは異なります。単純ディーツ法は修正ディーツ法の特殊なケースであり、外部フローが期間の中間点で発生する、または同等に期間全体に均等に分散すると仮定されます。一方、修正ディーツ法ではそのような仮定は行われず、外部フローのタイミングが考慮されます。上記の例では、フローが全体の期間の中間点で発生しており、これは単純ディーツ法の基礎となる仮定と一致していることに注意してください。つまり、この特定の例では、単純ディーツリターンと修正ディーツリターンは同じになります。
開始値または終了値のいずれか、あるいは両方がゼロの場合、ポートフォリオにコンテンツがある期間をカバーするように開始日と終了日を調整する必要があります。
2016年の暦年リターンを計算していると仮定します。ポートフォリオは、12月30日(金)に無利息口座に100万ユーロの現金を入金するまで空の状態です。2016年12月31日(土)の終値時点で、ユーロと香港ドルの為替レートは1ユーロあたり8.1香港ドルから8.181香港ドルに変動しました。これは香港ドル換算で1%の増加です。したがって、香港ドル換算でのリターンは1%と答えるのが正解です。
しかし、修正ディーツ式を盲目的に適用し、取引日終了のタイミングを前提とすると、年末前日の12月30日の流入額810万香港ドルの日次加重は1/366となり、平均資本は次のように計算されます。
そしてゲインは次のようになります。
したがって、修正ディーツ収益は次のように計算されます。
では、正しいリターンは 1 パーセントか 366 パーセントのどちらでしょうか?
上記の例に対する唯一の合理的な答えは、保有期間のリターンが明確に1%であるということです。つまり、開始日は最初の外部フローの発生日に調整する必要があります。同様に、期間末にポートフォリオが空の場合、終了日は最終的な外部フローに調整する必要があります。終了値は実質的に最終的な外部フローであり、ゼロではありません。
1 日あたり 1 パーセントを年間の日数に掛けるという単純な方法で年間の収益を計算すると 366 パーセントになりますが、保有期間の収益は依然として 1 パーセントのままです。
上記の例は、開始日を12月30日の終値に調整すると修正され、開始値は810万香港ドルになります。その後、外部からの資金流入はありません。
修正後の利益または損失は以前と同じです。
しかし、修正された平均資本は次のようになります。
したがって、修正された修正ディーツリターンは次のようになります。
11月14日の取引日に、発生利息と手数料を含めて1,128,728香港ドルで債券を購入し、3日後の11月17日の取引日に1,125,990香港ドル(これも発生利息と手数料控除後)で売却したとします。取引が当日の開始時に行われたと仮定すると、この債券を11月17日の取引終了時まで保有した場合の、年初来の修正ディーツ保有期間リターン(香港ドル建て)はいくらでしょうか?
答えは、まず、11月17日の終値までの年初来保有期間には、購入と売却の両方が含まれるということです。つまり、実質的な調整保有期間は、11月14日の始値の購入から3日後の11月17日の売却までとなります。調整開始値は購入の純額、終了値は売却の純額であり、その他の外部フローは発生しません。
フローはないので、利益または損失は次のようになります。
平均資本は開始値に等しいので、修正ディーツ収益は次のようになります。
調整された開始日または終了日を適用することで計算を実際の保有期間に限定するこの方法は、投資を単独で計算する場合に適用されます。投資がポートフォリオに属し、ポートフォリオにおける投資のウェイトと、そのリターンがポートフォリオ全体のリターンに占める割合を求める場合、共通の保有期間に基づいて、同種の投資同士を比較する必要があります。
年初、ポートフォリオに10,000ドルの現金があり、手数料なしで利息が付く口座に預け入れられているとします。第4四半期の初めに、その現金のうち8,000ドルをX社の米ドル建て株式に投資します。投資家はバイ・アンド・ホールド戦略を採用し、年末まで取引は行いません。年末には、株式の価値は10%上昇して8,800ドルとなり、利息100ドルが現金口座に元本として計上されます。
年間のポートフォリオの収益率はいくらですか?現金口座と株式からの貢献はいくらですか?さらに、現金口座の収益率はいくらですか?
ポートフォリオの最終価値は、現金2,100ドルと株式8,800ドルを合わせた合計10,900ドルです。年初から9%増加しています。年間を通して、ポートフォリオへの外部からの資金流入および流出はありません。
それで
戻り値は次のようになります:
この 9% のポートフォリオ収益は、株式で得た 800 ドルからの 8% の貢献と、現金口座で得た 100 ドルの利息からの 1% の貢献に分かれますが、貢献をより一般的に計算するにはどうすればよいでしょうか。
最初のステップは、現金口座と株式口座のそれぞれについて、年間平均資本を計算することです。これらを合計すると、ポートフォリオ全体の平均資本は10,000ドルになります。ポートフォリオを構成する2つの構成要素それぞれの平均資本から、ウェイトを計算できます。現金口座のウェイトは、現金口座の平均資本をポートフォリオの平均資本(10,000ドル)で割った値であり、株式のウェイトは、年間平均資本をポートフォリオの平均資本で割った値です。
便宜上、株式購入のための8,000ドルの現金流出の時間的重みを正確に1/4と仮定します。これは、1年間の4四半期の長さが等しいとみなされることを意味します。
現金口座の平均資本は次のとおりです。
前四半期の株式の平均資本は、前四半期開始後に資金流入がないため、計算する必要はありません。これは株式に投資された8,000ドルです。しかし、年間平均資本は別のものです。年初時点の株式の初期値はゼロで、前四半期開始時に8,000ドルの資金流入があったため、以下のようになります。
ポートフォリオにおける現金口座の比率が年間を通じて次のとおりであったことがすぐにわかります。
株式の重量は次のとおりでした。
合計すると 100 パーセントになります。
現金口座の収益を計算すると次のようになります。
ポートフォリオのリターンへの貢献は次のとおりです。
株式からのポートフォリオ収益への貢献はどうでしょうか?
株式の調整保有期間リターンは10%です。これにポートフォリオ内の株式の20%のウェイトを掛けると、結果はわずか2%になりますが、正しい寄与は8%です。
答えは、調整されていない年間の株式の収益率を使用して貢献度を計算することです。
すると、ポートフォリオの収益に対する株式の貢献は次のようになります。
これは、株式の正しい保有期間収益が 40 パーセントであることを意味するのではなく、拠出額の計算には、実際の 10 パーセントの保有期間収益ではなく、調整されていない期間収益、つまり 40 パーセントの数字を使用します。
手数料控除後のリターンを測定するには、ポートフォリオの価値から手数料額を差し引きます。手数料控除後のリターンを計算するには、手数料を外部フローとして扱い、評価額から発生手数料を除外します。
修正ディーツリターンは、保有期間が1年の場合を除いて、年間収益率ではなく保有期間収益率であることに注意してください。保有期間収益率を年間収益率に変換する年次化は、別のプロセスです。
修正ディーツ法は、金額(またはドル)加重法(時間加重法とは対照的)の一例です。特に、2つのポートフォリオの修正ディーツリターンが と で、共通の期間で測定されている場合、同じ期間における2つのポートフォリオの修正ディーツリターンは、2つのリターンの加重平均となります。
ここで、ポートフォリオのウェイトは、期間内の平均資本に依存します。
修正ディーツ法の代替として、修正ディーツリターンをより短い期間で幾何的にリンクさせる方法があります。リンクされた修正ディーツ法は時間加重法に分類されますが、各キャッシュフロー時点での評価を必要とする真の時間加重法と同じ結果は得られません。
すべての取引が一日の終わりや始まりなど、一日の特定の時間に発生したとみなすと、ポートフォリオのリターンの計算や分解が困難になる場合があります。リターンの計算にどのような方法を適用する場合でも、すべての取引が毎日特定の時点で同時に発生すると仮定すると、誤差が生じる可能性があります。
例えば、ある日の始まりにポートフォリオが空で、開始値Aがゼロであるというシナリオを考えてみましょう。その後、その日のうちに外部からの流入F = 100ドルが発生します。その日の終わりまでに市場価格は変動し、終了値は99ドルになります。
すべての取引が 1 日の終わりに発生するものとして扱われる場合、流入の 1 日あたりの重みがゼロであるため、開始値 A はゼロになり、平均資本の値はゼロになり、修正ディーツ収益は計算できません。
こうした問題の一部は、修正ディーツ法をさらに調整して、始値で購入し、終値で売却するようにすれば解決されますが、より洗練された例外処理によって、より良い結果が得られます。
すべての取引が 1 日のうちの 1 つの時点で発生したものとして扱われる場合、ポートフォリオのリターンを分解するときに別の困難が生じることがあります。
例えば、ある銘柄を100ドルで保有し、日中に110ドルで売却したファンドを考えてみましょう。同日、別の銘柄を110ドルで購入し、120ドルで取引を終えるとします。それぞれの銘柄のリターンは10%で、120/110 − 1 = 9.0909%(4日足)となり、ポートフォリオのリターンは20%となります。これらの2つの資産のリターンをポートフォリオのリターンに加算するために必要な資産ウェイトw i(時間ウェイトW iとは異なります)は、最初の銘柄では1200%、2番目の銘柄では-1100%となります。
2 番目の在庫は不足していないため、このような重みは不合理です。
問題は、1 日が単一の個別の時間間隔として扱われる場合にのみ発生します。
通常、平均資本はプラスです。期間内の資金流出が大きく、かつ早期に発生した場合、平均資本はマイナスまたはゼロになることがあります。平均資本がマイナスの場合、修正ディーツ収益率は、利益が出ているときはマイナス、損失が出ているときはプラスになります。これは、投資が実際には負債やショートポジションではない場合でも、負債やショートポジションの挙動に似ています。平均資本がゼロの場合、修正ディーツ収益率は計算できません。平均資本がゼロに近い場合、修正ディーツ収益率は大きくなります(大きくプラス、または大きくマイナス)。
部分的な回避策の一つとして、まず例外を捕捉し、例えば開始値(または最初の流入)が正で平均資本が負の場合を検出するという方法があります。この場合、単純リターン法を用いて、終了値を流出分に合わせて調整します。これは、構成銘柄の寄与の合計に相当し、寄与は単純リターンと開始値に応じたウェイトに基づきます。
たとえば、保有資産の一部のみが、期間の比較的早い段階で、合計開始価格よりも大幅に高い価格で売却されるシナリオでは、次のようになります。
利益または損失は、終了値 - 開始値 + 流出です。
利益があり、ポジションはロングなので、直感的にはプラスのリターンが期待できます。
この場合の平均資本は次のようになります。
この場合、修正ディーツリターンは外れます。ロングポジションであるにもかかわらず、平均資本がマイナスになっているためです。この場合の修正ディーツリターンは以下のとおりです。
実際には、開始値はプラスであるものの、平均資本はマイナスとなっていることに気づきます。さらに、空売りは発生していません。つまり、保有株式数は常にプラスです。
次に、売却した株式からの単純な収益を測定します。
そして最後にまだ保有されていた株式から:
これらのリターンを、開始ポジション内の株式のこれら 2 つの部分の重みと組み合わせると、次のようになります。
これにより、全体的なリターンへの貢献は次のようになります。
これらの貢献の合計がリターンです。
これは、流出の最終値を調整する単純な戻り値と同じです。
この回避策には限界があります。保有資産をこのように分割できる場合にのみ可能です。
この方法は理想的ではありません。さらに2つの理由があります。1つは、すべてのケースをカバーしていないこと、もう1つは修正ディーツ法と矛盾していることです。他の資産の修正ディーツ拠出金と組み合わせると、構成資産の拠出金の合計が全体のリターンに一致しなくなります。
平均資本がマイナスになるもう一つの状況は、空売りです。株式を購入するのではなく、借り入れて売却します。株価が下落しても損失ではなく利益が出ます。つまり、ポジションは資産ではなく負債となります。利益がプラスで平均資本がマイナスの場合、修正ディーツリターンはマイナスとなり、株式数は変わらないものの、負債の絶対値が減少したことを示します。
株式購入後、購入株数よりも多くの株式を売却し、空売りポジション(マイナスの株式数)となった場合も、平均資本はマイナスになる可能性があります。購入時には資産であったものが、売却後には負債となります。修正ディーツ・リターンの解釈は状況によって異なります。
Function georet_MD ( myDates , myReturns , FlowMap , scaler ) ' この関数は、時系列の修正ディーツ リターンを計算します' ' 入力。' myDates。日付の Tx1 ベクトル' myReturns。財務リターンの Tx1 ベクトル' FlowMap。日付 (左の列) とフロー (右の列) の Nx2 行列' scaler。リターンを適切な頻度にスケーリングします' ' 出力。' 修正ディーツ リターン。' ' フローのすべての日付が、指定された日付ベクトルに存在する必要があることに注意してください。' フローが入力されると、1 期間後にのみ累積が開始されます。' Dim i , j , T , N As Long Dim matchFlows (), Tflows (), cumFlows () As Double Dim np As Long Dim AvFlows , TotFlows As Double' ディメンションを取得しますIf StrComp ( TypeName ( myDates ), "Range" ) = 0 Then T = myDates . Rows . Count Else T = UBound ( myDates , 1 ) End If If StrComp ( TypeName ( FlowMap ), "Range" ) = 0 Then N = FlowMap . Rows . Count Else N = UBound ( FlowMap , 1 ) End If' Redim 配列ReDim cumFlows ( 1 To T , 1 To 1 ) ReDim matchFlows ( 1 To T , 1 To 1 ) ReDim Tflows ( 1 To T , 1 To 1 )'フローのベクトルを作成します。For i = 1 To N j = Application.WorksheetFunction.Match ( FlowMap ( i , 1 ) , myDates , True ) matchFlows ( j , 1 ) = FlowMap ( i , 2 ) Tflows ( j , 1 ) = 1 - ( FlowMap ( i , 1 ) - FlowMap ( 1,1 ) ) / ( myDates ( T , 1 ) - FlowMap ( 1,1 ) ) If i = 1 Then np = T - j Next i' 累積フローFor i = 1 To T If i = 1 Then cumFlows ( i , 1 ) = matchFlows ( i , 1 ) Else cumFlows ( i , 1 ) = cumFlows ( i - 1 , 1 ) * ( 1 + myReturns ( i , 1 )) + matchFlows ( i , 1 ) End If Next iAvFlows = Application.WorksheetFunction.SumProduct ( matchFlows , Tflows ) TotFlows = Application.WorksheetFunction.Sum ( matchFlows )georet_MD = ( 1 + ( cumFlows ( T , 1 ) - TotFlows ) / AvFlows ) ^ (スケーラー/ np ) - 1終了関数プライベート静的double modificationDietz ( double emv 、double bmv 、double cashFlow [] 、int numCD 、int numD [] ) {/* emv: 終了時市場価値 * bmv: 開始時市場価値 * cashFlow[]: キャッシュフロー * numCD: 期間内の実際の日数 * numD[]: 期間開始からcashFlow[]の日付までの日数 */double md = - 99999 ; // デバッグ番号で修正されたディーツを初期化する試してください{ double [] weight =新しいdouble [ cashFlow . length ] ;if ( numCD <= 0 ) {新しいArithmeticException ( "numCD <= 0" )をスローします。 }for ( int i = 0 ; i < cashFlow . length ; i ++ ) { if ( numD [ i ] < 0 ) { throw new ArithmeticException ( "numD[i]<0 , " + "i=" + i ); } weight [ i ] = ( double ) ( numCD - numD [ i ] ) / numCD ; }double ttwcf = 0 ; //合計時間加重キャッシュフローfor ( int i = 0 ; i < cashFlow.length ; i ++ ) { ttwcf += weight [ i ] * cashFlow [ i ] ; }double tncf = 0 ; //合計純キャッシュフローfor ( int i = 0 ; i < cashFlow.length ; i ++ ) { tncf + = cashFlow [ i ] ; }md = ( emv - bmv - tncf ) / ( bmv + ttwcf ); } catch ( ArrayIndexOutOfBoundsException e ) { e.printStackTrace ( ) ; } catch ( ArithmeticException e ) { e.printStackTrace ( ) ; } catch ( Exception e ) { e.printStackTrace ( ) ; }mdを返します; }パブリック関数MDIETZ ( dStartValue As Double 、dEndValue As Double 、iPeriod As Integer 、rCash As Range 、rDays As Range ) As Double'Jelle-Jeroen Lamkamp 2008年1月10日Dim i As Integer : Dim Cash () As Double : Dim Days () As Integer Dim Cell As Range : Dim SumCash As Double : Dim TempSum As Double'何らかのエラー トラップIf rCash . Cells . Count <> rDays . Cells . Count Then MDIETZ = CVErr ( xlErrValue ): Exit Function If Application . WorksheetFunction . Max ( rDays ) > iPeriod Then MDIETZ = CVErr ( xlErrValue ): Exit FunctionReDim Cash ( rCash . Cells . Count - 1 ) ReDim Days ( rDays . Cells . Count - 1 )i = 0 rCashの各セルについてCash ( i ) =セル.値: i = i + 1次のセルi = 0 rDays内の各セルについてDays ( i ) =セル.値: i = i + 1次のセルSumCash = Application.WorksheetFunction.Sum ( rCash )TempSum = 0 For i = 0 To ( rCash . Cells . Count - 1 ) TempSum = TempSum + ((( iPeriod - Days ( i )) / iPeriod ) * Cash ( i ))次のiMDIETZ = ( dEndValue - dStartValue - SumCash ) / ( dStartValue + TempSum )終了関数その後、金融サービス業界を支援する米国に拠点を置く組織である銀行管理協会(BAI)は、ディーツの研究に基づいて収益率の計算ガイドラインを策定しました。
この手法を若干改良したのが、日加重法、あるいは修正ディーツ法である。この手法では、キャッシュフローと期首の間の期間に対応する係数でキャッシュフローを調整します。
これらの収益計算方法の 1 つである修正ディーツ法は、今でも定期的な投資収益を計算する最も一般的な方法です。