Report Extract

2026-10-08 02:29 UTC

About this benchmark

Extracts the header facts of a real equity research report (publisher, date, report type, subject, ticker, recommendation, currency, share and target price, previous target, shares issued, market cap), plus three lists: the credited analysts, the major shareholders, and any peer or sector comparison table.

These are dense multi-column PDFs with tables, disclaimers and footers, and the facts are scattered across pages rather than sitting on page one. The hard part is not reading but discipline: not attributing a peer company’s rating or target price to the subject, crediting only the report’s own authors, and leaving fields null when the document simply does not state them. Fields are weighted, with target price counting heaviest.

Cases

  • dialog-uobkh: UOB Kay Hian company report on Dialog (DLG MK), 4 pages, BUY with a MYR 2.70 target against a MYR 2.29 share price. No previous target stated.input withheld
  • greatec-maybank: Maybank company report on Greatech, 10 pages, the longest document in the suite. BUY, with the target raised from MYR 2.40 to MYR 3.66, so both the new and the superseded target must be picked up.input withheld
  • plantation-mbsb: MBSB sector report on Plantation, 5 pages, POSITIVE. The null-discipline case: a sector report has no ticker, no share price and no target price, but its comparison table is full of per-company ratings and targets waiting to be mistaken for the subject’s.input withheld

Results

15/15 targets scored · 9 trials each · $3.36 total · show

Cost vs latencymost attractive quadrant
Latency & costsort by
TargetScore ↓StddevLatencyTok/sCostErrors
bestClaudeclaude-haiku-5.5@anthropic100.00.06.3s144.4best$0.02340/9
OpenAIgpt-6-luna@openai100.00.06.4s72.5$0.02640/9
Geminigemini-3.7-flash100.00.012.3s82.0$0.06270/9
OpenAIgpt-6-sol@openai100.00.0best5.3s45.3$0.50790/9
OpenAIgpt-5.6-terra@openai100.00.05.4s41.8$0.51070/9
OpenAIgpt-6.1-sol@openai100.00.06.6s43.4$0.51210/9
⚠Geminigemini-3.5-flash@google-ai-studio1 field missdialog-uobkh: publisher (1/3)99.32.08.4s185.3$0.17340/9
⚠Grokgrok-4.5@xai2 field missesdialog-uobkh: major_shareholders.0.name (2/3)99.31.313s58.5$0.26410/9
⚠Grokgrok-4.6@xai2 field missesdialog-uobkh: major_shareholders.0.name (2/3)99.31.323.1s80.6$0.50270/9
⚠Qwenqwen3.7-plus@alibaba2 field missesdialog-uobkh: publisher (2/3)98.62.736.2s43.8$0.15980/9
⚠Geminigemini-3.5-flash-lite@google-ai-studio6 field missesdialog-uobkh: currency (3/3)plantation-mbsb: currency (3/3)97.91.52.3s147.8$0.01700/9
⚠Qwenqwen3.7-flash6 field missesdialog-uobkh: currency (3/3)plantation-mbsb: currency (3/3)97.91.519.8s32.8$0.11730/9
⚠OpenAIgpt-5.6-luna@openai9 field missesplantation-mbsb: peer_ratings (1/3)plantation-mbsb: peer_ratings.0.name (1/3)plantation-mbsb: peer_ratings.0.recommendation (1/3)plantation-mbsb: peer_ratings.0.target_price (1/3)plantation-mbsb: peer_ratings.3.name (1/3)plantation-mbsb: peer_ratings.3.target_price (1/3)plantation-mbsb: peer_ratings.6.name (1/3)plantation-mbsb: peer_ratings.6.recommendation (1/3)plantation-mbsb: peer_ratings.6.target_price (1/3)96.410.27s47.1$0.05220/9
⚠Claudeclaude-haiku-4.5@anthropic44 field missesplantation-mbsb: currency (1/3)plantation-mbsb: peer_ratings (3/3)plantation-mbsb: peer_ratings.0.name (3/3)plantation-mbsb: peer_ratings.0.recommendation (3/3)plantation-mbsb: peer_ratings.0.target_price (3/3)plantation-mbsb: peer_ratings.3.name (3/3)plantation-mbsb: peer_ratings.3.target_price (3/3)plantation-mbsb: peer_ratings.6.name (3/3)plantation-mbsb: peer_ratings.6.recommendation (3/3)plantation-mbsb: peer_ratings.6.target_price (3/3)plantation-mbsb: recommendation (3/3)plantation-mbsb: report_type (3/3)plantation-mbsb: share_price (3/3)plantation-mbsb: subject (3/3)plantation-mbsb: target_price (3/3)plantation-mbsb: ticker (1/3)77.831.45.8s41.2$0.18130/9
⚠DeepSeekdeepseek-v4.1-flash62 field missesdialog-uobkh: currency (3/3)dialog-uobkh: major_shareholders.0.name (1/3)dialog-uobkh: major_shareholders.0.stake_pct (1/3)dialog-uobkh: major_shareholders.2.name (1/3)dialog-uobkh: major_shareholders.2.stake_pct (1/3)dialog-uobkh: publisher (3/3)dialog-uobkh: report_date (1/3)dialog-uobkh: subject (1/3)greatec-maybank: analysts (1/3)greatec-maybank: analysts.0.email (1/3)greatec-maybank: analysts.0.name (1/3)greatec-maybank: major_shareholders (1/3)greatec-maybank: major_shareholders.0.name (1/3)greatec-maybank: major_shareholders.0.stake_pct (1/3)greatec-maybank: major_shareholders.2.name (1/3)greatec-maybank: major_shareholders.2.stake_pct (1/3)greatec-maybank: market_cap_m (2/3)greatec-maybank: previous_target_price (1/3)greatec-maybank: report_date (2/3)greatec-maybank: shares_issued_m (1/3)plantation-mbsb: analysts (1/3)plantation-mbsb: currency (1/3)plantation-mbsb: peer_ratings (3/3)plantation-mbsb: peer_ratings.0.name (3/3)plantation-mbsb: peer_ratings.0.recommendation (3/3)plantation-mbsb: peer_ratings.0.target_price (3/3)plantation-mbsb: peer_ratings.3.name (3/3)plantation-mbsb: peer_ratings.3.target_price (3/3)plantation-mbsb: peer_ratings.6.name (3/3)plantation-mbsb: peer_ratings.6.recommendation (3/3)plantation-mbsb: peer_ratings.6.target_price (3/3)plantation-mbsb: recommendation (2/3)plantation-mbsb: report_date (1/3)plantation-mbsb: share_price (1/3)plantation-mbsb: subject (1/3)plantation-mbsb: target_price (2/3)70.821.230.5s331.9$0.24600/9

Score by case

Every cell is that target's mean over the case's trials.

Targetdialog-uobkhgreatec-maybankplantation-mbsb
Claudeclaude-haiku-5.5@anthropic100100100
Geminigemini-3.7-flash100100100
OpenAIgpt-5.6-terra@openai100100100
OpenAIgpt-6-luna@openai100100100
OpenAIgpt-6-sol@openai100100100
OpenAIgpt-6.1-sol@openai100100100
Geminigemini-3.5-flash@google-ai-studio98100100
Grokgrok-4.5@xai98100100
Grokgrok-4.6@xai98100100
Qwenqwen3.7-plus@alibaba96100100
Geminigemini-3.5-flash-lite@google-ai-studio9710097
Qwenqwen3.7-flash9710097
OpenAIgpt-5.6-luna@openai10010089
Claudeclaude-haiku-4.5@anthropic10010033
DeepSeekdeepseek-v4.1-flash838050

Note

  • anthropic/claude-haiku-4.5 misses on plantation-mbsb alone, the same way on all three trials. It returned a company report on one stock, filling that stock's share price and target price, and left it out of the peer table, which came back with 6 rows where 7 were expected. Peer rows are checked by index, so the one dropped row shifts every row after it. openai/gpt-5.6-luna gave the same answer on plantation-mbsb trial 3, its only miss.
  • google/gemini-3.5-flash-lite and qwen/qwen3.7-flash miss only currency, on every trial of dialog-uobkh and plantation-mbsb. Both returned RM where MYR was required. The currency is right; the code is not.
  • x-ai/grok-4.5 and x-ai/grok-4.6 each read the first shareholder as EPE where EPF was printed, on two of three dialog-uobkh trials.
  • qwen/qwen3.7-plus (two trials) and google/gemini-3.5-flash (one trial) wrote the dialog-uobkh publisher with its spacing changed (UOBKayHian, UOB KayHian). This is their only miss.
  • deepseek/deepseek-v4.1-flash misses on all nine trials, and no two trials miss the same way. It returned report_date as written in the document (Thursday, 07 May 2026, 26 May 2026) where ISO dates were required on four trials. It returned an empty peer table on two plantation-mbsb trials and empty major_shareholders and analysts arrays on greatec-maybank trial 2. On plantation-mbsb trial 3 it filled in a one-stock report, like haiku-4.5. Every trial parsed; what is missing is content.

Conclusion

Six targets swept all nine trials. anthropic/claude-haiku-5.5 is the pick: the cheapest clean sweep at $0.0234 for the run, and the fastest one at 6,269ms. openai/gpt-6-luna is the close second at $0.0264 and 6,429ms. The sol models and gpt-5.6-terra score the same at about $0.51, which is 22 times the cost for nothing this run can detect. If latency comes first, gemini-3.5-flash-lite answers in 2,295ms for $0.0170, and its only miss is the currency code.

The currency, publisher spacing and date-format misses are fixable: one field is wrong, the same way, on every affected trial, and the value read is correct. haiku-4.5's case miss is consistent but not a format problem; its 77.8 mean hides a case it gets wrong every time, not noise. deepseek-v4.1-flash is the unreliable one. Its trials range from 0.35 to 0.90 with different fields missing each time, and some arrays came back empty. A one-line prompt fix cannot repair this.