Calculation Methodology
RealReturn calculates real, inflation-adjusted returns and compares them against benchmarks. This page explains exactly how.
1. Nominal return
The nominal return is calculated as the percentage change from the purchase value to the current value in the same currency:
Where Cost basis = quantity × purchase price and Current value = quantity × current price.
For positions denominated in a foreign currency, both the price change and the exchange-rate change contribute to the nominal return in the user's base currency.
2. Real (inflation-adjusted) return
We apply the Fisher equation to convert a nominal return to a real return:
The inflation used is the cumulative CPI for the position's currency over the exact holding period — not the latest annual rate scaled by days. The currency of each position determines which price index is used: TRY positions use actual month-by-month TÜFE data chained from the purchase date to today (sourced from TCMB/TÜİK via proxy). For USD, EUR, and GBP positions, the World Bank annual CPI rate (WDI: FP.CPI.TOTL.ZG) is used; it is distributed proportionally across the holding period. Annual-rate results for non-TRY currencies are approximate and are flagged with "~" in the UI. This matters especially for long holding periods in high-inflation environments, where a single annual rate extrapolated backwards can diverge significantly from actual cumulative inflation.
Where CPI data is not yet available for the most recent period (publication lag typically ranges from a few weeks to a few months for monthly series, up to a year for annual series), the gap is filled by extrapolating with the latest known rate. These estimates are flagged with "~" in the UI. Where no CPI data exists at all, the UI shows "—" rather than silently using a fallback.
When a portfolio contains positions in multiple currencies, each position's nominal return is first converted to the user's base currency (using the purchase-date FX rate stored at entry and today's live rate), then deflated with the base currency's cumulative inflation. The aggregate real return is the cost-weighted average of these per-position real returns in base currency. The dashboard shows "—" only when FX or inflation data are missing for the entire portfolio.
Inflation data coverage by base currency:
| Currency | Inflation series | Precision |
|---|---|---|
| TRY | TCMB/TÜİK monthly TÜFE (via OECD) | Monthly |
| EUR | Eurostat HICP (prc_hicp_midx, base 2015=100) | Monthly |
| SEK | Eurostat HICP | Monthly |
| NOK | Eurostat HICP | Monthly |
| DKK | Eurostat HICP | Monthly |
| USD | World Bank WDI (FP.CPI.TOTL.ZG) | Annual (~) |
| GBP | World Bank WDI | Annual (~) |
| CAD | World Bank WDI | Annual (~) |
| AUD | World Bank WDI | Annual (~) |
| CHF | Eurostat HICP (fallback: World Bank WDI) | Monthly / Annual (~) |
| JPY | World Bank WDI | Annual (~) |
| NZD | World Bank WDI | Annual (~) |
Inflation series selection rule: The series used is determined by the user's base currency and country. For EUR-base users in a eurozone country (e.g. Germany, France, Finland), that country's own Eurostat HICP series is used rather than the Euro area aggregate. For EUR-base users whose country is not a eurozone member, the Euro area (EA) HICP is used as the representative series. The label in the UI always reflects the actual series: "Germany HICP", "France HICP", "Euro area HICP", etc. — not a generic label.
"Annual (~)" means the year-by-year rate is interpolated using the holding-period formula; results are marked "~" in the UI when the approximation spans more than a few months.
A positive real return means the investment grew faster than inflation — purchasing power increased. A negative real return means inflation eroded the gains.
3. Currency adjustment
When an asset is priced in a currency different from the user's base currency, we convert using the exchange rate at the time of purchase and at the current date. The real return is then calculated in the base currency, so both price appreciation and currency fluctuations are reflected.
The same principle applies to benchmark comparisons: the benchmark is converted to the position's currency before the return is computed. A benchmark's currency is read from the Yahoo Finance meta.currency field — it is never inferred from the ticker symbol. When benchmark currency equals position currency, no conversion is applied.
4. Benchmark comparison
RealReturn supports several benchmarks. For each position, the benchmark is calculated as if the same amount had been invested in the chosen benchmark on the purchase date. Multiple purchases of the same asset, partial sales and closed positions are not yet modelled.
The benchmark return is always expressed in the position's currency before comparison. For example, S&P 500 (USD) vs. a TRY position uses the USD/TRY rate at purchase date and current date; a BIST100 (TRY) benchmark vs. a USD position divides by the USD/TRY rate. If the required exchange rate is unavailable, the benchmark card shows "—" rather than using the raw price silently.
Available benchmarks:
- Savings rate / deposit (TR): Only shown for TRY-denominated positions. The benchmark compounds the indicative TRY deposit rate (currently ~45%/yr, based on the TCMB policy rate) over the holding period using the formula (1 + r)days/365 − 1. The effective rate is shown on the benchmark card. It is not shown for foreign-currency positions because a TRY deposit rate applied to a USD position would be meaningless — the currencies are incompatible.
- Gram Gold / Gram Silver (TR/USD): For TRY positions, uses the TRY spot price per gram (COMEX futures × USD/TRY rate at the purchase date). For USD positions, uses the USD spot price per gram directly from the metals price feed. Shown as "—" for positions in other currencies.
- S&P 500 / stock index: The index level on the purchase date vs. today (or the closest available trading day), converted to position currency via Yahoo Finance FX rates.
- Gold (global): COMEX GC=F (USD/troy oz) converted to position currency at purchase date and current date.
- Custom benchmark: Any Yahoo Finance symbol can be used. Its currency is read from the Yahoo Finance
meta.currencyfield (never inferred from the ticker symbol); if the field is missing, the card shows "Benchmark currency unknown" rather than assuming a currency silently.
The benchmark return is then inflation-adjusted using the same Fisher equation so comparisons are apples-to-apples.
Inflation data accuracy note: For Turkey, monthly TÜFE series from TÜİK/TCMB (via OECD) are used; the last few weeks before the publication date are estimated with the most recent annual rate. For all other countries, the source is World Bank WDI (FP.CPI.TOTL.ZG) — annual averages for past years, with the current year extrapolated using the last published rate. WDI is typically 1–2 years delayed; the "est." marker appears when recent periods rely on extrapolation. MSCI World is proxied by URTH ETF on Yahoo Finance (adjusted close, dividends reinvested, USD-denominated; converted to the base currency via FX).
5. Opportunity cost
The opportunity cost (or gain) is the difference between what the benchmark would have returned and what the user's investment actually returned, expressed in the base currency:
A positive number means you "missed" this amount by choosing your investment over the benchmark. A negative number means you beat the benchmark.
6. Data sources
| Data type | Source | Update frequency |
|---|---|---|
| Stock and ETF prices | Yahoo Finance (via proxy) | 15-min delay during market hours |
| Turkish mutual funds (TEFAS) | TEFAS API | End of day |
| Cryptocurrency prices | CoinGecko API | ~5 minutes |
| Exchange rates | Frankfurter API (ECB data) | Daily |
| Gold & silver spot prices | gold-api.com | ~5 minutes |
| CPI / inflation data | World Bank API (WDI) | Annual rate; lag up to 1 year |
| Deposit / savings rates | Central bank publications | Updated when rates change |
All data is provided for informational purposes only. Prices may be delayed or inaccurate. Past data is not guaranteed to be complete. See our Terms of Use.
7. Rounding and precision
Monetary values are displayed rounded to 2 decimal places in the UI. Internal calculations use full floating-point precision. Returns are shown as percentages rounded to 2 decimal places.
8. Limitations
- The inflation figure is the World Bank's latest available annual rate; this data can lag by up to one year.
- Dividend income and interest payments are not included in price-based return calculations unless entered manually as cash flows. Taxes and withholding are not deducted.
- Bid-ask spreads, transaction costs and slippage are not modelled.
- Deposit rates used are indicative and may differ from the rate actually received.
- Total return is calculated on cost basis and is not annualised; TWR and XIRR are not yet available.
- Only open positions are included; realised gains/losses from closed positions are not reflected.
- Where monthly CPI data is unavailable for the most recent months (publication lag), the gap is filled by extrapolating with the latest annual rate. These estimates are marked with "~" in the UI.
Hesaplama Yöntemi
RealReturn, enflasyona göre düzeltilmiş gerçek getirileri hesaplayarak kıyaslama ölçütleriyle karşılaştırır. Bu sayfa tam olarak nasıl yapıldığını açıklar.
1. Nominal getiri
Nominal getiri, aynı para biriminde satın alma değerinden bugünkü değere yüzdesel değişim olarak hesaplanır:
Maliyet = adet × alış fiyatı ve Güncel değer = adet × güncel fiyat.
2. Reel (enflasyona göre düzeltilmiş) getiri
Nominal getiriyi reel getiriye dönüştürmek için Fisher denklemi kullanılır:
Kullanılan enflasyon, yıllık oran ölçeklenmesi değil; pozisyonun para biriminin tam tutma süresi boyunca kümülatif TÜFE/CPI'ıdır. Her pozisyon için hangi fiyat endeksinin kullanılacağını o pozisyonun para birimi belirler: TRY pozisyonları için TCMB/TÜİK kaynaklı aylık TÜFE verileri alış tarihinden bugüne zincirlenip bileşik hesaplanır. USD, EUR ve GBP pozisyonları için Dünya Bankası yıllık CPI oranı (WDI: FP.CPI.TOTL.ZG) kullanılır; tutma süresine orantılı olarak dağıtılır. TRY dışı para birimleri için yıllık oran tabanlı sonuçlar yaklaşıktır ve arayüzde "~" ile işaretlenir. Bu, özellikle uzun vadeli yatırımlarda ve yüksek enflasyon dönemlerinde kritik öneme sahiptir.
En güncel döneme ait CPI verisi henüz yayınlanmamışsa (yayın gecikmesi aylık seriler için birkaç hafta ile birkaç ay, yıllık seriler için bir yıla kadar uzayabilir), eksik dönem bilinen son oran ile tahmin edilir. Bu tahmini değerler arayüzde "~" ile işaretlenir. Hiç CPI verisi yoksa arayüz sessizce bir değer göstermek yerine "—" gösterir.
Portföyde birden fazla para biriminde pozisyon varsa her pozisyonun nominal getirisi önce temel para birimine çevrilir (alış tarihindeki kayıtlı kur ve bugünkü canlı kur kullanılarak), ardından temel para biriminin kümülatif enflasyonuyla düzeltilir. Dashboard toplam reel getirisi, bu pozisyon başına temel para birimi reel getirilerinin maliyet ağırlıklı ortalamasıdır. "—" yalnızca portföyün tamamı için kur ya da enflasyon verisi eksikse gösterilir.
Temel para birimine göre enflasyon verisi kapsamı:
| Para birimi | Enflasyon serisi | Hassasiyet |
|---|---|---|
| TRY | TCMB/TÜİK aylık TÜFE (OECD üzerinden) | Aylık |
| EUR | Eurostat HICP (prc_hicp_midx, baz 2015=100) | Aylık |
| SEK | Eurostat HICP | Aylık |
| NOK | Eurostat HICP | Aylık |
| DKK | Eurostat HICP | Aylık |
| USD | Dünya Bankası WDI (FP.CPI.TOTL.ZG) | Yıllık (~) |
| GBP | Dünya Bankası WDI | Yıllık (~) |
| CAD | Dünya Bankası WDI | Yıllık (~) |
| AUD | Dünya Bankası WDI | Yıllık (~) |
| CHF | Eurostat HICP (yedek: Dünya Bankası WDI) | Aylık / Yıllık (~) |
| JPY | Dünya Bankası WDI | Yıllık (~) |
| NZD | Dünya Bankası WDI | Yıllık (~) |
Enflasyon serisi seçim kuralı: Kullanılan seri, kullanıcının temel para birimi ve ülkesine göre belirlenir. EUR tabanı + avro bölgesi ülkesi (ör. Almanya, Fransa, Finlandiya): o ülkenin kendi Eurostat HICP serisi kullanılır, Avro bölgesi toplamı değil. EUR tabanı + avro bölgesi dışı ülke: temsili seri olarak Avro bölgesi (EA) HICP kullanılır. Arayüzdeki etiket her durumda gerçek seriyi yazar: "Germany HICP", "France HICP", "Euro area HICP" vb.
"Yıllık (~)" ifadesi, tutma süresi formülüyle yıllık oranın interpolate edildiğini gösterir; yaklaşımın birkaç ayı aşması halinde arayüzde "~" işareti görünür.
Pozitif reel getiri, yatırımın enflasyondan hızlı büyüdüğü anlamına gelir — satın alma gücü arttı. Negatif reel getiri, enflasyonun kazancını eritti demektir.
3. Kur düzeltmesi
Varlık, kullanıcının temel para biriminden farklı bir para biriminde fiyatlanıyorsa, alım tarihi ve bugünkü kur kullanılarak dönüşüm yapılır. Reel getiri temel para biriminde hesaplanır; böylece hem fiyat değişimi hem de kur hareketleri yansıtılır.
Aynı ilke kıyaslama karşılaştırmaları için de geçerlidir: kıyaslamanın para birimi, Yahoo Finance meta.currency alanından okunur; sembol adından tahmin edilmez. Kıyaslama para birimi pozisyon para birimiyle aynıysa dönüşüm uygulanmaz. Farklıysa kıyaslama fiyatı, her iki tarihte de pozisyonun para birimine çevrilerek karşılaştırma yapılır.
4. Kıyaslama ölçütü karşılaştırması
RealReturn çeşitli kıyaslama ölçütlerini destekler. Her pozisyon, alış tarihinde aynı tutarla seçtiğin kıyaslamaya yatırılmış gibi hesaplanır. Aynı varlığa yapılan ek alımlar, kısmi satışlar ve kapanmış pozisyonlar henüz modellenmiyor.
Kıyaslama getirisi, karşılaştırmadan önce her zaman pozisyonun para birimine çevrilir. Örneğin S&P 500 (USD) ile TL pozisyon karşılaştırılırken alım tarihi ve bugünkü USD/TRY kuru kullanılır; BIST100 (TRY) ile USD pozisyon karşılaştırılırken TRY fiyat USD'ye bölünür. Gerekli kur verisi alınamazsa kıyaslama kartı ham fiyatla sessizce devam etmek yerine "—" gösterir.
- Mevduat / tasarruf oranı (TR): Yalnızca TRY pozisyonlarında gösterilir. Yatırılan tutar, TCMB politika faizine dayalı gösterge TRY mevduat oranını (~yıllık %45) (1 + r)gün/365 − 1 formülüyle dönem boyunca bileşik büyütür. Kullanılan oran benchmark kartında görünür. Döviz pozisyonlarında gösterilmez; USD pozisyonuna TRY mevduat faizi uygulamak anlamsız olacaktır — para birimleri uyumsuz.
- Gram Altın / Gram Gümüş (TR): TRY spot gram fiyatını (COMEX vadeli × USD/TRY) kullanır. Yalnızca TRY pozisyonlarında gösterilir; döviz pozisyonlarında yukarıdaki cross-currency nedeniyle "—" gösterilir.
- S&P 500 / hisse senedi endeksi: Alım tarihindeki endeks değerine karşı bugünkü değer; Yahoo Finance FX kurlarıyla pozisyon para birimine çevrilir.
- Altın (global): COMEX GC=F (USD/troy ons), alım tarihi ve bugünkü kur üzerinden pozisyon para birimine çevrilir.
- Özel kıyaslama: Herhangi bir Yahoo Finance sembolü kullanılabilir. Para birimi Yahoo Finance
meta.currencyalanından okunur (sembol adından tahmin edilmez); alan eksikse kart sessizce para birimi varsaymak yerine "Kıyaslama para birimi bilinmiyor" gösterir.
Kıyaslama getirisi de aynı Fisher denklemiyle enflasyona göre düzeltilir; karşılaştırmalar tutarlı bir temelde yapılır.
Enflasyon verisi doğruluğu: Türkiye için TÜİK/TCMB'nin aylık TÜFE serisi (OECD üzerinden) kullanılır; yayın gecikmesinden önceki son haftalar son yıllık oranla tahmin edilir. Diğer tüm ülkeler için kaynak Dünya Bankası WDI'dır (FP.CPI.TOTL.ZG) — geçmiş yıllar için yıllık ortalamalar, cari yıl için son yayımlanan oranla extrapolasyon. WDI tipik olarak 1–2 yıl gecikmeli yayınlanır; yakın dönem extrapolasyona dayanıyorsa "~tahmini" işareti görünür. MSCI World, Yahoo Finance'teki URTH ETF ile temsil edilir (adjusted close, temettü dahil, USD bazlı; FX üzerinden baz para birimine çevrilmiştir).
5. Fırsat maliyeti
Fırsat maliyeti (veya kazancı), kıyaslama ölçütünün ne kadar getireceği ile yatırımın gerçekte ne kadar getirdiği arasındaki fark olup temel para biriminde ifade edilir:
Pozitif sayı, kıyaslama yerine bu yatırımı seçerek bu kadar "kaçırdığın" anlamına gelir. Negatif sayı, kıyaslamayı geçtiğin anlamına gelir.
6. Veri kaynakları
| Veri türü | Kaynak | Güncelleme sıklığı |
|---|---|---|
| Hisse senedi ve ETF fiyatları | Yahoo Finance (proxy üzerinden) | Borsa saatlerinde 15 dk gecikme |
| Türk yatırım fonları (TEFAS) | TEFAS API | Gün sonu |
| Kripto para fiyatları | CoinGecko API | ~5 dakika |
| Döviz kurları | Frankfurter API (ECB verisi) | Günlük |
| Altın ve gümüş spot fiyatları | gold-api.com | ~5 dakika |
| TÜFE / enflasyon verisi | Dünya Bankası API (WDI) | Yıllık oran; bir yıla kadar gecikme |
| Mevduat / tasarruf oranları | Merkez bankası yayınları | Oranlar değiştiğinde güncellenir |
Tüm veriler yalnızca bilgi amaçlıdır. Fiyatlar gecikmeli veya hatalı olabilir. Ayrıntılar için: Kullanım Koşulları.
7. Yuvarlama ve hassasiyet
Parasal değerler arayüzde 2 ondalık basamağa yuvarlanarak gösterilir. İç hesaplamalar tam kayan noktalı hassasiyetle yapılır. Getiriler yüzde olarak 2 ondalık basamağa yuvarlanarak gösterilir.
8. Sınırlamalar
- Enflasyon için Dünya Bankası'nın en güncel yıllık oranı kullanılır; bu veri bir yıla kadar gecikmeli olabilir.
- Temettü ve faiz ödemeleri, nakit akışı olarak manuel girilmedikçe hesaplamalara dahil edilmez. Vergi ve stopaj düşülmez.
- Alış-satış makasları, işlem maliyetleri ve kayma modellenmez.
- Kullanılan mevduat oranları gösterge niteliğindedir; gerçekte alınan oranlardan farklı olabilir.
- Toplam getiri maliyete göre hesaplanır ve yıllık değildir; TWR ve XIRR henüz yok.
- Yalnızca açık pozisyonlar dahildir; satılmış pozisyonların gerçekleşmiş kâr/zararı dahil değildir.
- En güncel aylara ait aylık CPI verisi yayınlanmamışsa (yayın gecikmesi) eksik dönem yıllık oranla tahmin edilir; bu tahminler "~" ile işaretlenir.