LLM Rubric Eval: sample run
48 answers · 4 models · 12 questions. Correctness comes only from verifiable checks; fluency and confidence are reported separately and never score points.
Leaderboard
| Rank | Model | Correctness | Fluency | Confidence | Naive score* | Confidently wrong |
|---|---|---|---|---|---|---|
| #1 | sample-a (accurate) | 1.00 | 0.71 | 0.37 | 0.80 | 0 |
| #2 | sample-c (hedged) (naive #3) | 0.95 | 0.34 | 0.23 | 0.55 | 0 |
| #3 | sample-d (mixed) (naive #4) | 0.60 | 0.50 | 0.35 | 0.53 | 0 |
| #4 | sample-b (confident) (naive #2) | 0.14 | 0.96 | 0.96 | 0.69 | 11 |
*Naive score = ⅓ correctness + ⅔ fluency: a typical "accuracy / depth / reasoning" rubric, where two of the three criteria are judged from how the answer reads.
Every answer: style vs substance
Answers and evidence
q01_garch: What does a GARCH(1,1) model capture about financial returns?
sample-a (accurate) · correctness 1.00 · fluency 0.83 · confidence 0.45
- ✓ conditional_variance: matched 'conditional variance'
- ✓ clustering: matched 'volatility clustering'
- ✓ lagged_shock: matched 'squared shock'
- ✓ no_return_forecasting: no known-wrong claims
sample-b (confident) · correctness 0.00 · fluency 1.00 · confidence 1.00 confidently wrongknown wrong claim
- ✗ conditional_variance: none of ['conditional variance', 'conditional volatility', 'time-varying volatility', 'time-varying variance']
- ✗ clustering: none of ['volatility clustering', 'clustering', 'clusters']
- ✗ lagged_shock: none of ['squared shock', 'past squared', 'lagged squared', 'previous shock', "last period's shock", "yesterday's shock"]
- ✗ no_return_forecasting: contains wrong claim 'predicts the direction'
sample-c (hedged) · correctness 0.75 · fluency 0.34 · confidence 0.45
- ✓ conditional_variance: matched 'conditional variance'
- ✓ clustering: matched 'volatility clustering'
- ✗ lagged_shock: none of ['squared shock', 'past squared', 'lagged squared', 'previous shock', "last period's shock", "yesterday's shock"]
- ✓ no_return_forecasting: no known-wrong claims
sample-d (mixed) · correctness 0.25 · fluency 0.66 · confidence 0.45 known wrong claim
- ✓ conditional_variance: matched 'conditional volatility'
- ✗ clustering: none of ['volatility clustering', 'clustering', 'clusters']
- ✗ lagged_shock: none of ['squared shock', 'past squared', 'lagged squared', 'previous shock', "last period's shock", "yesterday's shock"]
- ✗ no_return_forecasting: contains wrong claim 'forecast returns'
q02_var: A portfolio's 1-day 99% Value at Risk is $1 million. What does that mean?
sample-a (accurate) · correctness 1.00 · fluency 0.79 · confidence 0.30 hedged but right
- ✓ tail_probability: matched '1%'
- ✓ exceedance: matched 'exceed'
- ✓ about_losses: pattern matched
- ✓ not_a_max: no known-wrong claims
sample-b (confident) · correctness 0.17 · fluency 1.00 · confidence 1.00 confidently wrongknown wrong claim
- ✓ tail_probability: matched '99%'
- ✗ exceedance: none of ['exceed', 'more than', 'larger than', 'greater than', 'at least']
- ✓ about_losses: pattern matched
- ✗ not_a_max: contains wrong claim 'maximum loss'
sample-c (hedged) · correctness 1.00 · fluency 0.49 · confidence 0.05 hedged but right
- ✓ tail_probability: matched '1%'
- ✓ exceedance: matched 'greater than'
- ✓ about_losses: pattern matched
- ✓ not_a_max: no known-wrong claims
sample-d (mixed) · correctness 1.00 · fluency 0.62 · confidence 0.45
- ✓ tail_probability: matched '99%'
- ✓ exceedance: matched 'larger than'
- ✓ about_losses: pattern matched
- ✓ not_a_max: no known-wrong claims
q03_beta: A stock has a beta of 1.2. If the market rises 10%, what move does beta imply for the stock?
sample-a (accurate) · correctness 1.00 · fluency 0.60 · confidence 0.18 hedged but right
- ✓ twelve_percent: found 12.0 (target 12.0 ± 0.01)
sample-b (confident) · correctness 0.00 · fluency 1.00 · confidence 1.00 confidently wrong
- ✗ twelve_percent: no number within 0.01 of 12.0; saw [10.0, 1.2, 10.0, 10.0]
sample-c (hedged) · correctness 1.00 · fluency 0.12 · confidence 0.00 hedged but right
- ✓ twelve_percent: found 12.0 (target 12.0 ± 0.01)
sample-d (mixed) · correctness 1.00 · fluency 0.25 · confidence 0.00 hedged but right
- ✓ twelve_percent: found 12.0 (target 12.0 ± 0.01)
q04_compound: $1,000 is invested at 5% compounded annually for 3 years. What is it worth at the end?
sample-a (accurate) · correctness 1.00 · fluency 0.49 · confidence 0.05 hedged but right
- ✓ future_value: found 1157.63 (target 1157.63 ± 0.5)
- ✓ not_simple_interest: no known-wrong claims
sample-b (confident) · correctness 0.00 · fluency 0.95 · confidence 1.00 confidently wrongknown wrong claim
- ✗ future_value: no number within 0.5 of 1157.63; saw [1150.0, 5.0, 1000.0, 50.0, 1150.0]
- ✗ not_simple_interest: contains wrong claim '1,150'
sample-c (hedged) · correctness 1.00 · fluency 0.14 · confidence 0.00 hedged but right
- ✓ future_value: found 1157.63 (target 1157.63 ± 0.5)
- ✓ not_simple_interest: no known-wrong claims
sample-d (mixed) · correctness 1.00 · fluency 0.12 · confidence 0.00 hedged but right
- ✓ future_value: found 1158.0 (target 1157.63 ± 0.5)
- ✓ not_simple_interest: no known-wrong claims
q05_duration: What is the Macaulay duration of a zero-coupon bond maturing in five years?
sample-a (accurate) · correctness 1.00 · fluency 0.62 · confidence 0.45
- ✓ equals_maturity: found 5.0 (target 5.0 ± 0.01)
- ✓ not_shorter: no known-wrong claims
sample-b (confident) · correctness 0.00 · fluency 0.91 · confidence 1.00 confidently wrongknown wrong claim
- ✗ equals_maturity: no number within 0.01 of 5.0; saw [4.3]
- ✗ not_shorter: contains wrong claim 'shorter than its maturity'
sample-c (hedged) · correctness 1.00 · fluency 0.12 · confidence 0.00 hedged but right
- ✓ equals_maturity: found 5.0 (target 5.0 ± 0.01)
- ✓ not_shorter: no known-wrong claims
sample-d (mixed) · correctness 1.00 · fluency 0.59 · confidence 0.45
- ✓ equals_maturity: found 5.0 (target 5.0 ± 0.01)
- ✓ not_shorter: no known-wrong claims
q06_parity: State put-call parity for European options on a non-dividend-paying stock.
sample-a (accurate) · correctness 1.00 · fluency 0.66 · confidence 0.45
- ✓ relation: matched 'c - p = s - k'
- ✓ conditions: matched 'european'
- ✓ not_american: no known-wrong claims
sample-b (confident) · correctness 0.00 · fluency 0.94 · confidence 1.00 confidently wrongknown wrong claim
- ✗ relation: none of ['c - p = s - k', 'c + k', 'p + s', 'present value of the strike', 'pv(k)', 'k e^(-rt)', 'k*e^(-rt)', 'k·e^(-rt)']
- ✗ conditions: none of ['european', 'same strike', 'same expiry', 'same expiration', 'same maturity']
- ✗ not_american: contains wrong claim 'american options as well'
sample-c (hedged) · correctness 1.00 · fluency 0.43 · confidence 0.00 hedged but right
- ✓ relation: matched 'c - p = s - k'
- ✓ conditions: matched 'european'
- ✓ not_american: no known-wrong claims
sample-d (mixed) · correctness 0.67 · fluency 0.62 · confidence 0.45
- ✓ relation: matched 'present value of the strike'
- ✗ conditions: none of ['european', 'same strike', 'same expiry', 'same expiration', 'same maturity']
- ✓ not_american: no known-wrong claims
q07_sharpe: What does the Sharpe ratio measure?
sample-a (accurate) · correctness 1.00 · fluency 0.68 · confidence 0.45
- ✓ excess_return: matched 'excess return'
- ✓ total_risk: matched 'standard deviation'
- ✓ not_beta: no known-wrong claims
sample-b (confident) · correctness 0.00 · fluency 0.95 · confidence 1.00 confidently wrongknown wrong claim
- ✗ excess_return: none of ['excess return', 'return above the risk-free', 'return over the risk-free', 'minus the risk-free', 'risk-free rate']
- ✗ total_risk: none of ['standard deviation', 'volatility', 'total risk']
- ✗ not_beta: contains wrong claim 'per unit of beta'
sample-c (hedged) · correctness 1.00 · fluency 0.28 · confidence 0.45
- ✓ excess_return: matched 'excess return'
- ✓ total_risk: matched 'volatility'
- ✓ not_beta: no known-wrong claims
sample-d (mixed) · correctness 0.00 · fluency 0.27 · confidence 0.45
- ✗ excess_return: none of ['excess return', 'return above the risk-free', 'return over the risk-free', 'minus the risk-free', 'risk-free rate']
- ✗ total_risk: none of ['standard deviation', 'volatility', 'total risk']
- ✓ not_beta: no known-wrong claims
q08_precision: Define precision and recall for a binary classifier.
sample-a (accurate) · correctness 1.00 · fluency 0.72 · confidence 0.45
- ✓ precision: matched 'tp / (tp + fp)'
- ✓ recall: matched 'tp / (tp + fn)'
- ✓ not_swapped: no known-wrong claims
sample-b (confident) · correctness 0.50 · fluency 0.93 · confidence 0.80 confidently wrongknown wrong claim
- ✓ precision: matched 'tp / (tp + fp)'
- ✓ recall: matched 'tp / (tp + fn)'
- ✗ not_swapped: contains wrong claim 'precision is tp / (tp + fn)'
sample-c (hedged) · correctness 1.00 · fluency 0.55 · confidence 0.45
- ✓ precision: matched 'tp/(tp+fp)'
- ✓ recall: matched 'tp/(tp+fn)'
- ✓ not_swapped: no known-wrong claims
sample-d (mixed) · correctness 0.00 · fluency 0.59 · confidence 0.45
- ✗ precision: none of ['tp / (tp + fp)', 'tp/(tp+fp)', 'of the predicted positives', 'predicted positives']
- ✗ recall: none of ['tp / (tp + fn)', 'tp/(tp+fn)', 'of the actual positives', 'actual positives']
- ✓ not_swapped: no known-wrong claims
q09_pvalue: A hypothesis test returns p = 0.03. What does that mean?
sample-a (accurate) · correctness 1.00 · fluency 0.77 · confidence 0.27 hedged but right
- ✓ conditional_on_null: matched 'if the null hypothesis'
- ✓ as_extreme: matched 'at least as extreme'
- ✓ not_posterior: no known-wrong claims
sample-b (confident) · correctness 0.00 · fluency 0.94 · confidence 0.78 confidently wrongknown wrong claim
- ✗ conditional_on_null: none of ['assuming the null', 'if the null hypothesis', 'under the null']
- ✗ as_extreme: none of ['at least as extreme', 'as extreme or more']
- ✗ not_posterior: contains wrong claim '97% chance'
sample-c (hedged) · correctness 1.00 · fluency 0.57 · confidence 0.45
- ✓ conditional_on_null: matched 'assuming the null'
- ✓ as_extreme: matched 'at least as extreme'
- ✓ not_posterior: no known-wrong claims
sample-d (mixed) · correctness 0.67 · fluency 0.62 · confidence 0.45
- ✓ conditional_on_null: matched 'under the null'
- ✗ as_extreme: none of ['at least as extreme', 'as extreme or more']
- ✓ not_posterior: no known-wrong claims
q10_simpson: What is Simpson's paradox?
sample-a (accurate) · correctness 1.00 · fluency 0.69 · confidence 0.45
- ✓ reversal: matched 'reverses'
- ✓ aggregation: matched 'combined'
- ✓ cause: matched 'confound'
sample-b (confident) · correctness 1.00 · fluency 0.95 · confidence 1.00
- ✓ reversal: matched 'reverses'
- ✓ aggregation: matched 'combined'
- ✓ cause: matched 'group sizes'
sample-c (hedged) · correctness 0.67 · fluency 0.42 · confidence 0.45
- ✓ reversal: matched 'reverses'
- ✓ aggregation: matched 'combined'
- ✗ cause: none of ['confound', 'lurking', 'group sizes', 'weights']
sample-d (mixed) · correctness 0.67 · fluency 0.56 · confidence 0.45
- ✗ reversal: none of ['reverses', 'reversal', 'disappears', 'flips']
- ✓ aggregation: matched 'combining'
- ✓ cause: matched 'lurking'
q11_tariff: A state's average electricity price is total utility revenue divided by kWh sold. Can you use it as the rate a specific business will pay?
sample-a (accurate) · correctness 1.00 · fluency 0.83 · confidence 0.45
- ✓ says_no: pattern matched
- ✓ billing_structure: matched 'fixed customer charge'
- ✓ not_a_proxy: no known-wrong claims
sample-b (confident) · correctness 0.00 · fluency 0.94 · confidence 1.00 confidently wrongknown wrong claim
- ✗ says_no: no match for /(^no\b|\bnot\b|\bcannot\b|can't|shouldn't)/
- ✗ billing_structure: none of ['fixed charge', 'fixed customer charge', 'customer charge', 'demand charge', 'tier', 'tariff', 'rate schedule', 'time-of-use']
- ✗ not_a_proxy: contains wrong claim 'good proxy for any single customer'
sample-c (hedged) · correctness 1.00 · fluency 0.41 · confidence 0.45
- ✓ says_no: pattern matched
- ✓ billing_structure: matched 'demand charge'
- ✓ not_a_proxy: no known-wrong claims
sample-d (mixed) · correctness 1.00 · fluency 0.52 · confidence 0.45
- ✓ says_no: pattern matched
- ✓ billing_structure: matched 'tariff'
- ✓ not_a_proxy: no known-wrong claims
q12_causation: Two variables have a correlation of 0.8. Does one cause the other?
sample-a (accurate) · correctness 1.00 · fluency 0.80 · confidence 0.45
- ✓ not_causal: matched 'does not imply causation'
- ✓ alternatives: matched 'third variable'
- ✓ no_causal_claim: no known-wrong claims
sample-b (confident) · correctness 0.00 · fluency 0.98 · confidence 0.98 confidently wrongknown wrong claim
- ✗ not_causal: none of ['does not imply causation', "doesn't imply causation", 'correlation is not causation', 'not necessarily', 'does not prove']
- ✗ alternatives: none of ['confound', 'third variable', 'reverse causation', 'other way', 'experiment', 'randomized']
- ✗ no_causal_claim: contains wrong claim 'proves that'
sample-c (hedged) · correctness 1.00 · fluency 0.26 · confidence 0.00 hedged but right
- ✓ not_causal: matched 'not necessarily'
- ✓ alternatives: matched 'third variable'
- ✓ no_causal_claim: no known-wrong claims
sample-d (mixed) · correctness 0.00 · fluency 0.56 · confidence 0.13
- ✗ not_causal: none of ['does not imply causation', "doesn't imply causation", 'correlation is not causation', 'not necessarily', 'does not prove']
- ✗ alternatives: none of ['confound', 'third variable', 'reverse causation', 'other way', 'experiment', 'randomized']
- ✓ no_causal_claim: no known-wrong claims