Troubleshoot the Entity Build
Use the entity build and custom index build logs to help troubleshoot problems with the custom benchmark entity build processes.
Access the Entity Build Log
The log file is an entity build log that is labeled ENTITYENG##.log and can be found on the PACE Server. You can access the log from several locations:
The View Event Queue link under the DataSteward option.
The Server Logs link under the System Administration option.
The Diagnostics tab of the report results that you can download for a selected custom benchmark row selected in the Commit Journal. For more information, see View Custom Index Results from the Commit Journal.
The log provides the entity details and any errors that may have occurred during the entity build.
Lock Down Performance Returns Using the Status Flag
The Performance Calculation report has a process to lock down Performance returns data. It allows you to create performance records with a Preliminary status. You can then use the Commit Journal to review the returns and lock down approved returns by setting the performance status of those returns to Final. The custom benchmark builder uses a similar process to lock down Performance data. It creates performance records with a Preliminary status. You can use the Commit Journal to change the performance status of the custom benchmark entries to Final and "lock down" the performance records.
The column used to achieve the lockdown is the PERF_SUMMARY.STATUS_FLAG column. If this column has a value of F, the data is locked down and cannot be overwritten. If the column has any other value, the data can be overwritten.
If you rerun the custom benchmark builder for a locked down custom benchmark and date, the build fails, and the following error message appears in the Commit Journal for the custom benchmark.
Failed to build XXXXX : Returns already committed as Final for EffectiveDate 01/01/09
View Problems with the Custom Index Build Process
The following table lists common problems with the Custom Index Build process.
Type | Log Message | Explanation |
---|---|---|
Any | Cannot Find Perf_Summary record for entity_detail_id - "XXXX" for effective_date - "xx/xx/xx" | Missing source data needed for entity build. Also check performance data frequency. |
Any | No Source Indexes Found in CUSTOM_INDEX_ATTRIBUTES table for Effective_date "xx/xx/xx" | The custom index attributes does not contain a definition for a date less than or equal to xx/xx/xxxx. |
Any | Check that Entity build is enabled on the server | Entity build not running. |
Any | Violation of PRIMARY KEY constraint | Duplicate securities in the source indices. |
Any | No Data found in Perf_Sec_Returns table for the Underlying Entities | Cannot find source data. |
Any | No Source Indexes Found in CUSTOM_INDEX_ATTRIBUTES table for Effective_date 05/01/00 | The custom index attributes does not contain a definition for a date less than or equal to 05/01/2000. |
Any | Duplicate Custom Entity build field XXXX found in field attributes | Two field attributes are set up against the same performance field with the process of Custom Index. This is not needed and causes the build to fail. Delete one. |
Any | Dictionary Format levels does not match Source Dictionary Levels | Invalid Dictionary Structure error. The levels of the source dictionary must align properly with the levels of the target dictionary. |
Any | Weight Column [ABAL] not populated for PerfSumInst XXXX, rollupId X, SecurityAlias XXXX | A null weight exists for a security or rollup level in the source entity of the custom benchmark. Error indicates specifically where the null exists. There may be additional nulls. Populate nulls. |
Currency/Hedged | Could not find base_currency for target entity | Missing to currency in entity_details table, BASE_CURRENCY. |
Currency/Hedged | No base / system currency found for any entity | Missing from currency in entity_details table, BASE_CURRENCY column. |
Currency/Hedged | No FX rate found for from_currency-to_currency for date xx/xx/xxxx | Currency 1 to Currency 2 missing begin exchange rate for given date. The process goes back three days from the begin date to look for a SPOT_RATE. |
Currency/Hedged | No FX rate found for from_currency-to_currency for date xx/xx/xxxx | Currency 1 to Currency 2 missing end exchange rate for given date. The process goes back three days from the end date to look for a SPOT_RATE. |
Hedged | No data found for [FOR_1MNTH_RATE] for specified sources | Missing data: 1-month forward exchange rate, as of the begin date. |
Floating | Cannot Calculate floating weights | The Floating Weight Calculator cannot find one of the total returns that it needs to properly calculate the floating weights. Error gives the detail of what data is missing. |
Total Level Only Workaround
This section of the document is intended for those who have a target dictionary that is total level only, without lower levels which are used for source entity assignment. This applies to the blended and floating custom benchmark types only.
Situation. There is one total level dictionary for returns data. The goal is to create a custom blended index which combines two benchmarks at the Total level.
Problem. The process is not designed to allow assignment for more than one source entity at a node level. The windows do not allow assignment at the total level for the blended or floating type custom index.
To work around this issue, do the following:
Create a dummy 1+ level dictionary to allow the index builder to work.
For example, a dictionary such as Total/Investment type. This allows the assignment at a node level below total since two assignments cannot be made at one node level. This dummy dictionary is the target dictionary for the index builder. Note the following:
The dummy dictionary needs to be created based on data in security master. For the example of Total/Investment type, data would have to exist in the security master for investment type in order to properly build this dictionary.
Another suggestion would be to build a dictionary like Total/Security Alias if there is a lack of security master characteristic data.
The dummy dictionary, to be the target dictionary, must have enough nodes in order to support the entity assignment structure. For example, if you are trying to build a custom index from 3 source benchmarks, then you need a dictionary with two levels and at least three nodes at the second level.
This example is defined in the following table.
Total |
Cash ïƒ Assign Benchmark 1 here |
Equity ïƒ Assign Benchmark 2 here |
Fixed Income ïƒ Assign Benchmark 3 here |
Make assignments at level 2 of the dictionary and execute the build. As a result, the custom index builder updates the PERFORM database with data for the custom index under the dummy dictionary.
Therefore to be pulled into a Performance Analysis report, a default dictionary needs to be used. Set up the dummy dictionary as the default dictionary for the Custom Index entity.
For more information, see Use Default Dictionaries for Reporting.Use the regular Total level dictionary for the performance report. In this way, you are able to show both the portfolio and the Custom Index on the same report.Â