// write a single group to CSV
        private static void writeCurveGroup(CsvOutput csv, RatesCurveGroup group)
        {
            string groupName = group.Name.Name;
            IDictionary <Currency, Curve> discountingCurves = group.DiscountCurves;

            foreach (KeyValuePair <Currency, Curve> entry in discountingCurves.SetOfKeyValuePairs())
            {
                IList <string> line = new List <string>(4);
                line.Add(groupName);
                line.Add(DISCOUNT);
                line.Add(entry.Key.ToString());
                line.Add(entry.Value.Name.Name);
                csv.writeLine(line);
            }
            IDictionary <Index, Curve> forwardCurves = group.ForwardCurves;

            foreach (KeyValuePair <Index, Curve> entry in forwardCurves.SetOfKeyValuePairs())
            {
                IList <string> line = new List <string>(4);
                line.Add(groupName);
                line.Add(FORWARD);
                line.Add(entry.Key.ToString());
                line.Add(entry.Value.Name.Name);
                csv.writeLine(line);
            }
        }
コード例 #2
0
        /// <summary>
        /// Writes the curve settings in a CSV format to an appendable.
        /// </summary>
        /// <param name="underlying">  the underlying appendable destination </param>
        /// <param name="group">  the curve group </param>
        public static void writeCurveSettings(Appendable underlying, RatesCurveGroup group)
        {
            CsvOutput csv = CsvOutput.standard(underlying);

            // header
            csv.writeLine(HEADERS_SETTINGS);
            // rows
            IDictionary <Currency, Curve> discountingCurves = group.DiscountCurves;
            ISet <CurveName> names = new HashSet <CurveName>();

            foreach (KeyValuePair <Currency, Curve> entry in discountingCurves.SetOfKeyValuePairs())
            {
                Curve curve = entry.Value;
                csv.writeLine(curveSettings(curve));
                names.Add(curve.Name);
            }
            IDictionary <Index, Curve> forwardCurves = group.ForwardCurves;

            foreach (KeyValuePair <Index, Curve> entry in forwardCurves.SetOfKeyValuePairs())
            {
                Curve curve = entry.Value;
                if (!names.Contains(curve.Name))
                {
                    csv.writeLine(curveSettings(curve));
                    names.Add(curve.Name);
                }
            }
        }
コード例 #3
0
        /// <summary>
        /// Writes the curve nodes in a CSV format to an appendable.
        /// </summary>
        /// <param name="underlying">  the underlying appendable destination </param>
        /// <param name="valuationDate">  the valuation date </param>
        /// <param name="group">  the curve group </param>
        public static void writeCurveNodes(Appendable underlying, LocalDate valuationDate, RatesCurveGroup group)
        {
            CsvOutput csv = CsvOutput.standard(underlying);

            // header
            csv.writeLine(HEADERS_NODES);
            // rows
            string valuationDateStr = valuationDate.ToString();
            IDictionary <Currency, Curve> discountingCurves = group.DiscountCurves;
            ISet <CurveName> names = new HashSet <CurveName>();

            foreach (KeyValuePair <Currency, Curve> entry in discountingCurves.SetOfKeyValuePairs())
            {
                Curve curve = entry.Value;
                nodeLines(valuationDateStr, curve, csv);
                names.Add(curve.Name);
            }
            IDictionary <Index, Curve> forwardCurves = group.ForwardCurves;

            foreach (KeyValuePair <Index, Curve> entry in forwardCurves.SetOfKeyValuePairs())
            {
                Curve curve = entry.Value;
                if (!names.Contains(curve.Name))
                {
                    nodeLines(valuationDateStr, curve, csv);
                    names.Add(curve.Name);
                }
            }
        }
        // write a single group definition to CSV
        private static void writeCurveGroupDefinition(CsvOutput csv, RatesCurveGroupDefinition group)
        {
            string groupName = group.Name.Name;

            foreach (RatesCurveGroupEntry entry in group.Entries)
            {
                foreach (Currency currency in entry.DiscountCurrencies)
                {
                    csv.writeLine(ImmutableList.of(groupName, DISCOUNT, currency.ToString(), entry.CurveName.Name));
                }
                foreach (Index index in entry.Indices)
                {
                    csv.writeLine(ImmutableList.of(groupName, FORWARD, index.ToString(), entry.CurveName.Name));
                }
            }
        }
コード例 #5
0
        //-------------------------------------------------------------------------
        /// <summary>
        /// Write sensitivities to an appendable in the standard sensitivities format.
        /// <para>
        /// The output is written in standard format, with no identifier columns.
        /// The parameter metadata must contain tenors.
        ///
        /// </para>
        /// </summary>
        /// <param name="curveSens">  the curve sensitivities to write </param>
        /// <param name="output">  the appendable to write to </param>
        /// <exception cref="IllegalArgumentException"> if the metadata does not contain tenors </exception>
        /// <exception cref="UncheckedIOException"> if an IO error occurs </exception>
        public void write(CurveSensitivities curveSens, Appendable output)
        {
            CsvOutput      csv = CsvOutput.standard(output, "\n");
            IList <string> additionalHeaders = supplier.headers(curveSens);

            // check for dates
            if (curveSens.TypedSensitivities.values().stream().flatMap(allParamSens => allParamSens.Sensitivities.stream()).flatMap(paramSens => paramSens.ParameterMetadata.stream()).anyMatch(pmd => !(pmd is TenoredParameterMetadata)))
            {
                throw new System.ArgumentException("Parameter metadata must contain tenors");
            }
            bool containsDates = curveSens.TypedSensitivities.values().stream().flatMap(allParamSens => allParamSens.Sensitivities.stream()).flatMap(paramSens => paramSens.ParameterMetadata.stream()).anyMatch(pmd => pmd is DatedParameterMetadata);

            // headers
            csv.writeCell(SensitivityCsvLoader.REFERENCE_HEADER);
            csv.writeCell(SensitivityCsvLoader.TYPE_HEADER);
            csv.writeCell(SensitivityCsvLoader.TENOR_HEADER);
            if (containsDates)
            {
                csv.writeCell(SensitivityCsvLoader.DATE_HEADER);
            }
            csv.writeCell(SensitivityCsvLoader.CURRENCY_HEADER);
            csv.writeCell(SensitivityCsvLoader.VALUE_HEADER);
            csv.writeLine(additionalHeaders);

            // content, grouped by reference, then type
            MapStream.of(curveSens.TypedSensitivities).flatMapValues(sens => sens.Sensitivities.stream()).mapKeys((type, sens) => Pair.of(sens.MarketDataName.Name, type)).sortedKeys().forEach((pair, paramSens) => write(pair.First, pair.Second, curveSens, paramSens, additionalHeaders, containsDates, csv));
        }
コード例 #6
0
        //-------------------------------------------------------------------------
        /// <summary>
        /// Outputs the report table in CSV format.
        /// </summary>
        /// <param name="report">  the report </param>
        /// <param name="out">  the output stream to write to </param>
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @SuppressWarnings("resource") public void writeCsv(R report, java.io.OutputStream out)
        public virtual void writeCsv(R report, Stream @out)
        {
            StreamWriter outputWriter = new StreamWriter(@out, Encoding.UTF8);
            CsvOutput    csvOut       = CsvOutput.safe(outputWriter);

            csvOut.writeLine(report.ColumnHeaders);
            IntStream.range(0, report.RowCount).mapToObj(rowIdx => formatRow(report, rowIdx, ReportOutputFormat.CSV)).forEach(csvOut.writeLine);
            Unchecked.wrap(outputWriter.flush);
        }
        /// <summary>
        /// Writes the curve group in a CSV format to an appendable.
        /// </summary>
        /// <param name="underlying">  the underlying appendable destination </param>
        /// <param name="groups">  the curve groups </param>
        public static void writeCurveGroup(Appendable underlying, params RatesCurveGroup[] groups)
        {
            CsvOutput csv = CsvOutput.standard(underlying);

            csv.writeLine(HEADERS);
            foreach (RatesCurveGroup group in groups)
            {
                writeCurveGroup(csv, group);
            }
        }
コード例 #8
0
        // add each node to the csv file
        private static void nodeLines(string valuationDateStr, Curve curve, CsvOutput csv)
        {
            ArgChecker.isTrue(curve is InterpolatedNodalCurve, "interpolated");
            InterpolatedNodalCurve interpolatedCurve = (InterpolatedNodalCurve)curve;
            int nbPoints = interpolatedCurve.XValues.size();

            for (int i = 0; i < nbPoints; i++)
            {
                ArgChecker.isTrue(interpolatedCurve.getParameterMetadata(i) is DatedParameterMetadata, "Curve metadata must contain a date, but was " + interpolatedCurve.getParameterMetadata(i).GetType().Name);
                DatedParameterMetadata metadata = (DatedParameterMetadata)interpolatedCurve.getParameterMetadata(i);
                IList <string>         line     = new List <string>();
                line.Add(valuationDateStr);
                line.Add(curve.Name.Name.ToString());
                line.Add(metadata.Date.ToString());
                line.Add(decimal.valueOf(interpolatedCurve.YValues.get(i)).toPlainString());
                line.Add(metadata.Label);
                csv.writeLine(line);
            }
        }
コード例 #9
0
        // writes the rows for a single CurrencyParameterSensitivity
        private void write(string reference, CurveSensitivitiesType type, CurveSensitivities curveSens, CurrencyParameterSensitivity paramSens, IList <string> additionalHeaders, bool containsDates, CsvOutput csv)
        {
            IList <string> additionalCells = supplier.values(additionalHeaders, curveSens, paramSens);

            for (int i = 0; i < paramSens.ParameterCount; i++)
            {
                ParameterMetadata pmd   = paramSens.getParameterMetadata(i);
                Tenor             tenor = ((TenoredParameterMetadata)pmd).Tenor;
                double            value = paramSens.Sensitivity.get(i);
                csv.writeCell(reference);
                csv.writeCell(type.Name);
                csv.writeCell(tenor.ToString());
                if (containsDates)
                {
                    csv.writeCell(pmd is DatedParameterMetadata ? ((DatedParameterMetadata)pmd).Date.ToString() : "");
                }
                csv.writeCell(paramSens.Currency.Code);
                csv.writeCell(decimal.valueOf(value).toPlainString());
                csv.writeLine(additionalCells);
            }
        }