YAML Metadata Warning:empty or missing yaml metadata in repo card

Check out the documentation for more information.

GLiClass Adverse Risk Scorer

A fine-tuned GLiClass Edge V3.0 model that produces continuous 0โ€“1 adverse-salience scores for 13 risk factors mentioned in earnings-call transcripts. Given a passage of text, the model outputs a score for each risk category reflecting how prominently that adverse factor is discussed โ€” not a binary present/absent classification. No fixed label set is baked in at inference time, so it retains GLiClass's zero-shot flexibility.

Model Details

Base model knowledgator/gliclass-edge-v3.0
Encoder ModernBERT 32M (jhu-clsp/ettin-encoder-32m)
Architecture GLiClass uni-encoder with MLP scorer
Parameters ~32M (125 MB safetensors)
Output Continuous scores (0โ€“1) per risk factor
Max sequence length 8 192 tokens
Training method LoRA (r=64, ฮฑ=128) on the encoder
Training data Earnings-call excerpts soft-labeled by GPT 4.1 mini
Loss Focal loss (ฮฑ=0.7, ฮณ=2.0)

Labels

The model was trained on these 13 risk/headwind categories:

# Label
1 Climate Risk
2 Demand Risk
3 Economic Policy
4 Equity Market Volatility
5 Financial Risk
6 Geopolitical Risk
7 Inflation Risk
8 Labor Risk
9 Monetary Policy
10 Oil Risk
11 Political Risk
12 Supply Chain Risk
13 Trade Policy

Quickstart

Installation

pip install gliclass transformers torch

Inference

from gliclass import GLiClassModel, ZeroShotClassificationPipeline
from transformers import AutoTokenizer

# Load model and tokenizer
model = GLiClassModel.from_pretrained("./gliclass_adverse_model")
tokenizer = AutoTokenizer.from_pretrained("./gliclass_adverse_model")

pipeline = ZeroShotClassificationPipeline(
    model, tokenizer,
    classification_type="multi-label",
    device="cpu",  # or "cuda:0"
)

# All 13 risk labels
labels = [
    "Climate Risk", "Demand Risk", "Economic Policy",
    "Equity Market Volatility", "Financial Risk", "Geopolitical Risk",
    "Inflation Risk", "Labor Risk", "Monetary Policy", "Oil Risk",
    "Political Risk", "Supply Chain Risk", "Trade Policy",
]

text = (
    "Our operations in the region face growing uncertainty following "
    "the escalation of the conflict in the Middle East. We suspended "
    "shipments through the Suez Canal and rerouted through the Cape "
    "of Good Hope, adding 12 days and significant fuel cost to each "
    "voyage. Sanctions on several of our former trading partners "
    "further limited our sourcing options."
)

results = pipeline([text], labels, threshold=0.0)

# Sort by score descending
sorted_results = sorted(results[0], key=lambda x: x["score"], reverse=True)
for pred in sorted_results:
    print(f"  {pred['label']:30s}  {pred['score']:.3f}")

Expected output:

  Geopolitical Risk               0.799
  Political Risk                  0.455
  Supply Chain Risk               0.333
  Demand Risk                     0.283
  Economic Policy                 0.194
  Financial Risk                  0.167
  Equity Market Volatility        0.118
  Trade Policy                    0.112
  Labor Risk                      0.101
  Inflation Risk                  0.095
  Climate Risk                    0.081
  Oil Risk                        0.080
  Monetary Policy                 0.061

Scores are continuous โ€” higher means the risk factor is more adversely salient in the passage. Use them directly as exposure measures rather than thresholding into binary labels.

Batch inference

texts = ["...", "...", "..."]  # list of passages
batch_results = pipeline(texts, labels, threshold=0.0)
# batch_results[i] โ†’ list of {label, score} dicts for texts[i]

Evaluation

Evaluated on a held-out 10% split (1 267 examples, seed 42) against the GPT 4.1 mini soft-label ground truth:

Metric Value
MAE 0.061
RMSE 0.110
MAE (median) 0.034
MAE (p90) 0.091
MAE (p95) 0.243

Per-topic MAE

| Topic | MAE | RMSE | |---|---|---|---|---| | Climate Risk | 0.035 | 0.052 | | Demand Risk | 0.084 | 0.161 | | Economic Policy | 0.083 | 0.106 | | Equity Market Volatility | 0.057 | 0.086 | | Financial Risk | 0.050 | 0.079 | | Geopolitical Risk | 0.050 | 0.106 | | Inflation Risk | 0.078 | 0.166 | | Labor Risk | 0.060 | 0.103 | | Monetary Policy | 0.058 | 0.086 | | Oil Risk | 0.049 | 0.096 | | Political Risk | 0.061 | 0.098 | | Supply Chain Risk | 0.069 | 0.126 | | Trade Policy | 0.058 | 0.115 |

Limitations

  • Domain-specific โ€” trained on earnings-call transcripts; may underperform on other financial text genres (e.g. 10-K filings, news articles) without further tuning.
  • Soft-label teacher โ€” ground truth comes from GPT 4.1 mini, so the model inherits any systematic biases of the teacher.
  • Imbalanced topics โ€” some categories (Climate Risk: 34 positives, Equity Market Volatility: 63) are rare in the training set; expect noisier predictions there.

Citation

If you use this model, please cite the paper it was developed for and the underlying GLiClass framework:

@article{renault2025measuring,
    title   = {Measuring Directional Firm-level Exposures Using Transformers and Large Language Models},
    author  = {Thomas Renault and Thomas Rigou},
    year    = {2025},
}

@misc{gliclass,
    title   = {GLiClass: Generalist and Lightweight Model for Zero-Shot Classification},
    author  = {Knowledgator},
    year    = {2024},
    url     = {https://github.com/knowledgator/GLiClass}
}
Downloads last month
12
Safetensors
Model size
32.7M params
Tensor type
F32
ยท
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support