年率換算リターン計算
5年間で10,000が16,105.10に増えた投資は、合計で61.05%増えましたが、複利を考えると年率はちょうど10%です。保有期間の違う投資を同じ年率で比べられます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 初期値
- 10,000
- 最終価値
- 16,105.1
- 年数
- 5
- 年率換算リターン (%)
- 10
- 年率換算リターン
- 0.1
- 総リターン (%)
- 61.051
初期値、最終値、保有期間(年)を入力すると、最初の数値を2番目の数値へ導く一定の年率(幾何平均の年率リターン)と、全期間のトータルリターンを返します。市場データや途中のキャッシュフローへの仮定なしに決定論的に動作するため、同じ入力からは常に同じ答えが得られます。ブラウザでの1回の呼び出しでも、レポートパイプラインからの100万回の呼び出しでも同じです。
年率換算リターンが実際に測るもの
5年間で10,000から16,105.10に増えた投資は合計61.05パーセントの利益ですが、この数字は18か月保有した別の投資との比較には使えません。年率換算リターンは、観測された変化を再現する一定の年間成長率(複利)を求めることで、あらゆる保有期間を年単位の数値に換算します。
数式では r = (最終値 / 初期値)^(1 / 年数) − 1 で、ここではパーセントで表します。上の例では答えはちょうど年率10パーセントです。式は成長倍率のn乗根を取るため、複利を正しく考慮します。
10パーセントが2年続くと合計は20パーセントではなく21パーセントです。30か月保有したポジションは単純に2.5年です。結果は幾何平均の年率リターンであり、利益が再投資され、比較可能な年間数値が必要な場合に正しい尺度です。
入力、検証、結果の読み方
3つの入力はすべて必須です。初期値はゼロより大きい必要があります。ゼロを基準とする成長倍率は定義できないからです。
最終値はゼロでも構いません。これは全損を表し、年率リターンはマイナス100パーセントになります。年率の値が負の場合、その投資は複利ベースで年間に価値を失ったことを意味します。
使うべき場面 — 使うべきでない場面
不動産の購入価格と売却価格、途中入出金のない口座の期首残高と期末残高、2つのレポート日におけるポジションの評価額などです。保有期間の異なる投資を正規化して公平に比較したり、ダッシュボードや顧客レポートに年間パフォーマンスの数値を埋めたりするのに最適です。期間中に資金の出入りがあった場合は使わないでください。
入金や出金は単純な2点式を歪めるため、その場合は実際のキャッシュフローに対する内部収益率の計算が適切です。また、構造上ボラティリティは平滑化されます。倍になり、半分になり、また倍になった資産は、両端の間の純粋な経路だけを示します。
両側でまったく同じコードが動くため、テストでお使いになる数字がそのままお支払いいただく数字です。
活用例
保有期間の異なる投資を比較する
3年保有の株式ポジションと18か月の短期売買を同じ年率ベースに揃えてから、どちらの成績が良かったかを判断できます。
レポートに年間パフォーマンスを追記する
期首・期末の残高をレポートパイプラインに流し、すべての口座・ファンド・ポートフォリオに一貫した年率の数値を添付できます。
目標達成の有無を確認する
年率8パーセントを目指していた投資が、投じた資金と受け取った金額から見て、実際にその通りだったかを検証できます。
よくある質問
最終値はゼロでも大丈夫ですか?
はい。 最終値ゼロは全損を表し、年率リターンはマイナス100パーセントになります。
期間中の入金や出金には対応していますか?
いいえ。 2つの評価時点の間で買って保有する単一のポジションを前提としています。途中のキャッシュフローがある場合は内部収益率の計算が必要です。
結果が負になることはありますか?
はい。 最終値が初期値を下回る場合、年率リターンは負になり、複利ベースの年間損失を反映します。
合計リターンを年数で割らないのはなぜですか?
利益が複利で増えるためです。10%の年が2年続くと合計は20%ではなく21%になります。そのため成長倍率の累乗根を取り、本当の年率を求めます。
端数のある保有期間も計算できますか?
できます。年数は小数で入力でき、例えば2年半なら2.5と入れます。受け付けないのは、ゼロやマイナスの期間だけです。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/fin/annualized-rate-of-return \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"initial_value":10000,"final_value":16105.1,"years":5}'const res = await fetch("https://api.kit.forhosting.com/fin/annualized-rate-of-return", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"initial_value": 10000,
"final_value": 16105.1,
"years": 5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/fin/annualized-rate-of-return",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"initial_value": 10000,
"final_value": 16105.1,
"years": 5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/fin/annualized-rate-of-return", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"initial_value":10000,"final_value":16105.1,"years":5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"initial_value":10000,"final_value":16105.1,"years":5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/fin/annualized-rate-of-return", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"initial_value": 10000,
"final_value": 16105.1,
"years": 5
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "fin.annualized_rate_of_return",
"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は、あらゆる投資比較が行き着く一つの問いに答えます。「これは年間でどれくらい増えたのか?」
年率換算リターンが実際に測るもの
エンドポイントが必要とするのは初期値・最終値・年数の3つだけで、年数は小数も使えます。
入力、検証、結果の読み方
保有期間は正である必要があり、年数がゼロまたは負のリクエストは invalid_input エラーで拒否され、課金されることはありません。レスポンスは3つの入力をそのまま返すため、記録は自己記述的なまま保たれ、さらに年率リターンをパーセントと小数の両方で、またコンテキストとして全期間のトータルリターンも返します。フィールドが欠けているか有限の数値でない場合、エラーメッセージは問題のフィールド名を示すため、フォームやパイプラインが修正すべき箇所を正確に示せます。
使うべき場面 — 使うべきでない場面
投資の両端の値しか分からない場合にこのエンドポイントをお使いください。この計算はAPI経由で1回 $0.002、このページのブラウザ上では無料で実行できます。
技術的な質問
料金はいくらですか?
API経由で1リクエスト $0.002 です。このページのブラウザ上でも無料で実行できます。
どの計算式を使いますか?
r = (final_value / initial_value)^(1 / years) − 1 で、パーセントで返します。複利を考慮した幾何平均の年率リターンです。
保有期間がゼロまたは負の場合はどうなりますか?
years フィールドを指摘する invalid_input エラーで拒否され、課金されません。保有期間はゼロより大きい必要があります。