Ценовой центр НРД

Ценовой центр НРД – это автоматизированная система оценки справедливых цен облигаций и других финансовых инструментов, рассчитанных по Методике НРД

GetValuationNew

Справедливая стоимость 1650+ финансовых инструментов, рассчитанная по НОВОЙ методике НРД

Скачать описание

-
Название Тип Описание Обяз.
Выберите нужные вам поля (раскрыть все)
acc_int number НКД на дату расчета
currency_code string Код валюты инструмента
isin string Код ISIN
issuer string Общепринятое наименование эмитента
method_number integer Номер метода расчета (1-3)
name string Наименование инструмента
nominal number Текущий номинал инструмента
nsd_code string Код НРД
price number Чистая цена в валюте номинала
rate number Чистая цена в процентах от номинала
rate_lbound number Нижний порог цены в % от номинала
rate_ubound number Верхний порог цены в % от номинала
reg_number string Код регистрации инструмента
type string Тип инструмента, соответствует методике оценки
val_date string Дата оценки
version integer Технический номер версии методики
yield number Доходность к погашению или к опциону
Скачать

{
  "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()