Purpose
To generate custom benchmarks based on an existing private infrastructure index, with the option to modify the weightage of constituents by constraints. This function returns the computed index level and total returns in timeseries by default.
The computation may take a little longer if complex constraints are supplied, and/or the benchmark is based on an index containing large number of constituents.
Parameters
-
index_ticker (string, required):
Ticker of the index to be used as a base reference. List of tickers can be obtained from 2.3.7 indices_catalogue. -
start_date (date, optional):
Start date of the benchmark. This date must be on or after than 2000-03-31. -
end_date (date, optional):
End date of the benchmark. This date may not be later than the latest release date. -
currency (str, optional):
The reporting currency.
Supported currencies are:"AUD", "CAD", "EUR", "GBP", "JPY", "LCU", "USD. Default value is"USD"if omitted. -
constraints (list of EqualityConstraint, RangeConstraint or Constraint, optional):
Constraints to be submitted. Please refer to the Constraints section below for more information. -
initial_index_value (float, optional):
Initial index pricing level. Default value is1000. -
allocations (bool, optional):
Flag to indicate that the response shall include geography (country and region) and TICCS allocations. Default value isFalse. -
risk_profiles (bool, optional):
Flag to indicate that the response shall include risk profiles. Default value isFalse.
Risk profiles include the following metrics:-
Annualised Total Returns
-
Volatility
-
Maximum Drawdown
-
Sharpe Ratio
-
Value-at-Risk (97.5% and 99.5%)
-
-
include_constituents (bool, optional):
Flag to indicate that the response shall include list of constituents. Default value isFalse.
Constraints
-
EqualityConstraint
A constraint that sets a specific goal.-
criteria (list of ColumnAndValue, required): List of filtering criteria.
-
target (float, required): Desired value for the criteria, represented as a percentage.
Acceptable values include: 0 to 1,0.5represents 50%.
-
-
RangeConstraint
A constraint that sets the goal to be within a value range.-
criteria (list of ColumnAndValue, required): List of filtering criteria
-
lower (float, required): Lower bound of the target range, represented as a percentage.
Acceptable values include: 0 to 1,0.5represents 50%. -
upper (float, required): Upper bound of the target range, represented as a percentage.
Acceptable values include: 0 to 1,0.5represents 50%.
-
-
ColumnAndValue
-
column (string, required): Name of the field.
Supported values include:"BusinessModel", "CorporateStructure", "Geography", "IndustrialClass", "IndustrialSubclass", "IndustrialSuperclass". -
value (string, required): Value of the field to be filtered.
Acceptable values differ from column to column:-
BusinessModel: See 2.3.1 Business Risk for the complete definitions.
Acceptable values include"BR1", "BR2". -
CorporateStructure: See 2.3.4 Corporate Structure for the complete definitions.
Acceptable values include"CS1", "CS2". -
Geography: Country/Region ISO codes. Supported values could be obtained by referencing 2.3.12 inframetrics_debt_region_tree or 2.3.13 inframetrics_equity_region_tree.
-
IndustrialSuperclass, IndustrialClass and IndustrialSubclass: See 2.3.2 Industrial Activities for the complete definitions.
Acceptable values include"IC10", "IC6010".
-
-
-
Constraint
A wrapper for EqualityConstraint and RangeConstraint.-
criteria (list of EqualityConstraint, RangeConstraint or Constraint, required): List of one or more constraints.
-
type (CriteriaAggregationType, optional): Operation to be applied to the list of criteria. Default value is
constants.CriteriaAggretationType.AND. -
start_date (date, optional): Effective date for the constraint. Default value would be the start date of the benchmark if left omitted.
-
Example
import sipametrics.models.custom_benchmarks as custom_benchmark_models
constraint_1 = custom_benchmark_models.EqualityConstraint(
criteria=[
custom_benchmark_models.ColumnAndValue(column="Geography", value="AUS")
],
target=0.4,
)
constraint_2 = custom_benchmark_models.RangeConstraint(
criteria=[
custom_benchmark_models.ColumnAndValue(column="IndustrialSuperclass", value="IC60")
],
lower=0.2,
upper=0.5,
)
constraints = custom_benchmark_models.Constraint(
criteria=[
constraint_1,
constraint_2,
]
)
response = await service.private_infra_custom_benchmarks(
index_ticker="INFRBBBC",
start_date=datetime.date(2014, 4, 30),
end_date=datetime.date(2024, 3, 31),
constraints=[constraints],
# initial_index_value=1000.0,
allocations=True,
# risk_profiles=False,
# include_constituents=False,
)
# Sample Response
# {
# "data": {
# "results": [
# {
# "metrics": [
# {
# "values": [
# {
# "valueDate": "2014-04-30",
# "value": 1000.0,
# "typeId": "T01414",
# "reportDate": "2026-06-30",
# "unitId": 1,
# "currencyId": 991
# },
# ...,
# {
# "valueDate": "2019-11-30",
# "value": -0.008689962650564976,
# "typeId": "T02798",
# "reportDate": "2026-06-30",
# "unitId": 1,
# "currencyId": 991
# },
# ...,
# {
# "valueDate": "2020-03-31",
# "value": {
# "prt": 0.021324527484638978,
# "bra": 0.0028038487205054993,
# "aut": 0.0050096700398280895,
# "aus": 0.39980444791093317,
# "gbr": 0.2546291174778543,
# "swe": 0.00024393738766628016,
# "phl": 0.0,
# "nzl": 0.00100334292886147,
# "irl": 0.0006386747512373437,
# "chl": 0.007188234324883444,
# "deu": 0.018927906702118996,
# "nor": 0.001871884746400414,
# "nld": 0.007700578224445659,
# "sgp": 0.03674643137628595,
# "esp": 0.04714848866176878,
# "mys": 0.004776626062729966,
# "ita": 0.03984913903553873,
# "usa": 0.07014209452301491,
# "fin": 0.0,
# "fra": 0.0801910496412879
# },
# "typeId": "T02814",
# "reportDate": "2026-06-30",
# "unitId": 1,
# "currencyId": 991
# },
# ...,
# {
# "valueDate": "2014-11-30",
# "value": {
# "oce": 0.399836747002502,
# "amr": 0.026291762885880747,
# "asi": 0.05211321022655449,
# "eur": 0.521758279885063
# },
# "typeId": "T02813",
# "reportDate": "2026-06-30",
# "unitId": 1,
# "currencyId": 991
# },
# ...,
# {
# "valueDate": "2022-05-31",
# "value": {
# "cs1": 0.3910072905500294,
# "cs2": 0.6089927094499704
# },
# "typeId": "T02816",
# "reportDate": "2026-06-30",
# "unitId": 1,
# "currencyId": 991
# },
# ...,
# {
# "valueDate": "2020-11-30",
# "value": {
# "bm3": 0.4173535324619836,
# "bm1": 0.26519091687433266,
# "bm2": 0.3174555506636838
# },
# "typeId": "T02815",
# "reportDate": "2026-06-30",
# "unitId": 1,
# "currencyId": 991
# },
# ...,
# {
# "valueDate": "2020-03-31",
# "value": {
# "ic1020": 0.0007735302178358802,
# "ic4030": 0.0036125850016800304,
# "ic7020": 0.010356547841905768,
# "ic8040": 0.0736898431853598,
# "ic5020": 0.0,
# "ic4020": 0.03246715986493126,
# "ic7010": 0.04200822605047106,
# "ic3030": 0.009960344248722278,
# "ic2030": 8.949143681094171e-05,
# "ic6030": 0.07787619028426652,
# "ic7050": 0.0030123453035687626,
# "ic6040": 0.006905881925473814,
# "ic8020": 0.025802355457681603,
# "ic2020": 0.03370288680874027,
# "ic5010": 0.0009477425870641583,
# "ic8050": 0.08186531172236991,
# "ic8010": 0.14926833239087978,
# "ic6060": 0.009968506421418975,
# "ic3040": 0.013419800529162116,
# "ic3020": 0.008009178992555006,
# "ic4010": 0.023510716381488328,
# "ic6050": 0.1876845155496004,
# "ic6010": 0.12054624555239007,
# "ic1010": 0.04731144441237131,
# "ic3050": 0.01568615208368028,
# "ic2040": 0.0,
# "ic3010": 0.009250298709879043,
# "ic2010": 0.012274367039692367,
# "ic7040": 0.0,
# "ic7030": 0.0
# },
# "typeId": "T02812",
# "reportDate": "2026-06-30",
# "unitId": 1,
# "currencyId": 991
# },
# ...,
# {
# "valueDate": "2019-04-30",
# "value": {
# "ic70": 0.060471158513348416,
# "ic20": 0.04481959523868728,
# "ic60": 0.39255908526947103,
# "ic40": 0.05201295474577409,
# "ic50": 0.0007769118849667595,
# "ic30": 0.05698752195355213,
# "ic80": 0.33969187533591394,
# "ic10": 0.052680897058286366
# },
# "typeId": "T02811",
# "reportDate": "2026-06-30",
# "unitId": 1,
# "currencyId": 991
# },
# ...,
# {
# "valueDate": "2020-03-31",
# "value": {
# "ic202010": 0.003262521277293836,
# "ic606020": 0.008726144062763234,
# "ic402010": 0.024628888483573454,
# "ic703030": 0.0,
# "ic101020": 0.03734360335263086,
# "ic701010": 0.03835959826352595,
# "ic204030": 0.0,
# "ic303030": 0.0038157042474799,
# "ic704020": 0.0,
# "ic802010": 0.025802355457681603,
# "ic403020": 0.0,
# "ic703010": 0.0,
# "ic305030": 0.006365811333279684,
# "ic201010": 0.005646272454268792,
# "ic305010": 0.009320340750400596,
# "ic303020": 0.0,
# "ic102010": 0.0007735302178358802,
# "ic303010": 6.76211084774842e-05,
# "ic605050": 0.0004408829958103082,
# "ic303060": 0.006077018892764893,
# "ic501020": 0.0009477425870641583,
# "ic101030": 0.00996784105974045,
# "ic801010": 0.14926833239087978,
# "ic302020": 0.00422963720801159,
# "ic301030": 0.009250298709879043,
# "ic304010": 0.013419800529162116,
# "ic702020": 0.004504186081523084,
# "ic605030": 0.0,
# "ic605040": 0.007356598430410718,
# "ic403010": 0.0036125850016800304,
# "ic705020": 0.0030123453035687626,
# "ic605010": 0.10725388989240249,
# "ic302010": 0.0037795417845434163,
# "ic201030": 0.006628094585423576,
# "ic804010": 0.0736898431853598,
# "ic605020": 0.072633144230977,
# "ic805010": 0.08186531172236991,
# "ic601010": 0.12054624555239007,
# "ic502010": 0.0,
# "ic604010": 0.006905881925473814,
# "ic603020": 0.0367096048590535,
# "ic702010": 0.005852361760382685,
# "ic501010": 0.0,
# "ic401020": 0.0007608784385894768,
# "ic701020": 0.003648627786945106,
# "ic401010": 0.02274983794289885,
# "ic203010": 8.949143681094171e-05,
# "ic606010": 0.001242362358655742,
# "ic301020": 0.0,
# "ic202030": 0.03044036553144644,
# "ic603030": 0.04116658542521302,
# "ic402020": 0.007838271381357809
# },
# "typeId": "T02960",
# "reportDate": "2026-06-30",
# "unitId": 1,
# "currencyId": 991
# },
# ...
# ],
# "asOfReportDate": "2026-06-30"
# }
# ]
# }
# ]
# },
# "metadata": {
# "datumCount": 1080
# }
# }