FinDatEx EPT Validation Reference (V2.1)
Spec: /spec/ept/EPT_V2_1_20221012.xlsx
Manifest: /spec/ept/ept-v21-info.json
Released: 2022-10-12 · Sheet: EPT 2.1
Profiles: PRIIPs Sync (PRIIPS_SYNC), PRIIPs KID (PRIIPS_KID), UK (UK)
Generated file — do not edit by hand. Regenerate via
mvn -pl core -Pdocs exec:java -Dexec.args="docs/rules".
1. How this validator scores your file
The overall quality score is a weighted blend of five sub-scores. Only Severity.ERROR findings lower the score; WARNING and INFO are reported but ignored by the scorer.
| Dimension | Weight | Computation |
|---|---|---|
| MANDATORY_COMPLETENESS | 40 % | 1 − (missing M-cells / total M-cells) across active profiles |
| FORMAT_CONFORMANCE | 20 % | 1 − (format errors / non-empty cells) |
| CLOSED_LIST_CONFORMANCE | 15 % | 1 − (closed-list errors / non-empty closed-list cells) |
| CROSS_FIELD_CONSISTENCY | 15 % | 1 − (XF errors / max(distinct XF rules × rows, 1)) |
| PROFILE_COMPLETENESS | 10 % | mean over profiles of (0.7 × M-completeness + 0.3 × C-completeness) |
Findings are routed to dimensions by their rule-id prefix:
| Rule prefix | Dimension |
|---|---|
PRESENCE/ |
MANDATORY_COMPLETENESS + PROFILE (M leg) |
COND_PRESENCE/ |
PROFILE_COMPLETENESS (C leg) |
FORMAT/ (closed-list message) |
CLOSED_LIST_CONFORMANCE |
FORMAT/ (other) |
FORMAT_CONFORMANCE |
ISIN/, LEI/ |
FORMAT_CONFORMANCE |
XF-…, template *-XF-* |
CROSS_FIELD_CONSISTENCY |
*-ONLINE (GLEIF / OpenFIGI) |
not scored (advisory) |
2. Profiles
Selecting a profile in the UI tells the validator to enforce the M (mandatory) and C (conditional) flags from that profile's column in the spec. Multiple profiles can be selected simultaneously — a field is mandatory if any selected profile says so.
| Code | Display name | Mandatory fields | Conditional fields |
|---|---|---|---|
PRIIPS_SYNC |
PRIIPs Sync | 0 | 0 |
PRIIPS_KID |
PRIIPs KID | 66 | 44 |
UK |
UK | 0 | 0 |
3. General rules
The engines below run on every applicable field/row independently of the template-specific cross-field block in §4.
Version rule
- Rule ID:
EPT-XF-VERSION - Severity: ERROR (INFO if the version cell is absent)
- Expected token:
V21 - Trigger: the version cell of the file does not contain the expected token.
- Score impact: Each ERROR lowers CROSS_FIELD_CONSISTENCY (15 %) by 1 / max(distinct cross-field rules × rows, 1).
Presence engine (PRESENCE/{numKey}/{profile})
- What it checks: for every
FieldSpecflagged M for an active profile and applicable to the row's CIC, the cell value must be non-empty. - Severity: ERROR.
- Score impact: Each missing cell lowers MANDATORY_COMPLETENESS (40 %) by 1 / total mandatory slots, and lowers the per-profile PROFILE_COMPLETENESS leg (10 %, M-weighted 0.7).
- Active rule instances: 66 (one per field × profile).
Conditional-presence engine (COND_PRESENCE/{numKey}/{profile})
- What it checks: for every
FieldSpecflagged C for an active profile and whose CIC applicability matches the row's CIC, the cell value must be non-empty. - Severity: WARNING.
- Score impact: Each missing cell lowers PROFILE_COMPLETENESS (10 %, C-weighted 0.3) by 1 / total conditional slots. Severity = WARNING — does not affect MANDATORY_COMPLETENESS or FORMAT_CONFORMANCE.
- Active rule instances: 44 (one per CIC-restricted field × profile).
Format engine (FORMAT/{numKey})
- What it checks: every populated cell is validated against its codification kind: ISO 4217 currency, ISO 3166-A2 country, ISO 8601 date, NACE, CIC 4-char, alphanumeric length, numeric, closed-list membership.
- Severity: ERROR.
- Score impact: Each ERROR lowers FORMAT_CONFORMANCE (20 %) by 1 / non-empty cells. Closed-list mismatches (message contains "closed list") instead lower CLOSED_LIST_CONFORMANCE (15 %) by 1 / populated closed-list cells.
- Active rule instances: 144 (one per field).
External validation (opt-in)
- Off by default. Operators enable it via the Settings dialog (desktop) or the
FINDATEX_WEB_EXTERNAL_ENABLEDenv var (web). - ISIN lookup (OpenFIGI): field
14(when type field15=1) - LEI lookup (GLEIF): field
14(when type field15=9); field11(single-purpose, no type flag) - Score impact: External-validation findings are advisory and do not affect any score dimension.
4. Cross-field rules
No cross-field rules are wired for this template/version. Regulatory cross-field logic for EPT is deferred — see docs/SME_QUESTIONS/ept-cross-field-rules.md for the open SME briefs.
Field reference
One page per field, with its flag in every profile, the codification it must match and every rule that can fire on it.
- Field 100001_EPT_Version
- Field 200002_EPT_Producer_Name
- Field 300004_EPT_Producer_Email
- Field 400005_File_Generation_Date_And_Time
- Field 500006_EPT_Data_Reporting_Narratives
- Field 600007_EPT_Data_Reporting_Costs
- Field 700008_EPT_Data_Reporting_Additional_Requirements_German_MOPs
- Field 800009_EPT_Additional_Information_Structured_Products
- Field 900010_Portfolio_Manufacturer_Name
- Field 1000015_Portfolio_Manufacturer_Group_Name
- Field 1100016_Portfolio_Manufacturer_LEI
- Field 1200017_Portfolio_Manufacturer_Email
- Field 1300020_Portfolio_Guarantor_Name
- Field 1400030_Portfolio_Identifying_Data
- Field 1500040_Type_Of_Identification_Code_For_The_Fund_Share_Or_Portfolio
- Field 1600050_Portfolio_Name
- Field 1700060_Portfolio_Or_Share_Class_Currency
- Field 1800070_PRIIPs_KID_Publication_Date
- Field 18a00075_PRIIPs_KID_Web_Address
- Field 1900080_Portfolio_PRIIPs_Category
- Field 2000090_Fund_CIC_Code
- Field 2100110_Is_An_Autocallable_Product
- Field 2200120_Reference_Language
- Field 2301010_Valuation_Frequency
- Field 2401020_Portfolio_VEV_Reference
- Field 2501030_IS_Flexible
- Field 2601040_Flex_VEV_Historical
- Field 2701050_Flex_VEV_Ref_Asset_Allocation
- Field 2801060_IS_Risk_Limit_Relevant
- Field 2901070_Flex_VEV_Risk_Limit
- Field 3001080_Existing_Credit_Risk
- Field 3101090_SRI
- Field 3201095_IS_SRI_Adjusted
- Field 3301100_MRM
- Field 3401110_CRM
- Field 3501120_Recommended_Holding_Period
- Field 3601125_Has_A_Contractual_Maturity_Date
- Field 3701130_Maturity_Date
- Field 3801140_Liquidity_Risk
- Field 3902010_Portfolio_Return_Unfavourable_Scenario_1_Year
- Field 4002020_Portfolio_Return_Unfavourable_Scenario_Half_RHP
- Field 4102030_Portfolio_Return_Unfavourable_Scenario_RHP_Or_First_Call_Date
- Field 4202032_Autocall_Applied_Unfavourable_Scenario
- Field 4302035_Autocall_Date_Unfavourable_Scenario
- Field 4402040_Portfolio_Return_Moderate_Scenario_1_Year
- Field 4502050_Portfolio_Return_Moderate_Scenario_Half_RHP
- Field 4602060_Portfolio_Return_Moderate_Scenario_RHP_Or_First_Call_Date
- Field 4702062_Autocall_Applied_Moderate_Scenario
- Field 4802065_Autocall_Date_Moderate_Scenario
- Field 4902070_Portfolio_Return_Favourable_Scenario_1_Year
- Field 5002080_Portfolio_Return_Favourable_Scenario_Half_RHP
- Field 5102090_Portfolio_Return_Favourable_Scenario_RHP_Or_First_Call_Date
- Field 5202092_Autocall_Applied_Favourable_Scenario
- Field 5302095_Autocall_Date_Favourable_Scenario
- Field 5402100_Portfolio_Return_Stress_Scenario_1_Year
- Field 5502110_Portfolio_Return_Stress_Scenario_Half_RHP
- Field 5602120_Portfolio_Return_Stress_Scenario_RHP_Or_First_Call_Date
- Field 5702122_Autocall_Applied_Stress_Scenario
- Field 5802125_Autocall_Date_Stress_Scenario
- Field 5902130_Portfolio_Number_Of_Observed_Return_M0
- Field 6002140_Portfolio_Mean_Observed_Returns_M1
- Field 6102150_Portfolio_Observed_Sigma
- Field 6202160_Portfolio_Observed_Skewness
- Field 6302170_Portfolio_Observed_Excess_Kurtosis
- Field 6402180_Portfolio_Observed_Stressed_Volatility
- Field 6502185_Portfolio_Past_Performance_Disclosure_Required
- Field 6602190_Past_Performance_Link
- Field 6702200_Previous_Performance_Scenarios_Calculation_Link
- Field 6802210_Past_Performance_Number_Of_Years
- Field 6902220_Reference_Invested_Amount
- Field 7003010_One_Off_Cost_Portfolio_Entry_Cost
- Field 7103015_One_Off_Cost_Portfolio_Entry_Cost_Acquired
- Field 7203020_One_Off_Costs_Portfolio_Exit_Cost_At_RHP
- Field 7303030_One_Off_Costs_Portfolio_Exit_Cost_At_1_Year
- Field 73a03040_One_Off_Costs_Portfolio_Exit_Cost_At_Half_RHP
- Field 7403050_One_Off_Costs_Portfolio_Sliding_Exit_Cost_Indicator
- Field 7503060_Ongoing_Costs_Management_Fees_And_Other_Administrative_Or_Operating_Costs
- Field 7603080_Ongoing_Costs_Portfolio_Transaction_Costs
- Field 7703090_Existing_Incidental_Costs_Portfolio
- Field 7803095_Incidental_Costs
- Field 7904020_Comprehension_Alert_Portfolio
- Field 8004030_Intended_Target_Market_Retail_Investor_Portfolio
- Field 8104040_Investment_Objective_Portfolio
- Field 8204050_Risk_Narrative_Portfolio
- Field 8304060_Other_Materially_Relevant_Risk_Narrative_Portfolio
- Field 8404070_Type_Of_Underlying_Investment_Option
- Field 8504080_Capital_Guarantee
- Field 8604081_Capital_Guarantee_Level
- Field 8704082_Capital_Guarantee_Limitations
- Field 8804083_Capital_Guarantee_Early_Exit_Conditions
- Field 8904084_Capital_Guarantee_Portfolio
- Field 9004085_Possible_Maximum_Loss_Portfolio
- Field 9104086_Description_Past_Interval_Unfavourable_Scenario
- Field 9204087_Description_Past_Interval_Moderate_Scenario
- Field 9304088_Description_Past_Interval_Favourable_Scenario
- Field 9404089_Was_Benchmark_Used_Performance_Calculation
- Field 9504090_Portfolio_Performance_Fees_Carried_Interest_Narrative
- Field 9604120_One_Off_Cost_Portfolio_Entry_Cost_Description
- Field 9704130_One_Off_Cost_Portfolio_Exit_Cost_Description
- Field 9804140_Ongoing_Costs_Portfolio_Management_Costs_Description
- Field 9904150_Do_Costs_Depend_On_Invested_Amount
- Field 10004160_Cost_Dependence_Explanation
- Field 10106005_German_MOPs_Reference_Date
- Field 10206010_Bonds_Weight
- Field 10306020_Annualized_Return_Volatility
- Field 10406030_Duration_Bonds
- Field 10506040_Existing_Capital_Preservation
- Field 10606050_Capital_Preservation_Level
- Field 10706060_Time_Interval_Maximum_Loss
- Field 10806070_Uses_PI
- Field 10906080_Multiplier_PI
- Field 11007005_First_Possible_Call_Date
- Field 11107010_Total_Cost_1_Year_Or_First_Call
- Field 11207020_RIY_1_Year_Or_First_Call
- Field 11307030_Total_Cost_Half_RHP
- Field 11407040_RIY_Half_RHP
- Field 11507050_Total_Cost_RHP
- Field 11607060_RIY_RHP
- Field 11707070_One_Off_Costs_Portfolio_Entry_Cost
- Field 11807080_One_Off_Costs_Portfolio_Exit_Cost
- Field 11907090_Ongoing_Costs_Portfolio_Transaction_Costs
- Field 12007100_Ongoing_Costs_Management_Fees_And_Other_Administrative_Or_Operating_Costs
- Field 12107110_Incidental_Costs_Portfolio_Performance_Fees_Carried_Interest
- Field 12208010_UK_PRIIP_Or_UCITS_Or_Both_data_delivery
- Field 12308020_UK_Ongoing_Costs_Portfolio_Transaction_Costs
- Field 12408030_UK_Transactions_costs_methodology
- Field 12508040_UK_Anti_Dilution_Benefit_Derived
- Field 125a08045_UK_PRIIPs_Data_Reference_Date
- Field 12608050_UK_PRIIPs_KID_Publication_Date
- Field 12708060_UK_PRIIPs_KID_Web_Address
- Field 12808070_Investment_Objective_Portfolio
- Field 12908080_UK_Other_Materially_Relevant_Risk_Narrative_Portfolio
- Field 13008090_UK_Performance_Information_Main_Factors
- Field 13108100_UK_Performance_Information_Comparator
- Field 13208110_UK_Performance_Information_Higher_Returns
- Field 13308120_UK_Performance_Information_Lower_Returns_Or_Loss
- Field 13408130_UK_Performance_Information_Adverse_Conditions
- Field 13508140_UK_Assumed_Portfolio_Return
- Field 13608150_UCITS_KIID_Publication_Date
- Field 13708160_UCITS_KIID_Web_Address
- Field 13808170_UCITS_SRRI
- Field 13908180_UCITS_Ongoing_Charges
- Field 14008190_UCITS_Existing_Performance_Fees
- Field 14108200_UCITS_Performance_Fees
Upload a TPT, EET, EMT or EPT file and get a quality score, every finding grouped by rule, and an Excel report. No login; the file is never stored.
Open the validator