๐Ÿ’น Finance Sentiment Classifier โ€” Indian Market Focus

Fine-tuned on Mistral-7B-Instruct using LoRA via Adaption AutoScientist.
Classifies financial news, headlines, and social media text into positive, negative, or neutral sentiment.
Built for the HackIndia Adaption AutoScientist Challenge โ€” Finance track.


๐Ÿ“Š Performance

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

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 1.0
Weight decay 0.01
Training platform Adaption AutoScientist
Dataset size 20,000 rows (adapted)

๐Ÿ“ 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

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) Original, manually written examples ~60+
NewsAPI live headlines Rule-labelled recent business news ~500

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, AutoModelForCausalLM
from 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()

# Example
text = "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

Downloads last month
22
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for Sashank1006/finance-sentiment-mistral-lora

Adapter
(824)
this model

Datasets used to train Sashank1006/finance-sentiment-mistral-lora