この記事では(原則として金融部門の労働者にのみ適用されます)、CPMの計算例を挙げたいと思います。 おそらく誰かが役に立つでしょう。
重要! 少し前まで、議員は公式に変更を加えました。これは2014年9月1日にのみ施行されます。次のすべては新しい公式にのみ適しています。 この記事では、法律に基づくCPMの計算の技術的な実装のみを説明しています。
もっと重要! 以下の情報はすべて、ローンが1回の支払いで発行された場合、つまり、 借り手は一度お金を受け取り、所定の支払いスケジュールに従って返済が行われます。 このオプションは、発行されたローンの99%をカバーします(クレジットカードはカウントしません)。
実際、ここに獣があります:
用語の意味を理解する
UCSは、i、CWP、および数値100の3つの量の積として定義されます。使用されている用語と記号を分析しましょう。BP(基本期間)とは
消費者信用(ローン)契約に基づくBPは、消費者信用(ローン)契約に基づく支払いのスケジュールで最も頻繁に発生する標準的な時間間隔です。 消費者ローン(ローン)契約に基づく支払いのスケジュールで、1年未満または1年に等しい支払いの間に時間間隔がない場合、BP-1年。
実際、BPは支払い間の最も一般的な時間間隔です。 支払いスケジュールに繰り返しの時間間隔がなく、ロシア銀行によって別の手続きが確立されていない場合、その期間は標準期間に切り上げられたすべての期間の算術平均であるベース期間として認識されます。 標準の時間間隔は、日、月、年、および特定の日数または月数であり、1年の期間を超えません。 このようにして、PSUを定義できます。 支払いが毎月の場合、BP = 365/12〜= 30
NWPとは何ですか(暦年の基本期間の数)
法律の定義は非常にあいまいですが、私が理解しているように、これは1暦年に「適合する」基本期間の数です。
- 月払いの標準支払いスケジュールの場合:NWP = 12
- 四半期ごとの支払い:NWP = 4
- 年に1回以下の支払い:NWP = 1
- 支払いスケジュールが難しい場合:たとえば、最初の2回の支払いは四半期に1回、次に6回の支払いは1か月に1回、3回の支払いは1日1回、そして基本期間は1か月です。 NWP = 12(暦年は12 BP)。
iとは(10進数形式で表される基本期間の金利)
(少なくとも私には)理解することは不可能です。 おそらく、数iを決定することにはある程度の意味がありますが、この意味を直感的に理解することはできません。 iの検討方法-次のセクションで分析します。
私を数える方法
番号iの「物理的な」意味を理解しようとする後の試みに任せて、次の定義を与えます。数iは、次の方程式を解くことによって計算されます。
ここで:
- m-キャッシュフローの量。これは、支払スケジュールの支払回数に1を加えた金額に等しくなります(最初の支払から別の支払が発生します-ローンの発行)。
- DP-k番目のキャッシュフローのサイズ(マイナス記号付きのローン、プラス記号付きの返済)。
- Q to-ローンの日付からk番目のキャッシュフローまでの完全な基本期間の数。 Q toは次の式で計算できます。
Q to = floor [(DP to- DP 1 )/ BP]、ここで
- DP to-キャッシュフローの日付
- DP 1-最初のキャッシュフローの日付(つまり発行日)、
- BP-基本期間の期間、
- floor []-整数に切り捨てます。
- E to-ここで、あなたの脳が法律の文言から爆発しないように、すぐに式を書きます:
E k = mod [(DP to- DP 1 )/ BP] / BP、ここでmodは除算の剰余
PSK計算アルゴリズム
着信データ:2つの配列。 キーはキャッシュフロー番号、値は支払日と支払額です。発信データ:UCS値(数値)。
計算手順:
- NWP(基本期間の数)を計算します。 基本期間の数-365日間に該当する期間の数、つまり ChBP =床[365 / BP]。
- k回目の支払いごとに、DP k 、Q k 、E kを考慮します。
- 近似計算の方法では、小数点以下2桁までが考慮されます。
- NWP * i * 100を掛けます。
コード!
JavaScriptとVBAには既製のソリューションがあります(計算用のExcelファイルもあります)。 VBAとExcelを選ぶ理由
突然火災が発生し、2014年9月1日に何も機能しない場合、最も妥当なのは、少なくとも初めてCPMを計算できるように、契約の締結場所にエクセルプレートを送信することです。
例では、年間12%の割合で3か月間100,000ルーブルのローンのスケジュールを取ります。 発行日-2014年9月1日:
キー | キャッシュフロー日 | キャッシュフロー額 |
0 | 2014年9月1日 | -100,000 |
1 | 2014年10月1日 | 34 002.21 |
2 | 11/01/2014 | 34 002.21 |
3 | 12/01/2014 | 34 002.21 |
Javascriptソリューション
コード
jsfiddleのデモ: jsfiddle.net/exmmo/m5kbb0up/7
function psk() { // - var dates = [ new Date(2014, 8, 01), new Date(2014, 9, 01), new Date(2014, 10, 01), new Date(2014, 11, 01)]; // - var sum = [-100000, 34002.21, 34002.21, 34002.21 ]; var m = dates.length; // // bp bp=30; // : var cbp = Math.round(365 / bp); // - var days = []; for (k = 0; k < m; k++) { days[k] = (dates[k] - dates[0]) / (24 * 60 * 60 * 1000); } // Q var e = []; var q = []; for (k = 0; k < m; k++) { e[k] = (days[k] % bp) / bp; q[k] = Math.floor(days[k] / bp); } // 0 i s var i = 0; var x = 1; var x_m = 0; var s = 0.000001; while (x > 0) { x_m = x; x = 0; for (k = 0; k < m; k++) { x = x + sum[k] / ((1 + e[k] * i) * Math.pow(1 + i, q[k])); } i = i + s; } if (x > x_m) { i = i - s; } // var psk = Math.floor(i * cbp * 100 * 1000) / 1000; // alert(" = " + psk + " %"); }
VBA + Excelソリューション
コード
Excel + VBAのデモ: yadi.sk/i/oRTa8Id-a6UfV
列Aの2行目から始まるのは、キャッシュフローの日付です。
列Bでは、2行目からキャッシュフローの量が始まります。
列Bでは、2行目からキャッシュフローの量が始まります。
Sub psk() Dim dates() Columns("A:A").Select dates() = Application.Transpose(Range(ActiveCell, Cells(Rows.count, ActiveCell.Column).End(xlUp))) Dim summa() Columns("B:B").Select summa = Application.Transpose(Range(ActiveCell, Cells(Rows.count, ActiveCell.Column).End(xlUp))) Dim m As Integer m = UBound(dates) bp = 30 cbp = Round(365 / bp) ReDim Days(m) For k = 2 To m Days(k) = dates(k) - dates(2) Next ReDim e(m) ReDim q(m) For k = 2 To m q(k) = Days(k) \ bp e(k) = (Days(k) Mod bp) / bp Next i = 0 x = 1 x_m = 0 s = 0.000001 Do While x > 0 x_m = x x = 0 For k = 2 To m x = x + summa(k) / ((1 + e(k) * i) * ((1 + i) ^ q(k))) Next i = i + s Loop If x > x_m Then i = i - s End If psk = Round(i * cbp, 5) Cells(3, 7).Value = psk End Sub
おわりに
コードは完璧とはほど遠いもので、悲惨であると言う人もいるかもしれません。 たとえば、近似計算は、人類に知られている最も愚かな方法で実行されます。 理解して許してください、現在の状況では、提示可能なものを書くのに十分な時間がありません。 有罪、私はそれを修正します。あなたがコメントを持っているか、間違いを見つけた場合-報告してください、私は感謝します。 最も危険なことは、法律のテキストの最初の誤った解釈です。