Ценовой центр НРД – это автоматизированная система оценки справедливых цен облигаций и других финансовых инструментов, рассчитанных по Методике НРД
Дополнительные параметры
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 ApiGetValuationNewAdd
{
internal class Program
{
private const string ApiUrl = "https://nsddata.ru/api/get/valuationnewadd";
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"
"Тип инструмента, соответствует методике оценки"
"Сектор экономики"
"Текущий тип купона (fix/float)"
"Дата погашения"
"Дюрация"
"Модифицированная дюрация"
"Чувствительность дюрации к процентным ставкам"
"Стоимость базисного пункта. Изменение цены облигации (в % от номинала) при изменении ее доходности на один базисный пункт"
"Дата сall-опциона (при наличии)"
"Дата put-опциона (при наличии)"
"Рейтинг АКРЫ"
"Рейтинг эксперт"
"Рейтинг НКР"
"Рейтинг НРА"
"Текущая доходность"
"Доходность до call оферты"
"Доходность до put оферты"
"Эффективная доходность до погашения"
"Z-спред"
"Разница между YTM и точкой на G-curve"
"Базовая ставка купона (для флоатеров)"
"Cпред к базовой ставке для бумаг с плавающим купоном (для флоатеров)"
"Эффективный спред к базовой ставке купона исходя из реальной рыночной цены (рыночного риска) бумаги (для флоатеров)"
"Маржа, которая приравнивает цену к ожидаемому денежному потоку. Аналог G-спред для флоатеров (для флоатеров)"
"Мода распределения объемов сделок в стакане"
"Средний объем сделки в стакане, ед."
"Средний объем сделок РЕПО с ЦК с выпуском"
"Средний объем сделок в РПС, ед."
"Квантиль 5% распределения объема сделок"
"Квантиль 25% распределения объема сделок"
"Квантиль 50% распределения объема сделок"
"Квантиль 75% распределения объема сделок"
"Квантиль 95% распределения объема сделок"
"Квантиль 5% распределения кол-ва сделок"
"Квантиль 25% распределения кол-ва сделок"
"Квантиль 50% распределения кол-ва сделок"
"Квантиль 75% распределения кол-ва сделок"
"Квантиль 95% распределения кол-ва сделок"
"Признак активного рынка на дату оценки согласно действующему на момент оценки стандарту НАУФОР"
"Рыночная цена 3"
"Цена аукциона закрытия (основная сессия) на дату оценки"
"Cредневзвешенная цена (основная сессия) на дату оценки"
"Цена последней сделки во время вечерней сессии на дату оценки"
"Cредневзвешенная цена (вечерняя сессия) на дату оценки"
};
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/valuationnewadd'
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"
"Тип инструмента, соответствует методике оценки"
"Сектор экономики"
"Текущий тип купона (fix/float)"
"Дата погашения"
"Дюрация"
"Модифицированная дюрация"
"Чувствительность дюрации к процентным ставкам"
"Стоимость базисного пункта. Изменение цены облигации (в % от номинала) при изменении ее доходности на один базисный пункт"
"Дата сall-опциона (при наличии)"
"Дата put-опциона (при наличии)"
"Рейтинг АКРЫ"
"Рейтинг эксперт"
"Рейтинг НКР"
"Рейтинг НРА"
"Текущая доходность"
"Доходность до call оферты"
"Доходность до put оферты"
"Эффективная доходность до погашения"
"Z-спред"
"Разница между YTM и точкой на G-curve"
"Базовая ставка купона (для флоатеров)"
"Cпред к базовой ставке для бумаг с плавающим купоном (для флоатеров)"
"Эффективный спред к базовой ставке купона исходя из реальной рыночной цены (рыночного риска) бумаги (для флоатеров)"
"Маржа, которая приравнивает цену к ожидаемому денежному потоку. Аналог G-спред для флоатеров (для флоатеров)"
"Мода распределения объемов сделок в стакане"
"Средний объем сделки в стакане, ед."
"Средний объем сделок РЕПО с ЦК с выпуском"
"Средний объем сделок в РПС, ед."
"Квантиль 5% распределения объема сделок"
"Квантиль 25% распределения объема сделок"
"Квантиль 50% распределения объема сделок"
"Квантиль 75% распределения объема сделок"
"Квантиль 95% распределения объема сделок"
"Квантиль 5% распределения кол-ва сделок"
"Квантиль 25% распределения кол-ва сделок"
"Квантиль 50% распределения кол-ва сделок"
"Квантиль 75% распределения кол-ва сделок"
"Квантиль 95% распределения кол-ва сделок"
"Признак активного рынка на дату оценки согласно действующему на момент оценки стандарту НАУФОР"
"Рыночная цена 3"
"Цена аукциона закрытия (основная сессия) на дату оценки"
"Cредневзвешенная цена (основная сессия) на дату оценки"
"Цена последней сделки во время вечерней сессии на дату оценки"
"Cредневзвешенная цена (вечерняя сессия) на дату оценки"
]
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()