Tarihsel Portföy Getirisi
Portföy Getiri Hesaplama
Description
Belirtilen portföydeki enstrümanların adetlerine göre, istenilen tarih aralığında günlük bazda kümülatif getiri hesaplar. Opsiyonel olarak bir referans sembole (örn: XU100, USDTRY) göre relatif getiri de hesaplanabilir.
Portföy ağırlıkları, her sembolün son fiyatı ve adedi üzerinden otomatik hesaplanır.
Eğer portföydeki bir sembolün başlangıç tarihinde datası yoksa, o sembol datası oluşana kadar hesaplamaya dahil edilmez ve kalan sembollerin ağırlıkları normalize edilir.
Başlangıç veya bitiş tarihi hafta sonu ya da tatil gününe denk gelirse, hesaplama en yakın işlem gününden başlar/biter.
Endpoint
HTTP POST
Endpoint https://apitest.matriksdata.com/dumrul/v1/historic-portfolio-return
Request Body Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| portfolio | array | true | Portföydeki semboller ve adetleri (maksimum 100 sembol) |
| portfolio[].symbol | string | true | Sembol kodu (örn: THYAO, GARAN) (fonlar da verilebilir) |
| portfolio[].quantity | number | true | Sembolün portföydeki adedi. short pozisyonlar için negatif verilebilir. |
| startDate | string | true | Başlangıç tarihi (YYYY-MM-DD, maksimum 3 yıl geriye) |
| endDate | string | true | Bitiş tarihi (YYYY-MM-DD) |
| relativeSymbol | string | false | Relatif getiri hesaplanacak referans sembol (portföyde bulunamaz) |
Response Fields
| Field | Type | Description |
|---|---|---|
| startDate | string | Başlangıç tarihi |
| endDate | string | Bitiş tarihi |
| portfolioTotalReturn | number | Portföyün toplam getirisi (%) |
| relativeSymbol | string | Referans sembol (varsa) |
| relativeSymbolTotalReturn | number | Referans sembolün toplam getirisi (%) |
| relativeTotalReturn | number | Portföyün referansa göre relatif getirisi (%) |
| timeSeries | array | Günlük getiri serisi |
| timeSeries[].date | string | Tarih |
| timeSeries[].portfolioValue | number | Portföy kümülatif değeri (başlangıç = 100) |
| timeSeries[].portfolioReturn | number | Portföy günlük getirisi (%) |
| timeSeries[].relativeSymbolValue | number | Referans sembol kümülatif değeri (varsa) |
| timeSeries[].relativeValue | number | Relatif kümülatif değer (varsa) |
| timeSeries[].relativeReturn | number | Relatif günlük getiri (%) (varsa) |
| timeSeries[].activeSymbols | array | Aktif sembol listesi (sadece değişiklik olduğunda) |
Sample Request-Response
POST https://apitest.matriksdata.com/dumrul/v1/historic-portfolio-return
Request Body:
{
"portfolio": [
{ "symbol": "THYAO", "quantity": 100 },
{ "symbol": "GARAN", "quantity": 200 },
{ "symbol": "ASELS", "quantity": 150 },
{ "symbol": "EREGL", "quantity": 300 },
{ "symbol": "BIMAS", "quantity": 50 }
],
"startDate": "2024-12-01",
"endDate": "2024-12-31",
"relativeSymbol": "XU100"
}
Response:
{
"startDate": "2024-12-01",
"endDate": "2024-12-31",
"portfolioTotalReturn": 8.45,
"relativeSymbol": "XU100",
"relativeSymbolTotalReturn": 5.20,
"relativeTotalReturn": 3.09,
"timeSeries": [
{ "date": "2024-12-01", "portfolioValue": 100.00, "portfolioReturn": 0, "relativeSymbolValue": 100.00, "relativeValue": 100.00, "relativeReturn": 0, "activeSymbols": ["THYAO", "GARAN", "EREGL", "BIMAS"] },
{ "date": "2024-12-02", "portfolioValue": 101.20, "portfolioReturn": 1.20, "relativeSymbolValue": 100.80, "relativeValue": 100.40, "relativeReturn": 0.40 },
{ "date": "2024-12-03", "portfolioValue": 100.85, "portfolioReturn": -0.35, "relativeSymbolValue": 101.10, "relativeValue": 99.75, "relativeReturn": -0.65 },
{ "date": "2024-12-15", "portfolioValue": 104.50, "portfolioReturn": 0.82, "relativeSymbolValue": 103.20, "relativeValue": 101.26, "relativeReturn": 0.45, "activeSymbols": ["THYAO", "GARAN", "ASELS", "EREGL", "BIMAS"] },
{ "date": "2024-12-16", "portfolioValue": 105.10, "portfolioReturn": 0.57, "relativeSymbolValue": 103.80, "relativeValue": 101.25, "relativeReturn": -0.01 },
{ "date": "2024-12-31", "portfolioValue": 108.45, "portfolioReturn": 0.48, "relativeSymbolValue": 105.20, "relativeValue": 103.09, "relativeReturn": 0.26 }
]
}
Sample Request-Response (Relatif Sembol Olmadan)
Request Body:
{
"portfolio": [
{ "symbol": "THYAO", "quantity": 100 },
{ "symbol": "GARAN", "quantity": 200 }
],
"startDate": "2024-12-01",
"endDate": "2024-12-31"
}
Response:
{
"startDate": "2024-12-01",
"endDate": "2024-12-31",
"portfolioTotalReturn": 6.82,
"timeSeries": [
{ "date": "2024-12-01", "portfolioValue": 100.00, "portfolioReturn": 0, "activeSymbols": ["THYAO", "GARAN"] },
{ "date": "2024-12-02", "portfolioValue": 101.45, "portfolioReturn": 1.45 },
{ "date": "2024-12-03", "portfolioValue": 100.92, "portfolioReturn": -0.52 },
{ "date": "2024-12-31", "portfolioValue": 106.82, "portfolioReturn": 0.38 }
]
}
Validation Errors
| Error Code | Description |
|---|---|
| REQUIRED_ERROR | Zorunlu alan eksik (portfolio, startDate, endDate) |
| INVALID_QUANTITY | Adet 0 veya negatif |
| INVALID_DATE_FORMAT | Tarih formatı hatalı (YYYY-MM-DD olmalı) |
| INVALID_DATE_RANGE | endDate, startDate'ten küçük veya eşit / startDate 3 yıldan eski |
| MAX_SYMBOL_COUNT_EXCEEDED | Portföyde 50'den fazla sembol |
| INVALID_SYMBOL | Geçersiz sembol kodu |
| RELATIVE_SYMBOL_IN_PORTFOLIO | relativeSymbol portföyde mevcut |
| NO_DATA_AVAILABLE | Belirtilen tarih aralığında hiçbir sembol için data yok |