#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Gradio UI – ICBCBench Leaderboard
Dual-track (Objective / Subjective) leaderboard for financial deep research.
"""
from __future__ import annotations
from pathlib import Path
from datetime import datetime
import pandas as pd
import gradio as gr
# ---- Tab components ----
from tabs.leaderboard_tab import create_leaderboard_tab
# from tabs.data_viewer_tab import create_data_viewer_tab
# from tabs.data_viewer_side_by_side_tab import create_data_viewer_side_by_side_tab
def get_leaderboard_info():
leaderboard_path = Path(__file__).parent / "data" / "leaderboard.csv"
if leaderboard_path.exists():
try:
df = pd.read_csv(leaderboard_path)
model_count = len(df)
mtime = leaderboard_path.stat().st_mtime
last_update = datetime.fromtimestamp(mtime).strftime("%d %B %Y")
return model_count, last_update
except Exception:
pass
return 0, "Not yet updated"
model_count, last_update = get_leaderboard_info()
# ---------------------------------------------------------------------------
# UI
# ---------------------------------------------------------------------------
with gr.Blocks(title="ICBCBench Leaderboard") as demo:
# ========= Global CSS =========
gr.HTML("""
""")
# ========= Header =========
gr.HTML(f"""
ICBCBench: An Industry Consortium Benchmark for Financial Deep Research
ICBCBench evaluates Deep Research Agents on financial tasks through a dual-track paradigm: Objective (verifiable answers) and Subjective (expert-aligned report quality). HF Space |
Paper |
Code |
Dataset |
Total models: {model_count} | Last Update: {last_update}
Objective judge: GPT-5.4 | Subjective judge: Gemini-3.1-Pro-Preview
@article{li2026icbcbench,
author = {Weiya Li and Zhiwei Tang and Yizhou He and Chenghao Wang and Liang Feng and Xiao Sun and Dongrui Liu and Zichen Wen and Hu Wei and Jinghang Wang and Yi Luo and Li Guo and Linfeng Zhang},
title = {ICBCBench: An Industry Consortium Benchmark for Financial Deep Research},
journal = {arXiv preprint arXiv:2606.17458},
year = {2026},
}