Table with columns: Metric, Base Model, Our Model, Improvement| Metric | Base Model | Our Model | Improvement |
|---|
| Win Rate (our dataset) | 44 | 56 | +27% relative |
| Win Rate (market analysis category) | 40 | 60 | +50% relative |
| Dataset quality grade | E (2.0) | B (8.1) | +305% relative |
Training curves showed clean, consistent loss reduction with no overfitting across 4 epochs.
🧠 Model Details
Table with columns: Property, Value| Property | Value |
|---|
| Base model | mistralai/Mistral-7B-Instruct-v0.3 |
| Training method | Supervised Fine-Tuning (SFT) + LoRA |
| LoRA rank | 64 |
| LoRA alpha | 128 |
| Target layers | q_proj, k_proj, v_proj, o_proj |
| Epochs | 4 |
| Optimizer | Cosine LR scheduler |
| Warmup ratio | 0.05 |
| Gradient clipping |
📁 Dataset
The training dataset is a curated merge of 6 sources totalling ~120,000 raw rows,
cleaned and deduplicated down to 20,000 high-quality rows via Adaption's Adaptive Data pipeline.
Sources
Table with columns: Source, Type, Rows (approx)| Source | Type | Rows (approx) |
|---|
| financial_phrasebank (sentences_allagree) | Human-labeled news sentences | ~2,200 |
| zeroshot/twitter-financial-news-sentiment | Human-labeled financial tweets | ~9,900 |
| flwrlabs/fingpt-sentiment-train | Financial NLP training data | ~76,800 |
| TimKoornstra/financial-tweets-sentiment | Human-labeled financial tweets | ~38,000 |
| nickmuchi/financial-classification | Financial text classification | ~2,000 |
| Hand-labeled originals (Indian market) |
What makes this dataset original
- Indian market focus — original hand-labeled examples covering NSE, BSE, Sensex, Nifty, RBI decisions, Indian fintech (Paytm, Zomato, PhonePe), and Indian conglomerates (Reliance, Tata, Adani, HDFC)
- Multi-source deduplication — priority-aware deduplication ensures highest-quality copy is retained when the same text appears across sources
- Multilingual context — includes financial terminology specific to the Indian subcontinent not present in standard Western finance NLP datasets
- Live news augmentation — recent business headlines via NewsAPI add temporal diversity beyond static datasets
Label distribution (after cleaning)
positive : ~35%negative : ~33%neutral : ~32%
Balanced across all three classes to prevent label bias.
Data quality improvement via Adaptive Data
Adaption's Adaptive Data pipeline was applied before training:
- Before: Grade E, quality score 2.0, percentile 0.1
- After: Grade B, quality score 8.1, percentile 17.8
- Relative improvement: 305%
🚀 How to Use
from transformers import AutoTokenizer, AutoModelForCausalLMfrom peft import PeftModel base_model = "mistralai/Mistral-7B-Instruct-v0.3"lora_model = "Sashank1006/finance-sentiment-mistral-lora" tokenizer = AutoTokenizer.from_pretrained(base_model)model = AutoModelForCausalLM.from_pretrained(base_model, device_map="auto")model = PeftModel.from_pretrained(model, lora_model)model.eval() def predict_sentiment(text: str) -> str: prompt = f"Classify the sentiment of this financial text as positive, negative, or neutral:\n\n{text}\n\nSentiment:" inputs = tokenizer(prompt, return_tensors="pt").to(model.device) output = model.generate(**inputs, max_new_tokens=5, do_sample=False) result = tokenizer.decode(output[0], skip_special_tokens=True) return result.split("Sentiment:")[-1].strip().lower() # Exampletext = "Reliance Industries reported a 23% jump in quarterly profit."print(predict_sentiment(text)) # → "positive"
🌍 Real-World Applications
- Retail investor tools — classify financial news before displaying to users
- Trading signal generation — convert news sentiment into bullish/bearish signals
- Portfolio risk monitoring — flag negative sentiment around held stocks
- Indian fintech apps — specifically tuned for Indian market terminology and companies
- News aggregators — auto-tag financial articles by sentiment
⚠️ Limitations
- Trained primarily on English-language financial text; performance on Hindi/Tamil/regional language finance text will be lower
- Rule-labelled NewsAPI headlines (~500 rows) may contain some label noise
- Model may underperform on highly technical financial derivative or options-specific language
- Sentiment is classified at the sentence/headline level — document-level sentiment aggregation requires additional logic
- The model reflects sentiment patterns in training data up to mid-2026; sentiment around newer entities may be less accurate
📋 Training Pipeline
Raw data (6 sources, ~120K rows) ↓Merge + deduplicate (prepare_dataset.py) ↓Upload to Adaption Adaptive Data ↓Adaptive Data optimization (Grade E → B, 305% quality improvement) ↓AutoScientist fine-tuning (Mistral-7B-Instruct, LoRA, 4 epochs) ↓Evaluation (Win rate: 44 → 56 on dataset, 40 → 60 on market analysis) ↓Released on HuggingFace + Kaggle
👥 Team
Team Caribou — HackIndia Adaption AutoScientist Challenge, Finance Track
Built using:
📄 Citation
@misc{caribou2026financeSentiment, title = {Finance Sentiment Classifier — Indian Market Focus}, author = {Team Caribou}, year = {2026}, url = {https://huggingface.co/YOUR_HF_USERNAME/finance-sentiment-mistral-lora}, note = {Built for HackIndia Adaption AutoScientist Challenge}}
🔗 Links