実質年率(APR)計算
名目12%を毎月複利で計算すると、実質年率は12.6825%になり、表示より0.6825ポイント高くなります。ローンを比べたり返済額を計算したりする前に、実質の年率に直せます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 名目金利
- 0.12
- 複利計算の期間数
- 12
- Apr
- 0.126825
- APR(実質年率) (%)
- 12.6825
- 実効と名目の差(ポイント)
- 0.6825
このAPR計算ツールは、あらゆるローン案内に記載される2つの数値、すなわち名目年利と複利の頻度を受け取り、複利を考慮した場合にそのローンが1年間で実際にかかるコストである実質年率を返します。毎月複利の名目金利12%は、年間12%ではありません。実際にはそれ以上になり、その差は複利回数が増えるごとに大きくなります。金利を小数で、年間の複利回数を整数で送信すると、実質APR、その値をパーセントで表した数値、そして名目金利と実質金利の差(パーセントポイント)が返されます。
名目金利とAPRが同じ数値にならない理由
貸し手が名目年利を提示するのは、その方が小さく見えるからです。その数値が正しいのは、利息が年に1回だけ加算される場合に限られます。利息が毎月、毎日、あるいは連続的に加算されるようになると、各期間の利息自体が新たな利息を生み始め、12か月間に実際に支払う金額は表面の数字を上回ります。
実質年率は正直な数値です。複利の効果を単一の年率に織り込むため、毎月複利の名目金利12%は約12.68%になり、同じ金利を毎日複利にすると約12.75%になります。一方が毎月複利、もう一方が毎日複利である2つのローンを名目金利で比較するのは、異なるもの同士を比べるようなものです。
オファーを比較する場合、返済能力のチェックを構築する場合、契約を監査する場合、この換算は月々の返済額や償却の計算よりも先に行うべき最初の処理です。名目金利から始めると、その後のすべての計算に誤差が引き継がれるからです。ほとんどの法域の規制当局が貸し手にAPR形式の実質的な数値の開示を義務付けているのは、まさにこのためです。
名目金利だけでは体系的に誤解を招き、複利の頻度は借り手がめったに目にしない細字の注意書きに埋もれてしまうからです。
換算の仕組み
計算式は閉じた形で正確です。名目金利を年間の複利回数で割って期間ごとの利率を求め、1を加え、それを回数で累乗し、1を引きます。名目金利 r を年に m 回複利にする場合、APR = (1 + r/m)^m − 1 です。
名目金利は小数で受け付けます(12ではなく0.12)。複利回数は正の整数で、毎月なら12、四半期なら4、半年なら2、毎年なら1、毎日なら365です。小数の複利頻度はこの式では意味を持たないからです。
名目金利は −1 までの負の値も許容され、デフレやペナルティのシナリオに対応できます。−1 を下回ると式が意味を失うため拒否されます。実質APRとともに、同じ値をパーセントで表した数値と、名目金利と実質金利の差(パーセントポイント)も返されるため、レポートに必要な形式をそのまま引用でき、追加の計算は不要です。
融資ワークフローにおける位置付け
金利の比較は最も分かりやすい用途です。受け取ったすべてのオファーをこの換算に通し、表面の金利ではなく実質コストで順位付けします。価格設定エンジンは、すべての商品の金利を保存前にAPRに正規化するため、下流の見積もりが各商品の複利方式を記憶しておく必要に左右されません。
コンプライアンスツールは、契約の名目金利と複利条項から開示されたAPRを再計算し、許容範囲を超えるずれにフラグを立てます。金融コンテンツサイトは、各商品表の隣に実質金利をインラインで計算して表示します。計算は決定的で、ネットワーク呼び出しも乱数も日付も使わないため、同じ入力には常に同じ出力が返ります。
活用例
ローンオファーを同等の条件で比較する
各オファーの名目金利と複利頻度を実質APRに換算し、表面の数字ではなく実際の年間コストで順位付けします。
契約に記載されたAPRを監査する
名目金利と複利条項から実質金利を再計算し、許容範囲を超えてずれている開示にフラグを立てます。
価格設定エンジンで金利を正規化する
すべての商品を取り込み時に実質APRとして保存し、下流の見積もりや償却が複利方式に依存しないようにします。
よくある質問
どのような複利頻度が使えますか?
年間の回数として任意の正の整数が使えます。毎年は1、半年は2、四半期は4、毎月は12、毎日は365です。
結果は正確ですか?
計算式は倍精度で計算される閉じた形の累乗で、その後小数点以下6桁に丸められるため、どのマシンでも出力はバイト単位で同一です。同じ入力には常に同じ出力が返ります。
実質年率が名目金利より高くなるのはなぜですか?
各期の利息にもさらに利息が付くためです。名目12%は毎月複利で約12.68%、毎日複利で約12.75%になり、複利の回数が増えるほど差が広がります。
複利の回数が違うローンはどう比べますか?
それぞれの名目金利を実質年率に直し、その数字で順位を付けます。毎月複利と毎日複利のローンを表示金利のまま比べても、正しい比較にはなりません。
名目金利がマイナスでも計算できますか?
マイナス1までなら計算できます。デフレや違約金のような場面に対応するためで、それを下回ると式が意味を失うので受け付けません。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/fin/apr \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"nominal_rate":0.12,"compounding_periods":12}'const res = await fetch("https://api.kit.forhosting.com/fin/apr", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"nominal_rate": 0.12,
"compounding_periods": 12
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/fin/apr",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"nominal_rate": 0.12,
"compounding_periods": 12
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/fin/apr", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"nominal_rate":0.12,"compounding_periods":12}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"nominal_rate":0.12,"compounding_periods":12}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/fin/apr", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"nominal_rate": 0.12,
"compounding_periods": 12
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "fin.apr",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
ブラウザー上では無料で動作し、APIとして利用する場合は1リクエストにつき $0.002 です。
名目金利とAPRが同じ数値にならない理由
両方をAPRに換算すれば同じ土台で比較でき、それこそがこのエンドポイントが1回の呼び出しで行うことです。
換算の仕組み
このエンドポイントはその式を倍精度演算で直接適用し、結果を小数点以下6桁に丸めるため、どのマシンでも出力がバイト単位で一致します。複利回数が正の整数でないもの、つまりゼロ、負の数、2.5のような小数、文字列は、invalid_input エラーで拒否され、課金もされません。
融資ワークフローにおける位置付け
しかし、このエンドポイントは自動化の中でも真価を発揮します。
技術的な質問
料金はいくらですか?
1リクエストにつき $0.002 です。このページのブラウザー上では無料で実行でき、結果も同一です。
金利はパーセントと小数のどちらで渡しますか?
小数で渡します。12%なら0.12です。レスポンスには同じ結果を100倍した apr_percent が含まれるため、ご自身で変換する必要はありません。
無効な複利の値を送るとどうなりますか?
対象のフィールド名を示す invalid_input エラーでリクエストが失敗し、課金はされません。無効な入力がクォータを消費することはありません。
名目金利は負の値にできますか?
はい、−1(期間ごとの全損失)まで可能です。それを下回ると式が意味を失うため、リクエストは拒否されます。