Services confidence scores#

This category group contains real-time standardized and seasonally adjusted measures of services or non-manufacturing business confidence and their changes, based on business surveys. Vintages are standardized by using historical means and standard deviations on the survey level. The purpose of standardization based on expanding samples is to replicate the market’s information state on what was considered normal in terms of level and deviation and to make metrics more intuitive and comparable across countries.

Survey scores#

Ticker: SBCSCORE_SA / _3MMA

Label: Services confidence, sa: z-score / z-score, 3mma

Definition: Services confidence, seasonally adjusted: z-score / z-score, 3-month moving average

Notes:

  • The underlying survey indices are based on responses for companies of services sectors or all non-manufacturing sectors. China (CNY) Japan (JPY), Korea (KRW), Thailand (THB) and Taiwan (TWD) use non manufacturing surveys instead which include sectors such as fishing and mining. For details on the underlying surveys, please read Appendix 3.

  • Chile (CLP), Colombia (COP), Indonesia (IDR), Mexico (MXN), Norway (NOK), Peru (PEN), Russia (RUB) and South Africa (ZAR), which are usually in JPMaQS’ range of country coverage, do not publish either services or non-manufacturing surveys, hence they are excluded from this set.

  • The data is sourced from national statistical offices or business groups. Most countries release monthly-frequency data. The exceptions are the following currency areas which produce quarterly data Australia (AUD), United Kingdom (GBP), India (INR), Japan (JPY), Malaysia (MYR), Philippines (PHP), Singapore (SGD).

  • Confidence levels are seasonally adjusted, either at the source or by JPMaQS. The seasonally adjustment factors are estimated based on expanding samples observing the point-in-time information states.

  • Confidence values are normalized based on past expanding data samples in order to replicate the market’s information state on survey readings on what level and standard deviations are considered”. For in-depth explanation of how the z-scores are computed, please read Appendix 2.

Survey score dynamics#

Ticker: SBCSCORE_SA_D1M1ML1 / _D3M3ML3 / _D1Q1QL1 / _D6M6ML6 / _D2Q2QL2 / _3MMA_D1M1ML12 / _D1Q1QL4

Label: Services confidence, sa, z-score: diff m/m / diff 3m/3m / diff q/q / diff 6m/6m / diff 2q/2q / diff oya, 3mma / diff oya (q)

Definition: Services confidence, seasonally adjusted, z-score: difference over 1 month / difference of last 3 months over previous 3 months / difference of last quarter over previous quarter / difference of last 6 months over previous 6 months / difference of last 2 quarters over previous 2 quarters / difference over a year ago, 3-month moving average / difference over a year ago, quarterly values

Notes:

  • These changes are based on concurrent vintages and are different from changes in the quantamental indicator series. The former are information states of changes. The latter are changes in information states.

  • See also notes of the “Survey scores” section.

Imports#

Only the standard Python data science packages and the specialized macrosynergy package are needed.

import os
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import math

import json
import yaml

import macrosynergy.management as msm
import macrosynergy.panel as msp
import macrosynergy.signal as mss
import macrosynergy.pnl as msn


from macrosynergy.download import JPMaQSDownload

from timeit import default_timer as timer
from datetime import timedelta, date, datetime

import warnings

warnings.simplefilter("ignore")

The JPMaQS indicators we consider are downloaded using the J.P. Morgan Dataquery API interface within the macrosynergy package. This is done by specifying ticker strings, formed by appending an indicator category code <category> to a currency area code <cross_section>. These constitute the main part of a full quantamental indicator ticker, taking the form DB(JPMAQS,<cross_section>_<category>,<info>), where <info> denotes the time series of information for the given cross-section and category. The following types of information are available:

  • value giving the latest available values for the indicator

  • eop_lag referring to days elapsed since the end of the observation period

  • mop_lag referring to the number of days elapsed since the mean observation period

  • grade denoting a grade of the observation, giving a metric of real time information quality.

After instantiating the JPMaQSDownload class within the macrosynergy.download module, one can use the download(tickers,start_date,metrics) method to easily download the necessary data, where tickers is an array of ticker strings, start_date is the first collection date to be considered and metrics is an array comprising the times series information to be downloaded.

cids_dm = ["USD", "GBP", "EUR", "JPY", "AUD", "CAD", "CHF", "NZD", "SEK", "NOK"]

cids_em = ["CNY","KRW","SGD","MXN","INR","RUB","ZAR","TRY","BRL","TWD",
    "PLN",
    "THB",
    "IDR",
    "HUF",
    "CZK",
    "ILS",
    "CLP",
    "PHP",
    "COP",
    "MYR",
    "RON",
    "PEN",
]

cids_dns = ["NOK"] # no survey
cids_dmx = [x for x in cids_dm if x not in cids_dns]
cids_ens = ["CLP", "COP", "IDR", "MXN", "PEN", "RUB", "ZAR"]  # no survey
cids_emx = [x for x in cids_em if x not in cids_ens]

cids = cids_dmx + cids_emx
main = [
    "SBCSCORE_SA",
    "SBCSCORE_SA_3MMA",
    "SBCSCORE_SA_D1M1ML1",
    "SBCSCORE_SA_D3M3ML3",
    "SBCSCORE_SA_D1Q1QL1",
    "SBCSCORE_SA_D6M6ML6",
    "SBCSCORE_SA_D2Q2QL2",
    "SBCSCORE_SA_3MMA_D1M1ML12",
    "SBCSCORE_SA_D1Q1QL4",
]

econ = [
"USDGDPWGT_SA_1YMA"
]  # economic context

mark = [
"DU02YXR_NSA", "DU05YXR_NSA", "DU02YXR_VT10" , "DU05YXR_VT10","CDS02YXR_VT10","CDS05YXR_VT10"
]  # market links


xcats = main + econ + mark
# Download series from J.P. Morgan DataQuery by tickers

start_date = "1990-01-01"
tickers = [cid + "_" + xcat for cid in cids for xcat in xcats]
print(f"Maximum number of tickers is {len(tickers)}")

# Retrieve credentials

client_id: str = os.getenv("DQ_CLIENT_ID")
client_secret: str = os.getenv("DQ_CLIENT_SECRET")

# Download from DataQuery

with JPMaQSDownload(client_id=client_id, client_secret=client_secret) as downloader:
    start = timer()
    assert downloader.check_connection()
    df = downloader.download(
        tickers=tickers,
        start_date=start_date,
        show_progress=True,
        metrics=["value", "eop_lag", "mop_lag", "grading"],
        suppress_warning=True,
    )
    end = timer()

dfd = df

print("Download time from DQ: " + str(timedelta(seconds=end - start)))
Maximum number of tickers is 384
Downloading data from JPMaQS.
Timestamp UTC:  2024-03-27 11:45:56
Connection successful!
Requesting data:  47%|████▋     | 36/77 [00:07<00:08,  4.98it/s]
Requesting data: 100%|██████████| 77/77 [00:16<00:00,  4.56it/s]
Downloading data: 100%|██████████| 77/77 [00:45<00:00,  1.70it/s]
Some expressions are missing from the downloaded data. Check logger output for complete list.
432 out of 1536 expressions are missing. To download the catalogue of all available expressions and filter the unavailable expressions, set `get_catalogue=True` in the call to `JPMaQSDownload.download()`.
Some dates are missing from the downloaded data. 
2 out of 8935 dates are missing.
Download time from DQ: 0:01:07.619049

Availability#

cids_exp = cids # cids expected in category panels

msm.missing_in_df(dfd, xcats=main, cids=cids_exp)
Missing xcats across df:  []
Missing cids for SBCSCORE_SA:                []
Missing cids for SBCSCORE_SA_3MMA:           ['AUD', 'GBP', 'INR', 'JPY', 'MYR', 'PHP', 'SGD']
Missing cids for SBCSCORE_SA_3MMA_D1M1ML12:  ['AUD', 'GBP', 'INR', 'JPY', 'MYR', 'PHP', 'SGD']
Missing cids for SBCSCORE_SA_D1M1ML1:        ['AUD', 'GBP', 'INR', 'JPY', 'MYR', 'PHP', 'SGD']
Missing cids for SBCSCORE_SA_D1Q1QL1:        ['BRL', 'CAD', 'CHF', 'CNY', 'CZK', 'EUR', 'HUF', 'ILS', 'KRW', 'NZD', 'PLN', 'RON', 'SEK', 'THB', 'TRY', 'TWD', 'USD']
Missing cids for SBCSCORE_SA_D1Q1QL4:        ['BRL', 'CAD', 'CHF', 'CNY', 'CZK', 'EUR', 'HUF', 'ILS', 'KRW', 'NZD', 'PLN', 'RON', 'SEK', 'THB', 'TRY', 'TWD', 'USD']
Missing cids for SBCSCORE_SA_D2Q2QL2:        ['BRL', 'CAD', 'CHF', 'CNY', 'CZK', 'EUR', 'HUF', 'ILS', 'KRW', 'NZD', 'PLN', 'RON', 'SEK', 'THB', 'TRY', 'TWD', 'USD']
Missing cids for SBCSCORE_SA_D3M3ML3:        ['AUD', 'GBP', 'INR', 'JPY', 'MYR', 'PHP', 'SGD']
Missing cids for SBCSCORE_SA_D6M6ML6:        ['AUD', 'GBP', 'INR', 'JPY', 'MYR', 'PHP', 'SGD']

Services survey score are available for many countries from the late-1990s and early 2000s. However, Switzerland and some Emerging Markets only have scores from the 2010s.

For the explanation of currency symbols, which are related to currency areas or countries for which categories are available, please view Appendix 1.

xcatx = main
cidx = cids_exp

dfx = msm.reduce_df(dfd, xcats=xcatx, cids=cidx)
dfs = msm.check_startyears(
    dfx,
)
msm.visual_paneldates(dfs, size=(18, 4))

print("Last updated:", date.today())
../_images/Services confidence scores_16_0.png
Last updated: 2024-03-27
plot = msm.check_availability(
    dfd, xcats=main, cids=cids_exp, start_size=(20, 2), start_years=False
)
../_images/Services confidence scores_17_0.png

Average grades are currently quite mixed across countries and times.

plot = msp.heatmap_grades(
    dfd,
    xcats=main,
    cids=cids_exp,
    size=(18, 4),
    title=f"Average vintage grades from {start_date} onwards",
)
../_images/Services confidence scores_19_0.png
xcatx = main
cidx = cids_exp

msp.view_ranges(
    dfd,
    xcats=["SBCSCORE_SA","SBCSCORE_SA_3MMA"],
    cids=cidx,
    val="eop_lag",
    title="End of observation period lags (ranges of time elapsed since end of observation period in days)",
    start="2000-01-01",
    kind="box",
    size=(16, 4),
    legend_loc = 'upper right'
)

msp.view_ranges(
    dfd,
    xcats=["SBCSCORE_SA","SBCSCORE_SA_3MMA"],
    cids=cidx,
    val="mop_lag",
    title="Median of observation period lags (ranges of time elapsed since middle of observation period in days)",
    start="2000-01-01",
    kind="box",
    size=(16, 4),
    legend_loc = 'upper right'
)
../_images/Services confidence scores_20_0.png ../_images/Services confidence scores_20_1.png

For graphical representation, it is helpful to rename some quarterly dynamics into an equivalent monthly dynamics.

dfd = dfd.copy()

dict_repl = {
    "SBCSCORE_SA_D1Q1QL1": "SBCSCORE_SA_D3M3ML3",
    "SBCSCORE_SA_D2Q2QL2": "SBCSCORE_SA_D6M6ML6",
    "SBCSCORE_SA_D1Q1QL4": "SBCSCORE_SA_3MMA_D1M1ML12",
}
for key, value in dict_repl.items():
    dfd["xcat"] = dfd["xcat"].str.replace(key, value)

History#

Services confidence scores#

Services surveys scores have been stationary, with short-term, noise and large outliers in times of global financial crisis and the COVID pandemic.

cidx = cids
xcatx = ["SBCSCORE_SA", "SBCSCORE_SA_3MMA"]

msp.view_timelines(
    dfx,
    xcats=xcatx,
    cids=cidx,
    start=start_date,
    title="Services confidence scores (blue) and 3-month averages (orange) ",
    xcat_labels=[
        "monthly",
        "3-month moving average",
    ],
    ncol=4,
    same_y=False,
    title_adj=0.99,
    title_xadj=0.5, 
    legend_fontsize=17,
    title_fontsize=27,
    size=(12, 7),
    aspect=1.7,
    all_xticks=True,
    legend_ncol=2,
    label_adj=0.05,
)
../_images/Services confidence scores_26_0.png

Services confidence scores have naturally been positively correlated across most countries. China and Brazil stand out in displaying not much correlation with other countries.

msp.correl_matrix(
    dfx,
    xcats="SBCSCORE_SA",
    cids=cidx,
    size=(20, 14),
    start=start_date,
    title="Cross-sectional correlation of z-scored services confidence, since 1995",
)
../_images/Services confidence scores_28_0.png

Confidence score changes over a year#

Annual changes in confidence scores show pronounced cyclical patterns.

xcatx = ["SBCSCORE_SA_3MMA_D1M1ML12"]
cidx = cids

msp.view_timelines(
    dfx,
    xcats=xcatx,
    cids=cidx,
    start=start_date,
    title="Services confidence scores (3mma or quarterly), change over a year ago",
    legend_fontsize=17,
    title_fontsize=27,
    ncol=4,
    same_y=True,
    size=(12, 7),
    aspect=1.7,
    all_xticks=True,
)
../_images/Services confidence scores_31_0.png

Short-term confidence score changes#

Short-term confidence changes displayed marked differences across countries, in terms of amplitudes and autocorrelation. This reflects that underlying surveys, methodologies and industries are all different.

xcatx = ["SBCSCORE_SA_D3M3ML3", "SBCSCORE_SA_D6M6ML6"]
cidx = cids

msp.view_timelines(
    dfx,
    xcats=xcatx,
    cids=cidx,
    start=start_date,
    title="Changes in services confidence scores",
    xcat_labels=["3-month changes", "6-month changes"],
    legend_fontsize=15,
    title_fontsize=27,
    ncol=4,
    same_y=True,
    size=(12, 7),
    aspect=1.7,
    all_xticks=True,
    legend_ncol=2,
    label_adj=0.05,
)
../_images/Services confidence scores_34_0.png

However, correlation of short-term changes across countries has been predominantly positive.

msp.correl_matrix(dfx, xcats="SBCSCORE_SA_D3M3ML3", cids=cidx, size=(20, 14))
../_images/Services confidence scores_36_0.png

Importance#

Empirical clues#

dfb = df[df["xcat"].isin(["FXTARGETED_NSA", "FXUNTRADABLE_NSA"])].loc[
    :, ["cid", "xcat", "real_date", "value"]
]
dfba = (
    dfb.groupby(["cid", "real_date"])
    .aggregate(value=pd.NamedAgg(column="value", aggfunc="max"))
    .reset_index()
)
dfba["xcat"] = "FXBLACK"
fxblack = msp.make_blacklist(dfba, "FXBLACK")

The information states of services confidence scores can be aggregated to a global score by using the JPMaQS series for concurrent nominal (USD) GDP weights (category ticker: USDGDPWGT_SA_1YMA) for the available countries at each point in time.

dfa = msp.linear_composite(
    df=dfd,
    xcats="SBCSCORE_SA",
    cids=cids,
    weights="USDGDPWGT_SA_1YMA",
    new_cid="GLB",
    complete_cids=False,
)
dfx = msm.update_df(dfx, dfa)
msp.view_timelines(
    dfx,
    cids="GLB",
    xcats=["SBCSCORE_SA"],
    xcat_labels=["Services confidence score"],
    start=start_date,
    title="Global weighted services confidence score, seasonally adjusted, information state",
    title_adj=1.02,
    title_xadj=0.49,
    title_fontsize=16,
    size=(14, 5),
)
../_images/Services confidence scores_44_0.png

Business survey scores changes and levels have been significant negative predictors of duration returns across various maturities. Strong services sentiment is typically indicative of a strong state of the business cycle, eroding monetary policy support and raising inflation fears.

cr = msp.CategoryRelations(
    dfd,
    xcats=["SBCSCORE_SA_D6M6ML6", "DU05YXR_VT10"],
    cids=list(set(cids) - set(["TRY"])),  # exclude Turkey for scaling
    freq="M",
    lag=1,
    xcat_aggs=["last", "sum"],
    fwin=1,
    start="2000-01-01",
    years=None,
)

cr.reg_scatter(
    title="Services survey score changes and subsequent IRS receiver returns (all available countries, since 2000)",
    labels=False,
    coef_box="lower right",
    xlab="Services survey score, 6 months over 6 months, seasonally adjusted, end-of-month information state",
    ylab="Next month's 5-year IRS receiver return, vol-targeted at 10%",
    prob_est="map",
)
DU05YXR_VT10 misses: ['BRL', 'PHP', 'RON'].
../_images/Services confidence scores_46_1.png
cr = msp.CategoryRelations(
    dfd,
    xcats=["SBCSCORE_SA", "DU02YXR_VT10"],
    cids=list(set(cids) - set(["TRY"])),  # exclude Turkey for scaling
    freq="M",
    lag=1,
    xcat_aggs=["last", "sum"],
    fwin=1,
    start="2000-01-01",
    years=None,
    xcat_trims=[10, 20],  # Trim massive outliers
)

cr.reg_scatter(
    title="Services survey scores and subsequent IRS receiver returns (all available countries, since 2000)",
    labels=False,
    coef_box="upper left",
    xlab="Services survey score, seasonally adjusted, information state at month end",
    ylab="Next month's 5-year IRS receiver return, vol-targeted at 10%",
    prob_est="map",
)
DU02YXR_VT10 misses: ['BRL', 'PHP', 'RON'].
../_images/Services confidence scores_47_1.png

Appendices#

Appendix 1: Currency symbols#

The word ‘cross-section’ refers to currencies, currency areas or economic areas. In alphabetical order, these are AUD (Australian dollar), BRL (Brazilian real), CAD (Canadian dollar), CHF (Swiss franc), CLP (Chilean peso), CNY (Chinese yuan renminbi), COP (Colombian peso), CZK (Czech Republic koruna), DEM (German mark), ESP (Spanish peseta), EUR (Euro), FRF (French franc), GBP (British pound), HKD (Hong Kong dollar), HUF (Hungarian forint), IDR (Indonesian rupiah), ITL (Italian lira), JPY (Japanese yen), KRW (Korean won), MXN (Mexican peso), MYR (Malaysian ringgit), NLG (Dutch guilder), NOK (Norwegian krone), NZD (New Zealand dollar), PEN (Peruvian sol), PHP (Phillipine peso), PLN (Polish zloty), RON (Romanian leu), RUB (Russian ruble), SEK (Swedish krona), SGD (Singaporean dollar), THB (Thai baht), TRY (Turkish lira), TWD (Taiwanese dollar), USD (U.S. dollar), ZAR (South African rand).

Appendix 2: Methodology of scoring#

Survey confidence values are transformed into z-scores based on past expanding data samples in order to replicate the market’s information state on survey readings relative to what is considered as “normal”.

The underlying economic data used to develop the above indicators comes in the form of diffusion index or derivatives thereof. They are either seasonally adjusted at the source or by JPMaQS. This statistic is typically used to summarise surveys results with focus on the direction of conditions (extensive margin) rather than the quantity (intensive margin).

In order to standardise different survey indicators, we apply a custom z-scoring methodology to each survey’s vintage based on the principle of a sliding scale for the weights of empirical versus theoretical neutral level:

  • We first determine a theoretical nominal neutral level, defined by the original formula used by the publishing institution. This is typically one of 0, 50, or 100.

  • We compute the measure of central tendency: for the first 5 years this is a weighted average of neutral level and realised median. As time progresses, the weight of the historical median increases and the weight of the notional neutral level decreases until it reaches zero at the end of the 5-year period.,

  • We compute the mean absolute deviation to normalize deviations of confidence levels from their presumed neutral level. We require at least 12 observations to estimate it.

We finally calculate the z-score for the vintage values as

\[ Z_{i, t} = \frac{X_{i, t} - \bar{X_i|t}}{\sigma_i|t} \]

where \(X_{i, t}\) is the value of the indicator for country \(i\) at time \(t\), \(\bar{X_i|t}\) is the measure of central tendency for country \(i\) at time \(t\) based on information up to that date, and \(\sigma_i|t\) is the mean absolute deviation for country \(i\) at time \(t\) based on information up to that date. Whenever a country / currency area has more than one representative survey, we average the z-scores by observation period (month or quarter).

We want to maximise the use of information set at each point in time, so we devised a back-casting algorithm to estimate a z-scored diffusion index in case another survey has already released some data for the latest observation period. Put simply, as soon as one survey for a month has been published we estimated the value for the other(s) in order to derive a new monthly observation.

Appendix 3: Survey details#

surveys = pd.DataFrame(
    [
        {
            "country": "Australia",
            "source": "National Australia Bank",
            "details": "NAB Business Survey Business Conditions in Finance, Business and property services",
        },
        {
            "country": "Brazil",
            "source": "Getulio Varags Foundation",
            "details": "Service Confidence Index Total SA Index",
        },
        {
            "country": "Canada",
            "source": "Canadian Federation of Independent Business",
            "details": "CFIB Business Barometer Index Overall Index Business Services Long-term Index",
        },
        {
            "country": "Switzerland",
            "source": "UBS Switzerland AG",
            "details": "Purchasing Managers Index Service sector",
        },
        {
            "country": "China",
            "source": "China Federation of Logistics & Purchasing",
            "details": "Purchasing Managers Index Non-Manufacturing PMI SA Index",
        },
        {
            "country": "Czech Republic",
            "source": "Czech Statistical office",
            "details": "Services Confidence Indicator Total SA",
        },
        {
            "country": "Germany",
            "source": "DG ECFIN",
            "details": "Services Confidence Indicator Total Services Sector",
        },
        {
            "country": "Spain",
            "source": "DG ECFIN",
            "details": "Services Confidence Indicator Total Services Sector"
        },
        {
            "country": "Euro Area",
            "source": "DG ECFIN",
            "details": "Services Confidence Indicator Total Services Sector"
        },
        {
            "country": "France",
            "source": "INSEE",
            "details": "Service Climate Indicator Index",
        },
        {
            "country": "United Kingdom",
            "source": "Confederation of British Industry",
            "details": "Service Sector Survey Optimism",
        },
        {
            "country": "Hungary",
            "source": "DG ECFIN",
            "details": "Services Confidence Indicator Total Services Sector"
        },
        {
            "country": "Israel",
            "source": "Israel Central Bureau of Statistics",
            "details": "Business Tendency Survey Services",
        },
        {
            "country": "India",
            "source": "Reserve Bank of India",
            "details": "Services & Infrastructure Outlook Survey Services Index",
        },
        {
            "country": "Italy",
            "source": "DG ECFIN",
            "details": "Services Confidence Indicator Total Services Sector"
        },
        {
            "country": "Japan",
            "source": "Bank of Japan",
            "details": "Tankan Business Conditions Non-Manufacturing",
        },
        {
            "country": "South Korea",
            "source": " Bank of Korea",
            "details": " Business Survey Index National Tendency Business Condition Non-Manufacturing SA Index",
        },
        {
            "country": "Malaysia",
            "source": "Department of Statistics Malaysia",
            "details": "Business Tendency Survey Current Situation Services Total",
        },
        {
            "country": "Netherlands",
            "source": "DG ECFIN",
            "details": "Services Confidence Indicator Total Services Sector",
        },
        {
            "country": "New Zealand",
            "source": "Business New Zealand",
            "details": "Performance of Services Index",
        },
        {
            "country": "Philippines",
            "source": " Central Bank of the Philippines",
            "details": " Business Outlook Index on the Macroeconomy Current Quarter Services Sector Index",
        },
        {
            "country": "Poland",
            "source": "DG ECFIN",
            "details": "Services Confidence Indicator Total Services Sector"
        },
        {
            "country": "Romania",
            "source": "DG ECFIN",
            "details": "Services Confidence Indicator Total Services Sector"
        },
        {
            "country": "Sweden",
            "source": "Swedbank",
            "details": "Purchasing Managers Index Total Services SA Index",
        },
        {
            "country": "Singapore",
            "source": "Singapore Department of Statistics",
            "details": "Business Expectations General Expecations for Next 6 Months Services",
        },
        {
            "country": "Turkey",
            "source": "DG ECFIN",
            "details": "Services Confidence Indicator Total Services Sector"
        },
        {
            "country": "Thailand",
            "source": "Bank of Thailand",
            "details": "Business Survey Index Non-Manufacturing",
        },
        {
            "country": "Taiwan",
            "source": "Taiwan National Development Council",
            "details": "Business Surveys Index Non-Manufacturing",
        },
        {
            "country": "United States",
            "source": "ISM",
            "details": "Report on Business Services Purchasing Managers SA Index",
        },
    ]
)
from IPython.display import HTML

HTML(surveys.to_html(index=False))
country source details
Australia National Australia Bank NAB Business Survey Business Conditions in Finance, Business and property services
Brazil Getulio Varags Foundation Service Confidence Index Total SA Index
Canada Canadian Federation of Independent Business CFIB Business Barometer Index Overall Index Business Services Long-term Index
Switzerland UBS Switzerland AG Purchasing Managers Index Service sector
China China Federation of Logistics & Purchasing Purchasing Managers Index Non-Manufacturing PMI SA Index
Czech Republic Czech Statistical office Services Confidence Indicator Total SA
Germany DG ECFIN Services Confidence Indicator Total Services Sector
Spain DG ECFIN Services Confidence Indicator Total Services Sector
Euro Area DG ECFIN Services Confidence Indicator Total Services Sector
France INSEE Service Climate Indicator Index
United Kingdom Confederation of British Industry Service Sector Survey Optimism
Hungary DG ECFIN Services Confidence Indicator Total Services Sector
Israel Israel Central Bureau of Statistics Business Tendency Survey Services
India Reserve Bank of India Services & Infrastructure Outlook Survey Services Index
Italy DG ECFIN Services Confidence Indicator Total Services Sector
Japan Bank of Japan Tankan Business Conditions Non-Manufacturing
South Korea Bank of Korea Business Survey Index National Tendency Business Condition Non-Manufacturing SA Index
Malaysia Department of Statistics Malaysia Business Tendency Survey Current Situation Services Total
Netherlands DG ECFIN Services Confidence Indicator Total Services Sector
New Zealand Business New Zealand Performance of Services Index
Philippines Central Bank of the Philippines Business Outlook Index on the Macroeconomy Current Quarter Services Sector Index
Poland DG ECFIN Services Confidence Indicator Total Services Sector
Romania DG ECFIN Services Confidence Indicator Total Services Sector
Sweden Swedbank Purchasing Managers Index Total Services SA Index
Singapore Singapore Department of Statistics Business Expectations General Expecations for Next 6 Months Services
Turkey DG ECFIN Services Confidence Indicator Total Services Sector
Thailand Bank of Thailand Business Survey Index Non-Manufacturing
Taiwan Taiwan National Development Council Business Surveys Index Non-Manufacturing
United States ISM Report on Business Services Purchasing Managers SA Index