Source of information on the fair value of bonds calculated using NSD’s methodology and integrated into your system (daily updates, as well as historical data)
Fair value of 1650+ financial instruments calculated using NSD’s NEW methodology
{ "type": "array", "items": { "$ref": "#/definitions/Valuation" }, "definitions": { "Valuation": { "type": "object", "properties": { "acc_int": { "title": "НКД", "description": "НКД на дату расчета", "type": "number" }, "currency_code": { "title": "Код валюты", "description": "Код валюты инструмента", "type": "string" }, "isin": { "title": "ISIN", "description": "Код ISIN", "type": "string" }, "issuer": { "title": "Эмитент", "description": "Общепринятое наименование эмитента", "type": "string" }, "method_number": { "title": "Метод", "description": "Номер метода расчета (1-3)", "type": "integer" }, "name": { "title": "Инструмент", "description": "Наименование инструмента", "type": "string" }, "nominal": { "title": "Номинал", "description": "Текущий номинал инструмента", "type": "number" }, "nsd_code": { "title": "Код НРД", "description": "Код НРД", "type": "string" }, "price": { "title": "Цена в валюте", "description": "Чистая цена в валюте номинала", "type": "number" }, "rate": { "title": "Цена в %", "description": "Чистая цена в процентах от номинала", "type": "number" }, "rate_lbound": { "title": "Нижний порог цены", "description": "Нижний порог цены в % от номинала", "type": "number" }, "rate_ubound": { "title": "Верхний порог цены", "description": "Верхний порог цены в % от номинала", "type": "number" }, "reg_number": { "title": "Код регистрации", "description": "Код регистрации инструмента", "type": "string" }, "type": { "title": "Тип инструмента", "description": "Тип инструмента, соответствует методике оценки", "type": "string" }, "val_date": { "title": "Дата оценки", "description": "Дата оценки", "type": "string" }, "version": { "title": "Версия", "description": "Технический номер версии методики", "type": "integer" }, "yield": { "title": "Доходность", "description": "Доходность к погашению или к опциону", "type": "number" } } } } }
URL
using System;
using System.Data;
using System.Net;
using System.Text;
using ClosedXML.Excel; // NuGet
using Newtonsoft.Json; // NuGet
using Newtonsoft.Json.Linq; // NuGet
namespace ApiGetValuationNew
{
internal class Program
{
private const string ApiUrl = "https://nsddata.ru/api/get/valuationnew";
private const string ApiKey = "APIKEY";
private const string Isin = "RU000A0JSQ58";
private const int Limit = 10;
private const string FileName = "out.xlsx";
private static void Main()
{
var dateTo = DateTime.Now;
var dateFrom = DateTime.Now.AddDays(-30);
var apiFilter = new JObject
{
["isin"] = Isin,
["val_date"] = new JObject
{
["$gte"] = dateFrom.ToString("yyyy-MM-dd"),
["$lte"] = dateTo.ToString("yyyy-MM-dd")
},
};
var requestUrl = ApiUrl
+ $"?filter={apiFilter.ToString(Formatting.None)}"
+ $"&limit={Limit}"
+ $"&apikey={ApiKey}";
var translatedColumns = new[]
{
"НКД на дату расчета",
"Код валюты инструмента",
"Код ISIN",
"Общепринятое название эмитента",
"Номер метода расчета (1-3)",
"Наименование инструмента",
"Текущий номинал инструмента",
"Код НРД",
"Чистая цена в валюте номинала",
"Чистая цена в процентах номинала",
"Нижний порог цены в % от номинала",
"Верхний порог цены в % от номинала",
"Код регистрации инструмента",
"Тип инструмента, соответствует методике оценки",
"Дата оценки",
"Технический номер версии методики",
"Доходность к погашению или опциону"
};
Console.WriteLine("Загрузка данных...");
var webClient = new WebClient() { Encoding = Encoding.UTF8 };
var json = webClient.DownloadString(requestUrl);
var dt = (DataTable)JsonConvert.DeserializeObject(json, typeof(DataTable));
Console.WriteLine("Формирование Excel...");
dt.Columns.Remove("_p");
dt.Columns.Remove("est_date");
for (int i = 0; i < dt.Columns.Count; i++)
dt.Columns[i].ColumnName = translatedColumns[i];
dt.Columns["Дата оценки"].SetOrdinal(0);
var wb = new XLWorkbook();
var ws = wb.Worksheets.Add("Справедливая стоимость");
ws.FirstCell().InsertTable(dt).Theme = XLTableTheme.TableStyleDark1;
wb.SaveAs(FileName);
Console.WriteLine("Готово.");
}
}
}
import datetime as dt
import requests
import pandas as pd
import openpyxl
import json
API_URL = 'https://nsddata.ru/api/get/valuationnew'
API_KEY = 'APIKEY'
ISIN = 'RU000A0JSQ58'
LIMIT = 10
FILE_NAME = 'out.xlsx'
def main():
date_to = dt.date.today()
date_from = dt.date.today() - dt.timedelta(days=30)
api_filter = {
'isin': f'{ISIN}',
'val_date': {
'$gte': f"{date_from}",
'$lte': f"{date_to}"
}
}
params = {
'filter': f'{json.dumps(api_filter)}',
'limit': LIMIT,
'apikey': API_KEY
}
translated_columns = [
'НКД на дату расчета',
'Код валюты инструмента',
'Код ISIN',
'Общепринятое название эмитента',
'Номер метода расчета (1-3)',
'Наименование инструмента',
'Текущий номинал инструмента',
'Код НРД',
'Чистая цена в валюте номинала',
'Чистая цена в процентах номинала',
'Нижний порог цены в % от номинала',
'Верхний порог цены в % от номинала',
'Код регистрации инструмента',
'Тип инструмента, соответствует методике оценки',
'Дата оценки',
'Технический номер версии методики',
'Доходность к погашению или опциону'
]
r = requests.get(API_URL, params=params)
df = pd.DataFrame(r.json())
df.drop(['est_date', '_p'], axis=1, inplace=True)
for i in range(len(df.columns)):
df.rename(columns={
df.columns[i]: translated_columns[i]
}, inplace=True)
df.set_index(["Дата оценки"], inplace=True)
df.to_excel(FILE_NAME)
if __name__ == '__main__':
main()