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

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

купить   тестовый доступ

GetValuationNew

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

-
Название Тип Описание Обяз.
Выберите нужные вам поля (раскрыть все)
currency_code string Код валюты инструмента
isin string Код ISIN
issuer string Название эмитента
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 Версия методики расчета
Скачать

{
  "type": "array",
  "items": {
    "$ref": "#/definitions/Valuation"
  },
  "definitions": {
    "Valuation": {
      "type": "object",
      "properties": {
        "currency_code": {
          "title": "Код валюты",
          "description": "Код валюты инструмента",
          "type": "string"
        },
        "isin": {
          "title": "ISIN",
          "description": "Код ISIN",
          "type": "string"
        },
        "issuer": {
          "title": "Эмитент",
          "description": "Название эмитента",
          "type": "string"
        },
        "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"
        }
      }
    }
  }
}

URL



Задать вопрос разработчику

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using Newtonsoft.Json.Linq;
using ClosedXML.Excel;

namespace ApiSample
{
    class Program
    {
        public const string ApiUrl = "http://172.23.24.198:5000/securities?limit=100";
        public static HashSet<string> SetOfIsins = new HashSet<string>(new[] { "RU0007202057", "RU0007202545", "RU0007201018", "RU0007202032" });
        public const string FileName = "coupons.xlsx";

        static void Main(string[] args)
        {
            Console.WriteLine("Загрузка данных...");
            var wc = new WebClient() { Encoding = Encoding.UTF8, };
            var json = wc.DownloadString(ApiUrl);

            var bonds = JArray.Parse(json);
            var filteredBonds = bonds.Where(b => SetOfIsins.Contains((string)b["isin"])).ToList();

            Console.WriteLine("Формирование Excel...");
            GenerateExcel(filteredBonds);
            Console.WriteLine("Готово!");
        }

        private static void GenerateExcel(List<JToken> input)
        {
            var workbook = new XLWorkbook();
            workbook.Use1904DateSystem = true;
            var ws = workbook.Worksheets.Add("Coupons info");

            ws.Column(1).Width = 16;
            ws.Column(2).Width = 70;
            ws.Column(3).Width = 50;
            ws.Column(4).Width = 35;
            ws.Column(5).Width = 16;

            var columns = new[] { "ISIN", "Название", "Эмитент", "Корпоративное действие", "Дата" };
            foreach (var j in Enumerable.Range(0, columns.Length))
            {
                ws.Cell(1, j + 1).Value = columns[j];
                ws.Cell(1, j + 1).Style.Fill.BackgroundColor = XLColor.FromTheme(XLThemeColor.Accent6);
            }

            var data = new List<List<JToken>>();
            foreach (var bond in input) {
                var corpActions = bond["corp_actions"]?.ToArray();
                if (corpActions == null || corpActions.Length == 0)
                continue;

            foreach (var c in corpActions)
                try
                {
                    data.Add(new List<JToken>() { bond["isin"], bond["name_full"], bond["issuer"]["name_full"],
                        c["corp_action_type"]["name"], c["action_date_plan"] });
                } catch (Exception ex)
                {
                    Console.WriteLine(ex);
                    continue;
                }
            }

            for (int i = 0; i < data.Count; i++)
                for (int j = 0; j < columns.Length; j++)
                {
                    ws.Cell(i + 2, j + 1).SetValue<string>(Convert.ToString(data[i][j]));
                    ws.Cell(i + 2, j + 1).Style.Fill.BackgroundColor = i % 2 == 0 ? XLColor.FromTheme(XLThemeColor.Accent6, 0.5) : XLColor.FromTheme(XLThemeColor.Accent6, 0.8);
                }

            ws.RangeUsed().SetAutoFilter();

            workbook.SaveAs(FileName);
            System.Diagnostics.Process.Start(FileName);
        }
    }
}
        
package ru.nsd.example;

import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.api.client.config.DefaultClientConfig;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.json.JSONArray;
import org.json.JSONObject;

import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.UriBuilder;
import java.io.FileOutputStream;
import java.io.IOException;

public class RestClientExample {

    private static final String NSD_DATA_HOST = "http://172.23.24.198:5000";
    private static final String METHOD_NAME = "securities";
    private static final String RESULT_EXCEL_PATH = "C:/Temp/securities100.xls";

    public static void main(String[] args) {
        saveExcel(getFirstHundredSecurities());
    }

    private static JSONArray getFirstHundredSecurities() {
        Client client = Client.create(new DefaultClientConfig());
        WebResource webResource = client.resource(UriBuilder.fromUri(NSD_DATA_HOST).build());
        String jsonData = webResource.path(METHOD_NAME).queryParam("limit", "100")
        .accept(MediaType.APPLICATION_JSON_TYPE).get(String.class);
        return new JSONArray(jsonData);
    }

    private static void saveExcel(JSONArray securities) {
        try {
            FileOutputStream stream = new FileOutputStream(RESULT_EXCEL_PATH);
            HSSFWorkbook workbook = generateExcel(securities);
            workbook.write(stream);
            stream.close();
        } catch (IOException ex) {
            System.out.println(ex);
        }
    }

    private static HSSFWorkbook generateExcel(JSONArray securities) {
        HSSFWorkbook workbook = new HSSFWorkbook();
        HSSFSheet sheet = workbook.createSheet();
        int rownum = 1;

        HSSFRow headRow = sheet.createRow(rownum++);
        headRow.createCell(0).setCellValue("ISIN");
        headRow.createCell(1).setCellValue("Полное наименование");

        for (Object obj : securities) {
            JSONObject json = (JSONObject) obj;
            HSSFRow row = sheet.createRow(rownum++);
            row.createCell(0).setCellValue(json.optString("isin"));
            row.createCell(1).setCellValue(json.optString("name_full"));
        }

        return workbook;
    }
}