Skip to main content
Skip table of contents

Business Logic (Features)


  • Re-usable reporting aggregation logic (Top-N, rest, sorting, grouping)

  • Translations & formatting of data

Cinnamon Features




Dates & Periods

In reporting, the determination of periods and subperiods from dates and parameters is important.

  • generate subperiods given by period lenght and frequency

  • aligning subperiods with month- / quarter- / year-ends

Aggregation of Figures

Aggregation of figures along segmentations (breakdowns) from detailed data on position-level up to segments as well as portfolio level. Aggregation methods supported are

  • none: figures can't be aggregated

  • sum: figures that can be simply aggregated by summing up (e.g. market value)

  • weightedAvg: aggregation by the the weighted average regarding a provided weight (e.g. for figures like modified duration)

Portfolio (Cover) Figures

  • Flexible definition of portfolio-level figures from masterdata, valuations or returns.

Formula Figures

  • Dynamically calculated figures that can have a specific aggregation method

weightedAverageCarbonIntensityESGRated: {
    aggregationMethod: "weightedAvg",
    formula: "(p.segments['MSCI_ESG_RATING'] !== undefined && p.segments['MSCI_ESG_RATING'] !== 'Not Rated') ? weightedAverageCarbonIntensity : undefined",
    weightFormula: "weightedAverageCarbonIntensity.aggregationWeight"

Return calculations

  • Generating returns from of indexed values (by division index_end / index_start)

  • Calculation of relative returns (typically calculated as ptf_return - bm_return)

  • Calculation of rolling returns (incl. interpolation of index values for non-available exact day data)

Performance Analysis

  • If your core banking or portfolio management system is not capable to deliver the required performance analysis we support

    • multi-period contributions (Frongello, Cariño, etc.)

    • performance attribution (Brinson-Fachler etc.)

    • ex-post risk figures (traynor ratio, information ratio, tracking error, volatility, max drawdown etc.)


Next to the (base) segmentations delivered by a data source, Cinnamon supports the definition of derived segmentations that are used to generate the optimal structure of a dimensions for a visualisation (e.g. table or chart). Segmentations support

  • Grouping of (base) segments into a more coarse segment definition by either using a simple list of segments or by using predicates (e.g. 'assetClass = Bonds && currency = CHF')

  • Sorting/ordering of segments by a fixed order or ascending/descending by a measure/figure

  • Selection of segments for the output by

    • defining segments as mandatory

    • defining the maximum number of segments (for Top-N/Bottom-N)

    • building of "Others" segment

  • Adding translations for any new segment


  • Filtering of data uses the powerful features of segmentations

  • Filtering is used to e.g. analyse allocations only for bonds or equities in a portfolio


  • Definition of arbitrary number of languages

  • Dictionary to provide translations for labels used in reporting.

  • Support for arguments that can be positioned inside a translation (e.g. “Total assets in {1}” where “{1}” will be replaced with the portfolio’s currency code)

  • Areas covered

    • Segmentations

    • Titles for sections, building blocks etc.

    • Longer texts (that are not maintained in Content Management)

    • Figure titles used in tables and charts

    • etc.

Dictionary entry in multiple languages allowing to be parametrized with data


  • Solution-specific support for formatting

  • Support for localization (e.g. locale de-CH to translate and format specifically for Swiss german reports)

  • Standard formatting support for pre-defined value types

    • absolute and relative returns

    • market values and p&l figures

    • dates and periods

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.