{ "summary": "Read the context carefully.\nMaybe exists {} data in the context.\n", "summary_image": "Read the image carefully.\nMaybe exists {} data in the image.\n", "image_features": [ "1. Identify the text in the PDF page image.", "2. Identify and format the all of tables in the PDF page image.", "Table contents should be as markdown format,", "ensuring the table structure and contents are exactly as in the PDF page image.", "The format should be: |Column1|Column2|\n|---|---|\n|Row1Col1|Row1Col2|", "Each cell in the table(s) should be in the proper position of relevant row and column.", " 3. Extract data from upon parsed text and table(s) contents.", "3.1 The upon parsed text and table(s) contents as context.", "3.2 Please extract data from the context." ], "reported_name": { "tor": "The TOR reported name could be:\nTOR, Turnover Ratio, Portfolio Turnover, Portfolio turnover ratio, PTR, etc.", "ogc": "The OGC reported name could be:\nOGC, OGF, Ongoing Charge, Operation Charge, Ongoing charges in per cent, Ongoing charges in percent, Ongoing charges as a percentage, On Going Charges, Operating Charge, Ongoing Fund Charge, etc.", "ter": "The TER reported name could be:\nTER, Total Expense Ratio, Total expense ratio as a percentage, Total Fund Charge, Gross Expense Ratio, All in fee, Total Net Expense Ratio, Weighted Average Expense Ratio, Synthetic total Expense Ratio, Annualised TER including performance fees, Capped Expense Ratio, TER (en %) (with performance), etc.", "performance_fee": "The performance fees reported name could be:\nperformance fees, performance fees ratio, Performance, etc." }, "data_business_features": { "common": [ "General rules:", "- Most of cases, the data is in the table(s) of context.", "- Fund name: ", "a. The full fund name should be main fund name + sub-fund name, e,g, main fund name is Black Rock European, sub-fund name is Growth, the full fund name is: Black Rock European Growth.", "b. The sub-fund name may be as the first column or first row values in the table.", "b.1 fund name example:", "- context:", "Summary information\nCapital International Fund Audited Annual Report 2023 | 15\nFootnotes are on page 17.\nCapital Group Multi-Sector \nIncome Fund (LUX) \n(CGMSILU)\nCapital Group US High Yield \nFund (LUX) (CGUSHYLU)\nCapital Group Emerging \nMarkets Debt Fund (LUX) \n(CGEMDLU)", "fund names: Capital International Group Multi-Sector Income Fund (LUX), Capital International Group US High Yield Fund (LUX), Capital International Group Emerging Markets Debt Fund (LUX)", "- Only extract the latest data from context:", "If with multiple data values in same row, please extract the latest.", "- Reported names:", "Only output the values which with significant reported names.", "Please exclude below reported names and relevant values: \"Management Fees\", \"Management\", \"Management Fees p.a.\", \"Taxe d Abonnement in % p.a.\".\nDON'T EXTRACT MANAGEMENT FEES!", "One fund could be with multiple share classes and relevant share class level data values." ], "investment_level": { "tor": "TOR is fund level data.", "ogc": "OGC is share class level data", "ter": "TER is share class level data.", "performance_fee": "Performance fees is share class level data." }, "data_value_range": { "tor": "TOR is belong to percentage number, the value could be more than 100, e.g. 126.33.\nTOR could be negative number, e.g. -7.99", "ogc": "OGC is belong to percentage number, the value should be less than 100.", "ter": "TER is belong to percentage number, the value should be less than 100.", "performance_fee": "Performance fees is belong to percentage number, the value should be less than 100.\nPerformance fees could be negative number, e.g. -0.56" }, "special_rule": { "ter": [ "If there are multiple TER value columns, here is the priority rules:", "- With \"TER with Performance Fee\" and \"Fund TER\", pick up the values from \"TER with Performance Fee\".", "- With \"TER (en %) (with performance)\" and \"TER(en %) (without performance)\", pick up the values from \"TER (en %) (with performance)\".", "- With \"TER including Performance Fee\" and \"TER excluding Performance Fee\", pick up the values from \"TER including Performance Fee\".", "- With both of \"Synthetic TER\" and \"Fund TER\", if \"Synthetic TER\" with value(s), pick up the value(s) from \"Synthetic TER\", otherwise, pick up the value(s) from \"Fund TER\".", "- With both of \"Net TER (including reimbursement)\" and \"Capped Expense Ratio\", the priority is \"Capped Expense Ratio\", please exclude the column: \"Net TER (including reimbursement)\", only pick up the values from \"Capped Expense Ratio\".", "Please ignore TER values which with the exception of performance fees or excluded performance fees." ], "performance_fee": [ "The performance fees should not be the presence of the rates at which the performance fees are calculated." ] } }, "special_cases": { "common": [ { "title": "Latest data with time series data:", "contents": [ "Some data table is with multiple date columns, please extract the data from the latest date column:", "- Get dates from column header.", "- Only extract data from the columns which column header is as the latest date.", "The latest date-time column usually is the first datapoint value column.", "Here is the example:", "performance fees\\nhistorical performance fees\\nhistorical performance fees\\nFrom \\n1 July \\nFrom \\n19 July \\nFrom \\n1 January \\nFrom \\n27 April \\nFrom \\n19 July \\nFrom \\n1 January \\n2021\\nFrom \\n22 May \\n2021\\nFrom \\n16 July \\n2021\\nFrom \\n21 September \\n2021\\nto 30 June 2023\\nto 31 December 2022\\nto 31 December 2021\\nAsia Total Return Fund Class I5 (CHF Hedged) Acc\\n1.73%\\n \\n-1.32%\\n \\n \\n 2.04%\\n \\n \\n \\n", "The output should be:", "{\"data\": [{\"fund name\": \"Asia Total Return Fund\", \"share name\": \"Class I5 (CHF Hedged) Acc\", \"performance_fee\": 1.73}]}", "The keywords are performance fees, the value 1.73 is the first number with the latest date-time." ] } ], "ter": [ { "title": "Combo TER value table:", "contents": [ "Exist Feeder fund TER and Master fund TER.", "The relevant table header is like this:", "Feeder fund (share class)\\nMaster fund\\nTER\\nFeeder\\nTER Master\\nTotal", "Please output separately as below:", "- \"feeder fund share class\" and \"TER feeder\" values", "- \"Master fund\" and \"TER Master\" values", "Here is the example:", "Feeder fund (share class)\\nMaster fund\\nTER\\nFeeder\\nTER Master\\nTotal\\nGlobal Portfolio Solution DKK -\\nBalanced Class TI\\nDanske Invest SICAV Global Portfolio\\nSolution Balanced Class X\\n0.1475%\\n0.7025%\\n0.850%\\n", "The output should be:", "{\"data\": [{\"fund name\": \"Global Portfolio Solution DKK\", \"share name\": \"Balanced Class TI\", \"ter\": 0.1475}, {\"fund name\": \"Danske Invest SICAV Global Portfolio Solution DKK\", \"share name\": \"Balanced Class X\", \"ter\": 0.7025}]}" ] }, { "title": "TER reported name priority:", "contents": [ "If exists both of Expense Ratio and Synthetic total Expense Ratio, please extract the value of Synthetic total Expense Ratio." ] } ], "performance_fee": [ { "title": "Performance fees is part of TER:", "contents": [ "If exist both of \"TER including performance fees\" and \"TER excluding performance fees\",", "The TER should be \"TER including performance fees\".", "The performance fees should be:", "TER including performance fees - TER excluding performance fees.", "Here is the example:", "GAMAX FUNDS FCP\\nClass\\nTER (excluding Performance Fees)\\nTER (including Performance Fees)\\nGAMAX FUNDS - ASIA PACIFIC\\nA\\n2.07%\\n2.07%\\n", "The output should be:", "{\"data\": [{\"fund name\": \"GAMAX FUNDS - ASIA PACIFIC\", \"share name\": \"A\", \"ter\": 2.07, \"performance_fee\": 0}]}", "The performance fees value is TER (including Performance Fees) - TER (excluding Performance Fees) = 2.07 - 2.07 = 0" ] } ] }, "output_requirement": { "common": [ "If possible, please extract fund name, share name, TOR, TER, performance fees, OGC values as the output.", "If find share name, and exist relevant currency, please output share name + currency, e.g. share name is \"Class A\", currency is \"USD\", the output share name should be: \"Class A USD\".", "If find fund name, and exist sub fund name, please output fund name + sub fund name, e.g. fund name is \"Black Rock European\", sub fund name is \"Growth\", the output fund name should be: \"Black Rock European Growth\".", "Only output the data point which with relevant value.", "Don't ignore the data point which with negative value, e.g. -0.12, -1.13", "Don't ignore the data point which with explicit zero value, e.g. 0, 0.00", "Don't extract data which values are -, *, **, N/A, N/A%, N/A %, NONE, it means the value should be NULL, please skip them.", "Example:", "Context:", "Sub-Funds\nClass of shares\nCurrency\nTER\nPerformance\nfees\nSwiss Life Funds (LUX) Bond Emerging Markets Corporates\nAM - Shares CHF hedged - Capitalisation\nCHF\n0.23%\n-\nAM - Shares EUR hedged - Capitalisation\nEUR\n0.23%\n0.00%\n", "Output:", "{\"data\": [{\"fund name\": \"Swiss Life Funds (LUX) Bond Emerging Markets Corporates\", \"share name\": \"AM - Shares CHF hedged - Capitalisation\", \"ter\": 0.23}, {\"fund name\": \"Swiss Life Funds (LUX) Bond Emerging Markets Corporates\", \"share name\": \"AM - Shares EUR hedged - Capitalisation\", \"ter\": 0.23, \"performance_fee\": 0}]}", "Fund level data: (\"fund name\" and \"TOR\") and share level data: (\"fund name\", \"share name\", \"ter\", \"performance fees\", \"ogc\") should be output separately.", "The output should be JSON format, the format is like below example(s):" ], "fund_level": [ "[{\"fund name\": \"fund 1 - sub fund name 1\",\"tor\": 35.26}, {\"fund name\": \"fund 2 - sub fund name 2\",\"tor\": -28.26}, {\"fund name\": \"fund 3\",\"tor\": 115.52,}]" ], "share_level": { "fund_name": [ "fund 1", "fund 2", "fund 3" ], "share_name": [ "share 1", "share 2", "share 3" ], "ogc_value": [ 0.05, 1.08, 0.17 ], "ter_value": [ 1.23, 2.56, 1.16 ], "performance_fee_value": [ 0, -0.15, 0.11 ] } }, "end": [ "Only output JSON data.", "Don't output the value which not exist in context, especially for fund level datapoint: TOR.", "If can't find share class name in context, please output empty JSON data: {\"data\": []}" ] }