Macrobond 1.24

We are pleased to present an updated version of our application. 

Highlights 

  1. Ability to create lists of series 
  2. Cross sampling analysis
  3. Conditional formatting in bar charts (Heat maps)
  4. Fresh look and feel 
  5. New chart settings and options 

Selection of new functionality

Lists of series

The highlight of all the new features of Macrobond 1.24 is the ability to organise large sets of series. Simply click on the new Lists tab, which you can find within Series

You can use the name of a list in a formula expression and the calculation will be applied on all the series of the list. For example, in the image above, you can use the ‘cpicomp’ list in a formula expression like this: cop(list:doc:cpicomp,1).This is easier to write, gives you a better overview and allows you to add more series to your list.

You can change the order of the series in a list and it will be retained and will not break any calculations.

In most analyses, such as Rate of change, you can set parameters for the whole list.

In most analyses, you can make exceptions at series level:

Lists can also be combined. This works in formulas and in the new Cross sampling analysis.

Combining lists works if the lists have a relationship (parent/child lists) or if they are organised by region using the List by region list type. Here is an example where several List by region lists have been created:

You can then use a formula expression like list:doc:gdp/list:doc:pop. The calculation will be applied pairwise to the series in the lists to generate a new list.

Read more here or by pressing F1 in the Series list analysis. 

Cross sampling analysis

Our new Cross sampling analysis is a successor to the Scalar analysis, with a new workflow that is especially tailored for lists.

Simply add the lists to the table on the right. In this example, the lists are of type List by region and automatically align.

In this next example, the output is sorted by population and the ten largest cities are presented in a bubble chart

Read more here or by pressing F1 in Cross sampling analysis. 

Conditional formatting in Bar charts (heatmaps)

You can set up conditional formatting in Bar chart in a similar way to Excel. This can be used for visualisations such as heatmaps to show negative values and highlight largest and smallest values and outliers.

In this table (bar chart), you can see that negative values are presented in red text, the two smallest values against a red background, and the two highest values against a green background.

You can set up the rules by pressing the Rules button in the Bar chart settings.

Here is an example that illustrates using rules to create a heatmap:

Read more here or by pressing F1 in the Rules dialog.

Fresh look and feel

We have updated the fonts and colour palette of the application and charting tools so they align with our our refreshed corporate brand. The new look is cleaner and less distracting, with fewer borders and gradients.  

Font size as pixels or points

In the Font dialog, you can now choose the unit of the font size as either pixel (as before) or point, which is more standard. You can enter one decimal digit.

A pixel in this context is 1/96” and a point 1/72”.

New chart settings and options

Patterns for filled graphs

For filled graph types (bars, stacked columns, area, stripe etc.) you can now select a pattern for the background. This can be useful to contrast or complement different colours.

This functionality may not achieve the same result when the charts are opened in Microsoft Office due to the software’s format limitations. However, images exported as bitmaps or SVG should be fine.

Graph area borders

The image below shows some of the new options you can choose from when creating borders for your graphs. There are now options for including only left and/or right sides for the graph area border.

Graph area margins

You now have more control over how margins are allocated around graph elements. 

Under the default setting, margins above and below the highest and lowest values are wide enough to accommodate line width, marker size and height of y-axis label texts inside the graph area.

Now you can set your margins as Graph margin outside, which allocates enough space outside the graph area to prevent any overlap with surrounding elements.

Take a look at the x-axis on these two charts.

In this example, the margin is set to inside.

In this example, the margin is set to outside.

Thousand separator 

You now have an optional Thousand separator setting for the axes in the charts, which adds a separator after every third digit for numbers larger than 1,000. You can find this in the language settings selected for the chart.

In addition to the Thousand separator for Observation labels and other places where dynamic text is used, you can choose additional formatting options from the drop-down list. 

New calculation method for Smoothing and Statistics 

We have added a new None as a way calculation method for Smoothing and Statistics analyses so you can include the original series without any calculations.

The Macrobond client Web API Series Provider

Introduction

The Macrobond client Web API Series Provider series provider allows the Macrobond application to use any web service that implements the HTTP and JSON based web API as described below. It offers similar features to the SQL Database Connector, but uses a predefined API contract instead of SQL to retrieve the data. It also offers the option of enabling creation and deletion of series as well-structured lists of series in the data tree with indentations, emphasized rows and groups of series.

Information flows directly between Macrobond application and your Web API Series Provider, it is not processed by or stored on Macrobond servers.

Technical details

The API uses JSON in responses and POST requests.

In POST requests, you should set Content-Type: application/json; charset=utf-8.

In all responses you should set the Cache-Control header. In most cases you want to set this to Cache-Control: no-cache, private.

Sample server

There is a Sample server implemented in C#/.NET Core at GitHub.

Implementation

The API must implement the loadseries and getcapabilities methods. The other methods are optional and will only be called if the server reports that it supports those features via the getcapabilities method.

Method Capability Comment
loadseries Load one or more series given the names of the series
getcapabilties Return a list of capabilities implemented by the server
searchseries search Search for series using keywords entered by the user
loadtree browse Return a tree structure that the user can browse to navigate the database
listseries browse List series in a location of the database tree
createseries editSeries Create or update a series
removeseries editSeries Remove a series
loadmeta meta Load just the metadata of a series
loadvintage revisions Load a vintage series
loadvintagetimestamps revisions Load the vintages timestamps of a series
loadrelease revisions+revisionsRelease Load a release series
loadcompletehistory revisions+revisionsCompleteHistory Loads all vintages of a series

For communication, both http and https are supported. For authentication, basic http authentication is supported. In this case, https is strongly recommended.

There are some requirements on the database imposed by the Macrobond application:

  • Each time series must have a unique identifier that can be used for retrieving the time series values and metadata. Any lower-case characters except double quote, colon, and any other white space than ordinary space (ASCII 32) is allowed, but it is best if the identifier begins with a-z and continues with a-z, 0-9 or underscore since such identifiers can be used unquoted in the Macrobond application.
  • A time series cannot start before year 1600 or end after year 2499.
  • The time series frequencies are limited to: day, week, month, quarter, 4 months, half year and year.

There is a swagger file for the API here: https://schemas.macrobond.com/webclientapi.swagger.json

Working with the Web API Series Provider

Configuration

To define what database server to talk to, you define a simple XML file like below:

<?xml version="1.0" encoding="utf-8"?>
<web:WebApiSeriesProvider xmlns:web="http://schemas.mbnd.eu/2019/webapiseriesprovider">
  <web:Host>http://ourdbserver:5555</web:Host>
</web:WebApiSeriesProvider>

In the Macrobond application, in the Settings dialog (Configuration > Settings > My series (for MB pre-1.28: Edit > Settings > My series)) you specify the path to this configuration file:

 

During development and troubleshooting, it can be helpful to enable the log console.

This will cause a log window to be displayed as soon as there is any communication via the Web API. The log contains information about what queries that are sent, what the response is and some diagnostic messages that can be helpful for troubleshooting the service.

Metadata

Each series in the server must contain meta data in the form of a dictionary of string+object. The meta data gives different information about how the series should be handled by the application. Every property in a Meta data dictionary is case sensitive, and they should be written with pascal case. Some meta data properties are optional but there are some that are crucial to make a series work.

The property PrimName is required as a unique identifier of the series. Letters of the identifier must be lower case.

It is recommended to specify the frequency using the Frequency attribute. This can have one of the values annual, semiannual, quadmonthly, quarterly, bimonthly, monthly, weekly or daily.

The StartDate is required when no list of dates is provided for the series. In most cases you also want to include a Description attribute too.

The Class attribute influences how automatic frequency conversion is done and is useful to set. Here are a list of possible values: Class attribute info

The Region metadata specifies what region a data series refers to. For countries, the values is the ISO 3166 code of the region. See this list for possible values: Region attribute info

The Currencymetadata attribute is the ISO 4217 currency code. This is used for automatic currency conversion in the Macrobond application. See this list for possible values: Currency attribute info

The IHInfofree-text attributes allows for providing verbose description of the time series. It can be accessed from within the Macrobond application in the Time series information view.

The StoresRevisionHistory is set to true to indicate that a series supports revision history. See below for more details.

For more information about metadata see Commonly used metadata.

Commands

getcapabilities

Tells the Macrobond application whether this server support browse, search and edit capabilities.

This method must be implemented by the server.

Response

One or more of these boolean values:

  • browse
  • search
  • editSeries
  • allowMultipleSeriesPerRequest
  • meta
  • revisions
  • revisionsRelease
  • revisionsCompleteHistory

If browse is false or not present, no tree will be shown in the application. This should be true if loadtree and listseries have been implemented.

If search is false or not present, no search bar will be available in the application. This should be true if searchseries has been implemented.

If editSeries is false or not present, the option to create or remove series will not be available to the user. Set to true if the createseries and removeseries have been implemented.

If allowMultipleSeriesPerRequest is set to false, then there will never be more than one series requested in loadseries. This is less efficient, but can simplify the implementation in some scenarios. By default, this is set to true.

If meta is set to true, then loadmeta might be called by the application to retrieve the just the metadata of a series in some situations. This is useful since there is less data to return than the complete series data.

If revisions is set to true, the provider must implement loadvintage and loadvintagedates. Series that has revisions are expected to include the metadata StoresRevisionHistory, FirstRevisionTimeStamp and LastRevisionTimeStamp. The last two are set only if there actually are any revisions for the series. This enables series vintages in the application.

If revisions and revisionsRelease are  true, the provider must implement loadrelease. This enables series releases in the application.

If revisions and revisionsCompleteHistoryare  true, the provider must implement completehistory. This enables the "Show revision history" feature in the application.

Example

URL:

/getcapabilities

Response:

{
"browse": true,
"search": true
}

loadseries

Returns a list of series from the server by name.

This method must be implemented by the server.

Parameters

  • n : Array of strings. The identifier of a series. The parameter can be included several times in order to request several series simultaneously. (It is possible to turn off the option to send multiple series in one request. See allowMultipleSeriesPerRequest in getcapabilities above.)

Response

A list of responses corresponding to each series requested in the same order as in the request. Each element in the list is either a data element with

  • values
  • metaData

or an error element with an error text explaining why the series could not be loaded. You must not include both data and error elements for a series.

There are three options for specifying the calendar:

  • Specify the frequency without list of dates. For daily frequencies you may also specify the DayMask attribute if you do not want the default of Monday-Friday. In this case the calendar will be created from Frequency, StartDate and DayMask.
  • Specify the frequency attribute and a list of dates. For daily frequencies you may also specify the DayMask attribute if you do not want the default of Monday-Friday. In this case the calendar will be created from Frequency, StartDate and DayMask and values will be made available for the periods corresponding to the specified dates. Any 'gaps' in the set of dates will be gaps in the resulting calendar. The StartDate metadata must reference the first observation.
  • Include a list of dates, but do not specify the frequency. The application will guess the frequency based on the provided set of observations. It will pick the lowest frequency to cover the specified dates without duplicates. The StartDate metadata must reference the first observation. This option is not allowed if if meta is returned from getcapabilities.

The DayMask metadata is used for daily series. It is a bitmask as an integer where Sunday is the bit with value 1. A mask for Monday-Friday is thus 62. A string can be passed instead of a bitmask and should then have the weekdays in English separated with space. For instance Monday Tuesday Wednesday Thursday Friday. Such a string will be converted to the corresponding bitmask.

Example

URL:

/loadseries?n=name1&n=name2&n=name3

Response:

[
    {
        "data": {
            "metaData": {
                "Description": "0-7 Years",
                "Frequency": "annual",
                "PrimName": "name1",
                "StartDate": "1990-01-01T00:00:00"
            },
            "values": [
                600.0,
                570.0,
                630.0,
                450.0,
                200.0
            ]
        }
    },
    {
        "data": {
            "dates": [
                "1990-01-01T00:00:00",
                "1990-02-01T00:00:00",
                "1990-04-01T00:00:00",
                "1990-05-01T00:00:00"
            ],
            "metaData": {
                "Description": "8-12 Years",
                "Frequency": "monthly",
                "PrimName": "name2"
            },
            "values": [
                10,
                11,
                12,
                13
            ]
        }
    },
    {
        "error": "Series name3 not found"
    }
]

loadmeta

Returns a list of series metadata from the server by name.

This method is optional to implemented by the server. It is called only if meta is returned from getcapabilities. The application will call this method instead of loadseries in some cases when it needs only the metadata and not the full series data. This can be useful if it is a lot of work for the server to retrieve the full series data.

Parameters

  • n : Array of strings. The identifier of a series. The parameter can be included several times in order to request several series simultaneously. (It is possible to turn off the option to send multiple series in one request. See allowMultipleSeriesPerRequest in getcapabilities above.)

Response

A list of responses corresponding to each series requested in the same order as in the request. Each element in the list is either a data element with

  • metaData

or an error element with an error text explaining why the series could not be loaded. You must not include both data and error elements for a series.

One difference compared to loadseries is that the metadata fields Frequency and StartDate must be specified. For daily series, it is recommended to also set DayMask. If not set Monday-Friday will be assumed.

Example

URL:

/loadmeta?n=name1&n=name2&n=name3

Response:

[
    {
        "data": {
            "metaData": {
                "Description": "0-7 Years",
                "Frequency": "annual",
                "PrimName": "name1",
                "StartDate": "1990-01-01T00:00:00"
            }
        }
    },
    {
        "data": {
            "metaData": {
                "Description": "8-12 Years",
                "Frequency": "monthly",
                "PrimName": "name2",
                "StartDate": "1997-01-01T00:00:00"
            }
        }
    },
    {
        "error": "Series name3 not found"
    }
]

searchseries

Gets a list of meta data of series from given string.

Parameters

  • query: The text entered by the user

Response

The response is a list of metadata sets. The metadata must contain Description and PrimName.

The Macrobond application can show some additional attributes as columns in the list of a search result. These are optional. Frequency, StartDate, EndDate, Currency, DisplayUnit, Region, LastValue, PreviousLastValue, Class

Example

URL:

/searchseries?query=US

Response:

[
    {
        "Description": "US Main Regressions",
        "Frequency": "annual",
        "PrimName": "series1"
    },
    {
        "Description": "US Main Regressions",
        "PrimName": "series2"
    }
]

loadtree

Returns a tree or subtree from the database. If the tree is large or costly to load from the database, it can be split up into sub trees that will be loaded when the user expands them.

Parameter

  • reference: Optional. If specified, load the referenced sub tree. If not specified, load the root of the tree.

Response

The returned data forms a nested tree which is used to create a database tree in the application UI.

Each node in the tree can contain either Children, ChildrenReference or SeriesReference.

A Children element contains a nested list of the tree.

A ChildrenReference contains a deferred nested list of the tree. A request for the branch will be sent as a loadtree request to the server and the specified reference will be included in the query.

The leaves of the tree contain an element called SeriesReference. When the user clicks on such a branch in the tree a listseries request, including the specified reference, is sent to the server to retrieve the list of series to present to the user.

Example

URLs:

/loadtree
/loadtree?reference=treeNodeReference

Response:

[
    {
        "Description": "First folder",
        "SeriesReference": "ref1"
    },
    {
        "Children": [
            {
                "Description": "First sub folder",
                "SeriesReference": "ref2"
            },
            {
                "ChildrenReference": "sub2",
                "Description": "Second sub folder"
            }
        ],
        "Description": "Second folder"
    }
]

listseries

Lists all series for a leaf in the data tree.

The application will call this method when the user selects a leaf in the data tree.

Parameters

  • reference: The reference from the leaf in the data tree.

Response

The following elements are required:

  • groups
  • entityMeta
  • names

The list of series will be presented in the Macrobond application when a leaf in the data tree is selected.

Aspects

The result can optionally contain 'aspects' will be presented as tabs in the UI. For example 'NSA, Monthly' in the image above.

The presented list below the aspect tabs is the same for all tabs but refers to different series.

If there is only one aspect, then aspects can omitted.

For every aspect there must be as many metadata collections in each row of series. If there are two aspects then every row of series must contain two collections, if there are three aspects then every row must contain three collections etc.

If there are no aspects, the entityMeta element contains only one collection.

The response is a list of metadata sets. The metadata must contain Description and PrimName.

The Macrobond application can show some additional attributes as columns in the list of a search result. These are optional. FrequencyStartDateEndDateCurrencyDisplayUnitRegionLastValuePreviousLastValueClass

Groups

The list may be divided into groups. If there is only one group, then the name property of that group can be omitted.

Formatting

The entries in the list can be indented by specifying an indentation level.

Entries can be emphasized like 'Food & Beverages' in the image above.

Additional space can be added above an entry, like for 'Food' in the image, but specifying spaceAbove as true.

Example

URL:

/listseries?reference=serieslistreference

Response:

{
    "aspects": [
        {
            "description": "Tooltip of tab a",
            "name": "Tab 1"
        },
        {
            "description": "Tooltip of tab b",
            "name": "Tab 2"
        }
    ],
    "groups": [
        {
            "name": "The first group",
            "series": [
                {
                    "description": "Variable 1",
                    "emphasized": false,
                    "entityMeta": [
                        {
                            "Description": "Total, Goods",
                            "PrimName": "series1a",
                            "Region": "se"
                        },
                        {
                            "Description": "Total, Goods",
                            "PrimName": "series1b",
                            "Region": "se"
                        }
                    ],
                    "indentation": 3,
                    "spaceAbove": false
                }
            ]
        }
    ]
}

createseries

Creates a new in-house series.

Parameters

  • lastModified : Timestamp. When replacing an existing series, this value reflects the LastModifiedTimeStamp metadata, if present, of the series edited by the user. It will not be included when creating a new series. It is included when overwriting an existing series unless the forceReplace parameter is true.
  • forceReplace : Boolean. If this parameter is included and set to true, then the existing series should be overwritten. If the series does not already exist, HTTP status 404 Not Found should be returned.
Response

Success (200): Must return new lastModified time for the series.

Not Found (404): If lastModified has a value or forceReplace is true but the series could not be found.

Conflict (409): If the lastModified parameter does not match the actual timestamp of the stored series. This means that someone else might be editing the same series.

Example

URL:

/createseries

Post data:

{
    "dates": [
        "2016-01-01T00:00:00",
        "2017-01-01T00:00:00",
        "2018-01-01T00:00:00",
        "2019-01-01T00:00:00"
    ],
    "metaData": {
        "Description": "Total",
        "Frequency": "monthly",
        "LastModifiedTimeStamp": "2019-12-04T00:00:00",
        "PrimName": "myseries1",
        "StartDate": "2016-01-01T00:00:00"
    },
    "values": [767161, 782911, 866119, 929586]
}

Response:

2019-12-04T00:00:00

removeseries

Removes a series.

Parameters

  • name : The name of the series to be removed

Response

Success (200): The series was removed.

Not Found (404): Series with given name parameter could not be found.

Example

URL:

/removeseries?name=myseries1

loadvintage

Load a specific vintage of a series as it looked at the specified time.

The returned series is expected to have the metadata RevisionSeriesType=vintage and RevisionTimeStamp set to the time of the vintage, if it is known. RevisionLabel can optionally be set if there is a descriptive text of the vintage.

Please note that the actual vintage of the series, as specified in the RevisionTimeStamp metadata should be at or before the requested time.

When a time before the first known vintage is requested, there are two scenarios:

  1. For some series, the complete revision history might not be known and there is a version of the series as it looked before revisions were collected. In this case this original series is returned without any RevisionTimeStamp metadata.
  2. If all revision of the series is known, an empty series is returned without the RevisionTimeStamp metadata.

Parameters

  • n: The name of the series
  • timestamp: The time of the vintage. This will be in a ISO 8601 format with a time zone offset or Z for UTC.

Response

Success (200): The vintage series is returned. This is the same format as the data element in the return from the loadseries.

Not Found (404): Series with given name could not be found.

Example

URL:

/loadvintage?n=myseries1&timestamp=2022-06-27T14%3A00%3A00Z

Response:

{
    "dates": [
        "2022-01-01T00:00:00",
        "2022-02-01T00:00:00",
        "2022-04-01T00:00:00",
        "2022-05-01T00:00:00"
    ],
    "metaData": {
        "Description": "8-12 Years",
        "Frequency": "monthly",
        "PrimName": "myseries1",
        "RevisionSeriesType": "vintage",
        "RevisionTimeStamp": "2022-05-15T10%3A00%3A00Z"
    },
    "values": [
        10,
        11,
        12,
        13
    ]
}

loadvintagetimestamps

Load the vintage timestamps available for a series. This is used by the application to populate lists in the GUI where the user can pick a vintage.

Parameters

  • n: The name of the series

Response

Success (200): The list of timestamps + optional label name is returned.

Not Found (404): Series with given name could not be found.

Example

URL:

/loadvintagetimestamps?n=myseries1

Response:

[
  {"timeStamp": "2022-05-13T10%3A00%3A00Z", "label": "May 2022 first release" },
  {"timeStamp": "2022-05-15T10%3A00%3A00Z" }
]

loadrelease

Load a specific release of a series. Typically release 0 corresponds to the first value of each observation, release 1 is the first revision of each value and so on.

The returned series is expected to have the metadata RevisionSeriesType=nth and RevisionSeriesNth set to the ordinal of the revision. RevisionLabel can optionally be set if there is a descriptive text of the release.

Parameters

  • n: The name of the series
  • nthrelease: The ordinal of the release. It can be 0 or greater.

Response

Success (200): The series is returned. This is the same format as the data element in the return from the loadseries.

Not Found (404): Series with given name could not be found.

Example

URL:

/loadrelease?n=myseries1&nthrelease=1

Response:

{
  "values": [
    10, 11, 12, 13],
  "dates": [
    "2022-01-01T00:00:00", "2022-02-01T00:00:00", "2022-04-01T00:00:00", "2022-05-01T00:00:00"],
  "metaData": {
    "Description": "8-12 Years",
    "PrimName": "myseries1",
    "Frequency": "monthly",
    "RevisionSeriesType": "nth",
    "RevisionSeriesNth": 1
    }
}

loadcompletehistory

Load all vintages of a series. This is used by the Macrobond application to show a complete view of all historical vintages of a series.

The returned series are expected to have the metadata RevisionSeriesType=vintage and RevisionTimeStamp set to the time of the vintage. The first vintage may omit the RevisionTimeStamp if it is not known. RevisionLabel can optionally be set if there is a descriptive text of the vintage.

Parameters

  • n: The name of the series

Response

Success (200): The complete history is returned.

Not Found (404): Series with given name could not be found.

Example

URL:

/loadcompletehistory?n=myseries1

Response:

[
    {
        "dates": [
            "2022-01-01T00:00:00",
            "2022-02-01T00:00:00",
            "2022-04-01T00:00:00"
        ],
        "metaData": {
            "Description": "8-12 Years",
            "Frequency": "monthly",
            "PrimName": "myseries1",
            "RevisionSeriesType": "vintage"
        },
        "values": [
            10,
            11,
            12
        ]
    },
    {
        "dates": [
            "2022-01-01T00:00:00",
            "2022-02-01T00:00:00",
            "2022-04-01T00:00:00",
            "2022-05-01T00:00:00"
        ],
        "metaData": {
            "Description": "8-12 Years",
            "Frequency": "monthly",
            "PrimName": "myseries1",
            "RevisionLabel": "May 2022 first release",
            "RevisionSeriesType": "vintage",
            "RevisionTimeStamp": "2022-05-13T10%3A00%3A00Z"
        },
        "values": [
            10,
            11,
            12,
            13.5
        ]
    },
    {
        "dates": [
            "2022-01-01T00:00:00",
            "2022-02-01T00:00:00",
            "2022-04-01T00:00:00",
            "2022-05-01T00:00:00"
        ],
        "metaData": {
            "Description": "8-12 Years",
            "Frequency": "monthly",
            "PrimName": "myseries1",
            "RevisionSeriesType": "vintage",
            "RevisionTimeStamp": "2022-05-15T10%3A00%3A00Z"
        },
        "values": [
            10,
            11,
            12,
            13.7
        ]
    }
]

Macrobond 1.23

We’ve just released an updated version of the Macrobond application. This article covers the following new features that are available to all Macrobond users in this update:

1) Expanded watchlist settings

2) Chart layout customization additions

3) Bloomberg connector enhancements

Along with this update, we’re also releasing a new edition of Macrobond: the Data Scientist – which includes some exciting new API features that we also highlight at the end of this article:

1) Revision history / point in time data / vintage data available through the Macrobond APIs

2) Ability to search the Macrobond database through the APIs

If you or any of your colleagues would like to try the Data Scientist edition, you can request a free trial here.

Selection of new functionality

Watchlist Actions

The Watchlist feature, which was first introduced in 2018, allows you to flag and monitor specific series or sets of series.

We’re now introducing Watchlist Actions – a feature that lets you select among a few actions to be executed when the series used in a Watchlist item are updated, such as showing a notification on your PC or running a program. There is special support for launching Python and R. The Macrobond application has to be running for the action to be executed.

Set the “day interval” when you’re monitoring a set of series. When all monitored series have been updated within this time range, the item is alerted.

There can be a delay of up to 5 minutes before you get the alert after the data has been updated.

If you have selected “Show in application” you’ll be able to see all alerted series in the Start activity in Macrobond.

Background color gradients

We’ve added the option to specify a linear or radial gradient for background colors in charts. This applies not only to the background of the whole chart, but also to other elements where you can set a background, such as the legend.

Chart Size Units

When you pick the size of a chart for export, you can now set the unit to be either pixel, millimeter or inch.

Bloomberg Connector Enhancement

In the Bloomberg series provider, you can now paste Bloomberg Excel BDH expressions and the application will suggest a time series.

For example, if you enter or paste

=BDH(“goog us equity”,”EBIT”,”1/1/2005″,”12/31/2009″,”per=cy”)

New Features in Macrobond Data Scientist

The Data Scientist edition of Macrobond includes the following API enhancements. If they sound like something you’d like to try out, you can learn more and request a trial here.

Revision History

One significant feature of Data Scientist is that it includes access to revision history for many series in our database. This makes it possible to

  • See what data points were updated and exactly what changes were made with each revision
  • Get a vintage version of a series in order to perform an analysis using only information available at that time
  • See how a value has been revised over time

Data Coverage

The revision data we currently carry includes up to two years of history from primary sources, as well as extensions in specific cases – for example: ONS, BLS, BEA, FED and OECD data.  Our coverage focuses on forecasts, national accounts, labor market, trade, product, balance of payments, as well as foreign and public finance. Regionally, the focus is on G20 countries with a priority on larger economies initially. During 2020, we will work to expand both the geographies and categories covered.

Some Examples of Data Scientist Revision History

To find out if a series stores revision history, you can either look for the metadata attribute “StoresRevisionHistory” or use the method HasRevisions in Python/MATLAB  or getHasRevisions in R.

Here is an example in R that downloads the revision history for the series usgdp and plots the first and second release.

library(MacrobondAPI)
seriesGdp <- FetchOneTimeSeriesWithRevisions(“usgdp”)
firstRelease <- getNthRelease(seriesGdp, 0)
secondRelease <- getNthRelease(seriesGdp, 1)
x <- MakeXtsFromUnifiedResponse(c(firstRelease, secondRelease))
plot(x)

Here is another example that will show the UK GDP vintages for 2017-2020:

library(MacrobondAPI)
seriesGdp <- FetchOneTimeSeriesWithRevisions(“gbgdp”)
s2017 <- series2018 <- getVintage(seriesGdp, as.Date(“2017-01-01”))
s2018 <- series2018 <- getVintage(seriesGdp, as.Date(“2018-01-01”))
s2019 <- series2018 <- getVintage(seriesGdp, as.Date(“2019-01-01”))
s2020 <- series2018 <- getVintage(seriesGdp, as.Date(“2020-01-01”))
x <- MakeXtsFromUnifiedResponse(c(s2017, s2018, s2019, s2020))
rebased <- sweep(x[‘2015-01-01/’], 2, as.numeric(x[‘2015-01-01’]), “/”)
plot(rebased)

Search

Another feature that’s now available to Data Scientist users is the ability to search the database filtering different metadata attributes through the APIs.

One common use case of API search is to use the RegionKey attribute to look for key series. The series in the “Concept & Category” tree that you can see in the Macrobond application all have this metadata. You can use the APIs to inspect the metadata of the series and learn what values this attribute has for different series. There are examples how to do that in our Macrobond API documentation.

Here is an example in Python that searches for GDP series in a set of regions:

import win32com.client
c = win32com.client.Dispatch(“Macrobond.Connection”)
d = c. Database
query = d.CreateSearchQuery()
query.SetEntityTypeFilter(“TimeSeries”)
query.AddAttributeValueFilter(“Region”, [“us”, “gb”, “cn”])
query.AddAttributeValueFilter(“RegionKey”, “gdp_total”)
result = d.Search(query).Entities

for s in result:
    text print (s.Name)

The output is:

gbnaac00072
usnaac0169
cnnaac1961

Commonly used metadata

Items, or objects, stored in the Macrobond database are called entities. The most fundamental type of entity is the Time series, while some other types are Region, Release, Source, Index, and Security. All entities have unique names/identifiers.

All entities have metadata fields that describe them. These pieces of information come as a set of metadata attributes.

There are different types of attributes. Some can take its values only from a list of pre-defined values, while others allow more flexibility. Attributes come in different data types such as string, timestamp, boolean and integer. Entities can also function as meta data for other entities and in such cases act as regular attributes. An example of this is the Region attribute/entity.

Given the name of an attribute, you can use the Macrobond API to get more details.

Some metadata attributes are used just for descriptive purposes, to form series titles and to organize them, and these are prone to change as the organization of the database is changed.

Other metadata is used to describe properties of an entity. The below table lists the most common and useful metadata attributes, divided into the entities they refer to:

Time series

Main attributes

Specific attributes

Attributes related to specific sources

Other attributes

Release

Source

Region

Regions are geographical or economical regions for which there are time series and other entities in the database. A list of the most common regions can be found
here.

Security

Company

For more metadata see our complete list under: List of attributes.

How Macrobond backups clients’ data

What’s covered by our backups?

The backups described below cover:

  • All information that clients store on Macrobond servers
  • All business-critical information needed to provide service to Macrobond clients including:
    • server configuration
    • database dumps
    • internal documentation
    • source code

What’s the backups frequency and backups lifecycle?

Automated backups are repeated every 24 hours:

  1. Backups jobs are executed once a day or more frequently. This action takes place within Macrobond production datacenters.
  2. Backed-up data is replicated to a single location that is 500km away from the nearest Macrobond production datacenter.
  3. The consistency of the backups data is verified, information is replicated to external drives and verified again for completeness and consistency.

Every 7 days, disks containing 10 past daily backups are rotated offline. Those drives are kept disconnected for 30 weeks and then re-used. Backup servers located in Macrobond datacenters also store 10 past daily backups online.

Near-real-time protection covering information stored by Macrobond clients on the Macrobond servers:

  • Information is replicated asynchronously between client-facing datacenters in Canada, Singapore and Sweden. In addition, it’s replicated to a disaster recovery site located in Poland.
  • Snapshots of the critical databases are taken every 15min, 1h and 12h and are kept for 2h, 24h and 8 days respectively; access to those snapshots is possible for the Macrobond IT team without affecting production-related operations.

Where are datacenters located?

Live client-facing datacenters:

  • Bahnhof Pionen datacenter in Stockholm, Sweden
  • OVH Datacenter in Singapore
  • OVH Datacenter in Beauharnois, Canada

Disaster recovery site:

  • Techno Park Datacenter in Szczecin, Poland

Backups:

  • Macrobond Office in Szczecin, Poland
  • Macrobond Office in Malmo, Sweden

Replication between those data centers is made automatically without ability to specifically choose in which exact data center data’s can be stored only.

Are backups monitored?

Backup processes and their outcomes are monitored.

  • Failure of any backup task results in an alert that’s escalated to the responsible team
  • Failure of backup transfers, verifications and presence of incomplete backups trigger similar alert
  • Replication lag and consistency between source and destination servers are monitored as well

Is the data clients store on Macrobond servers encrypted?

All backups are stored on fully encrypted drives. All data that clients store on Macrobond servers is stored on fully encrypted drives. Backup data is always transmitted via encrypted channels.

Are backups recovery procedures tested?

The consistency and completeness of backups is tested automatically every 24h. in addition, there’s manual spot check of backups completeness and recovery at least twice a year.

Macrobond 1.22

We’ve just released an updated version of the Macrobond application. The new features you’ll have available when you update can be broken down into 1) features that make it easier to find and prep data, 2) new or expanded analysis methods, 3) Layout customization improvements (especially in bar charts), and 4) miscellaneous new features.

Related to Finding and Preparing Data

1. “Locate in Tree” Selects Series

Previously, the action Locate in tree that you get as an option after selecting a series in a document only located the category in the data tree where the series was located. Now, it also selects the first occurrence of the time series in the list of series below the data tree.

2. Options for Currency Conversion

We’ve added more options for how exchange rate conversion is done and changed the default for new documents. The currency conversion feature uses a daily exchange rate series available in Macrobond. When your series have a lower-than-daily frequency, there is a new automatic conversion method, described below. You can choose another method in the conversion settings tab in the Series list.

New Automatic Method and Additional Options

For new documents, the default setting will be Automatic. This means that the method will be decided according to the properties of the series. The base method will be Last for daily series and Last 5d median for other frequencies, but we also look at some additional properties: for Flow series and series that we know are sampled in the middle of the period or are averages of the period, we use the average exchange rate; if we know that the series is sampled at the start of the period, we use First 5d median.

Legacy Method

Previously, the automatic exchange rate conversion was done by matching the frequency of the series with a set of exchange rate series and typically only daily and monthly series were used. If there was no exact match with the frequency, a series with higher frequency was selected and the first value of the period was used. This method is still available and is now called Legacy. It will be the automatic method for all document created in the Macrobond application before version 1.22.

Layout Customization

1. Bar Chart Improvements

Set Bar Chart Width

The width of bar charts can now be fixed. You can now select to make the chart fill the width of the window, set it to a specific width or use the expanding mode, which means the chart’s width is simply  the sum of  all the columns of the chart.

When Fill or Custom have been selected, all non-text columns will be set to the proportional mode. You can adjust this and make only some columns proportional.

The proportions are used to determine the relative size when the size of the chart is changed.

Legend Spacing Options

We’ve also introduced a setting for the spacing of the legend elements as well as a setting for the distance between the legend and the graph area.

Option for Reversing Order of Rows in Bar Charts

There is a new setting for reversing the order of rows in a bar chart.

2. Text and layout in Presentation Documents

The new “Presentation notes” feature, that you can enable for a page, allows you to enter a short text note for each chart on the page.

You can decide where to present the notes relative to the charts on the pages.

New or expanded Analyses

1. Formulas

New Formula Functions

There are three new formula functions:

  • LastNonForecast(series) – Returns the last value of the series that is not a forecast
  • ExpandingPercentile(series, p) – Returns the value of the p:th percentile within a an expanding window (0 < p < 100)
  • ExpandingPercentRank(series, value) – Returns the rank of a value in a series as a percentage (0..100) of the values in an expanding window

Additional Functions Take a Moving Window

A few more formula functions are now available in a version that takes a moving window: Sum, Mean, Median, HighObs, LowObs and StdDev.

2. Scalar: New Methods

In the Scalar analysis, there are two additional methods:

  • Last non-forecast – The last value that is not a forecast in the series
  • Nth last value – The nth last value of a series, where a value of 1 gives you the last value, 2 the second to last etc.

3. Rolling PCA: Cumulative Proportions

The cumulative proportions of the captured variance can now be calculated and selected as the output instead of the eigenvalues.

4. Slice: Improved Calculations and Added Labels

We’ve fixed some issues that the Slice analysis had with series containing a lot of skipped dates. We have also added week numbers as labels to weekly series, just as you can get month names for monthly series.

Miscellaneous Additions

Copy Special Favorites

In the window shown when you select Copy special for a chart, you can now select to save the selected settings as your Copy special favorite – including the type of copy and the size.

These favorites will then be available in the quick-access menu.

Send Chart to LinkedIn

Charts can now be posted to LinkedIn directly from Macrobond, similarly to what you can already do with Twitter. The command is on the File menu.

Attribute for Source Database

The new series property called Database contains the name of the database where the series is stored. For example, “Macrobond”, “Account in-house” or the name of your SQL database. You can use this in dynamic text.

Web API Provider

For a long time, you have been able to connect the Macrobond application to your internal SQL databases by using the SQL Database Connector. Now we have added yet another connector called Web API Database Connector. If you implement a specific REST based API in a web service, the Macrobond application can call this API to obtain and browse for time series. This is a bit more work on your side than connecting directly to an SQL database, but offers more flexibility when it comes to what databases it can connect to.

If you are interested in this functionality, please contact the Macrobond support team.

Web Publish

Overview

The Web publish feature makes publishing charts a simple and quick process. The feature is designed to provide URL addresses for charts that you can post on blogs, social media, websites or a content management system (CMS).

How to use Web publish?

From Analytics

Save chart on Personal/Department/Company account. When it is open in Analytics tab go to (in upper menu) File > Web publish.

See here pre-1.29 version view

 

This will open the following window where you can change several settings such as size, format and whether the chart should be static or dynamic. You can also add a comment to the chart.

See here pre-1.29 version view

 

From Web publish tab

In left bottom corner press ‘Publish document’ button, then select file. This will open new window same as above.

Publishing types

Two types of images are available for publishing:

  • Static image of a chart – published image will be a snapshot of the chart, meaning the image won’t be updated when data is updated from the source.
  • Dynamic image of a chart – published image will be updated with the latest data from the source. This update will happen automatically.

Web publish tab

In the Web publish tab, you will find all charts added from the file menu.

Here, you can easily access and manage all charts ready for web publishing. You can view them in your preferred way:

  • Flat view – simple list of all charts,
  • Tree view – charts are grouped according to the account in which the original documents are stored.

You can also add charts from here by clicking on 'Publish document.'

After choosing which document to publish, you can copy the chart either as a HTML or a URL link. If you choose the latter, and the chart is dynamic, you can send the link as an email and the chart will be updated whenever the link is opened.

NOTE: The capacity for published images is limited. You can store up to 3 dynamic and 10 static documents per license. This limit can be increased as an add-on service.

Technical notes

  • You can modify the URL of dynamic publications in order to render the chart in a different size. For a URL that ends with …5f85f2c8e7e/chart.png you can change the URL to …5f85f2c8e7e/900x300/chart.png in order to get an image of size 900x300 pixels.
  • Published charts that have not been viewed by anyone for more than 2 years will automatically be removed.
  • Dynamic publications do not work with in-house data or data that comes from local data sources such as SQL servers or Bloomberg.

Macrobond 1.21

Selection of new functionality

Series ratios

Using the new calculate button, with one click you can create a ratio that expresses a series in relation to one of the following, predefined indicators:

  • PerCapita: divides the series by the population of the corresponding region
  • PerGDP: divides the series by the GDP of the corresponding region
  • PerGDPPercent: same idea as ‘PerGDP’ but expresses the result as a percentage.

Find out more about Series Ratios or take a look at our tutorial.

The underlying methodology for each ratio can be found here.

Rolling PCA

This allows you to run PCA models on a rolling window of observations, using an expanding or a moving window.

Find out more in our help article on Rolling PCA

Scalar: new setting for value labels

When using Scalar Analysis, you can now decide which attribute(s) should be used when generating value labels. For instance, this allows you to change all value labels to reflect only the corresponding region of the series, instead of setting them manually, one by one.

Find out more in our help article on Scalar

Sorting: Limiting the number of items

In the sorting analysis, you can now limit how many items to include in the output, using the new observation limit setting. This is very helpful when you only want to display, for example, the top 10 categories among an input list of 50 items.

Find out more in our help article on sorting

Rate of change: Period mode for Annual Rate %

In the rate of change analysis, you can now select “Mode=Calendar date” also when using “Method=Annual Rate %”. In this case, we measure the distance between the dates using the ISDA standard Actual/Actual.

Find out more in our help article on rate of change

New Formulas

We’ve added a modification of the JoinScaled formula called ‘JoinScaledAppend(series1, series2)’. It works like JoinScaled (i.e. joining two series together) but that scales the second series instead of the first.

ExtendLastYoYForecast(series) uses the last % YoY change to calculate a forecast for the whole calendar range.

Analysis tree: Drag & drop analyses

In the analysis tree, you can now move analyses up or down in the tree, as long as they are part of the same branch or on the same level. This does not affect calculations but will help you organize your document.

Excel add-in: Partial periods conversion method

The partial periods setting has been available in the Macrobond application since version 1.20 but now you can also use it via the Excel add-in, and in the APIs for Python, R and MATLAB.

This setting allows you to decide how to handle the missing observations in a calendar when converting a series to a lower frequency. By default, the application only converts a series to a lower frequency if the calendar of observations for the period is complete (example: converting a series from daily to monthly requires a full month of observations).Partial periods solves the issue by letting you decide how to treat these incomplete periods, with various settings.

Graph layout: ‘Range’ as graph type

You can now use the graph type ‘Range’ in time charts and category charts – which allows for columns that extend below and above zero.

Chart ornaments: Filled arrows & diamond head

We’ve added to new endings for line ornaments, which you can see in the chart below.

Find out more in our help article on chart ornaments

Charts: New settings to define the space around chart elements

In this version we have introduced some new settings for space around chart elements:

  • For the axes, there is a setting called distance that controls the distance between the axis labels and the axis tick marks (or the graph area, if the tick marks have been turned off)
  • The distance setting for the copyright/source text controls the distance from the element above.
  • The distance for the axis labels text controls the space to the element above when you use value labels.
  • If the legend is at the bottom or to the right, the distance setting controls where the legend is situated relative to the next element in the direction of the above it if the legend is at the bottom; to the element to the right, if the legend is to the left etc.
  • The spacing setting for the legend controls the distance between the legend elements.
  • The spacing for the x-axis controls the distance between the label rows when there more than one row
  • There are settings called Minimum indentation here:

These settings control the minimum distance from the chart border to the graph area (y-axis) and can be used for aligning y-axes when there are several charts on a page in a presentation. The alignment of the main title and legend will take this setting into consideration.

Please note that some of these settings accept negative values. This can be useful at times but can also cause elements to overlap or be clipped.

Find out more in our help article on chart settings

Style sheets: Chart preview

When selecting a style sheet via the “Select chart style sheet” dialog, you can now see a preview of the chart with the selected style sheet applied.

Find out more in our help article on style sheets

Actions Bar: Improvement to navigation

To facilitate simpler navigation of the actions bar, when you click on a group box it’ll expand over the other boxes., and downwards if necessary.

Find out more in our help article on the actions bar

Text Search: Word suggestion

We’ve now updated all search fields to provide suggestions for your search query. This is done to improve the search results and help you find the correct data more easily.

Find out more in our help article on searching in Macrobond

Open document dialog box: Warning for discontinued series

We now show a warning icon in the open document dialog box when a document contains discontinued series that haven’t been acknowledged previously. The flag is set when the document is saved, but this information can be refreshed by pressing the “flash” button in the toolbar of the dialog.

Find out more in our help article on rate of change

File cache for heavy calculations

We have added a file cache that will store the result of the Seasonal Adjustment Census X-13 TO improve speed and performance when providing results, as long as the input data is the same. This is also available for the Vector Autoregression (VAR) analysis.

Various minor changes to the UI

You will also notice a few cosmetic changes in the Macrobond Application.

How To Upgrade

The new version can be installed directly via the Macrobond application by clicking on the yellow ribbon, which appears on the screen, or by selecting Check for update in the Help menu. If you need assistance, a description of how to upgrade can be found here.

Data protection

Personal data

To find out more about  Personal Data Protection go here.

Encryption

Information sent from Macrobond users to our backend and from the backend to the users is encrypted. When using an HTTPS-connection, clients can configure the application to verify the integrity of the end-to-end encryption and be alerted about potential HTTPS interception with a rogue CA installed on a local computer.

Data is encrypted in transit - the client application uses HTTPS-protocol to communicate with our servers. All the communication between Macrobond data centers is also encrypted.

Servers

Users decide where their Macrobond Documents are stored. When saved on the Library/Personal/Department/Company account documents are stored on Macrobond servers. Alternatively the same documents can be saved locally on the user’s computer or a locally reachable network location.

Similarly, a user’s in-house time series can be saved under the Company account or kept in local Excel files, when the Excel in-house feature is used.

If needed Macrobond can centrally disable the possibility of storing any in-house series or Macrobond Documents on Macrobond servers. Then users need to use their own file servers for storing Macrobond documents and Excel in-house, as an alternative to Account in-house.

We do our utmost to keep the data secure from unauthorized access. Our servers are updated with the latest security patches, we have automated security audits of the internet-facing servers (to detect a potential security breach as early as possible). We also have automated integrity/abnormal activity tests. Macrobond does not use shared cloud services to provide its functionality to clients.

We have our client-facing servers located in three sites located in Europe, Asia and North America. A failover mechanism is built into our client application (Main application, Excel Add-in) and is seamless for the user. In the worst-case scenario – an external attack wiping our servers out – we keep offline backups.

We continuously monitor the performance and availability of our servers; a dedicated team works on-call to resolve potential technical problems as they arise. We gather plenty of backend load statistics to plan and increase capacity as our user-base grows.

We let users store their own data on Macrobond servers. This includes:

  • Charts
  • Chart view sizes
  • Fill ranges
  • In-house series
  • Style sheets
  • Presentations
  • User defined formulas
  • Bookmarks, favorite series & data-tree branches
  • Application configurations

Summary

Data protection is a priority at Macrobond, we continuously make an effort to increase your data safety and keep it secure. If you have any further questions regarding this issue, please contact our support team here.

Macrobond 1.20

Selection of new functionality

Watchlist

The Watchlist allows you monitor specific documents to see when the data in them is updated or is scheduled to be updated. You can see Watchlist as your personal agenda that helps you keep track of events.
Adding items to your Watchlist is done by adding a Macrobond document and chart that contains the series you want to monitor. Find out more about Watchlist here, or take a look at this how-to video tutorial.

Watchlist Primer

To help you get started, we have prepared documents for commonly used indicators and regions. You can create Watchlist items with these by using the Watchlist Primer dialog that you can access from the file menu.
Once you have added a few Watchlist items, you can use the overview tab to the left to see when data in these documents was last updated.

By clicking in the “Next release” header, you can shift perspective and see when the next updates are scheduled. The events that are closest in time are highlighted in bold.Your Watchlist items can be personal or shared with your company or department.

Extend incomplete periods when converting to lower frequency

We’ve added a setting called “Partial period method”, which allows you select how to handle to a lower frequency when there aren’t enough values to cover the whole last (and first) period.
You’ll find this setting in the series list under “conversion settings”.

Unit root test analysis

The Unit Root test analysis attempts to answer whether a series is (trend-) stationary. If not, the long run variance can wonder off into infinity and cause complications for further statistical modelling.

The test used is the Augmented Dickey Fuller (ADF), which is based on regression analysis. The null hypothesis is that the series has a unit root. This is tested using special tables[1] from which p-values for the hypothesis can be computed. The test automatically takes into account model specification

See this document for an example of the unit root test.

Macrobond chart library : Examples/Analyses/Unit Root Test/Unit Root Test – log US GDP

[1] MacKinnon, James G, 1996. “Numerical Distribution Functions for Unit Root and Cointegration Tests,” Journal of Applied Econometrics, John Wiley & Sons, Ltd., vol. 11(6), pages 601-618, Nov.-Dec.

New bar chart graph type: Range

Now you can display two series as a range in a bar chart.

Default tree filter in data tree

You now have more control of the region filters in the data tree. If you select a filter from the list of previously used filters, the filter is only applied to the current view. However, if you select it by clicking on the white star to the right, this filter will be the new default filter across views. Changing the default filter changes all views that currently use the default filter and will be used for all new analytics documents that are opened.

Directional arrows on scatter graphs

Additional line endings for graph annotation

Choose from various end points to a line, when adding an annotation.

Select portrait or landscape when exporting presentation documents

There is now an option to select a portrait page orientation as well as landscape when you export a presentation document to PowerPoint.

Paste data sets into Macrobond

You can now manually copy/paste the series from an entire dataset (or parts thereof) at once from Excel into Macrobond. This feature is available when creating Document Series as well as Account in-house series using external data. The Application automatically detects the frequency based on the information entered.

How To Upgrade

The new version can be installed directly via the Macrobond application by clicking on the yellow ribbon, which appears on the screen, or by selecting Check for update in the Help menu. If you need assistance, a description of how to upgrade can be found here.