1 Download Updated yesterday
ollama run mrinalux/lcx-ai
ollama launch claude --model mrinalux/lcx-ai
ollama launch codex-app --model mrinalux/lcx-ai
ollama launch openclaw --model mrinalux/lcx-ai
ollama launch hermes --model mrinalux/lcx-ai
ollama launch codex --model mrinalux/lcx-ai
ollama launch opencode --model mrinalux/lcx-ai
A fine-tuned Qwen3-8B model specialized for Indian equity technical analysis. Built on ~5 years of real OHLCV data from NSE-listed stocks (Nifty 500 universe), fine-tuned to produce structured, data-grounded analysis in the format used by professional Indian equity desks.
Only analyzes stocks when a market data block is provided. Declines all off-topic queries.
⚠️ Not financial advice. This model reads a technical snapshot you provide — it does not fetch live prices, predict the future, or replace your own research.
Evaluated 2026-06-01 on a 25-stock held-out test set (zero ticker overlap with training data), spanning oversold, overbought, neutral, uptrend, and downtrend buckets. Both models received identical system prompts, MongoDB context blocks, temperature (0.3), and the user message Analyze this stock.
| Check | LCX AI (fine-tuned) | Qwen3-8B (base) |
|---|---|---|
| Overall pass (all 10 checks) | 25⁄25 (100%) | 0/25 (0%) |
| RSI label correct | 25⁄25 (100%) | 23⁄25 (92%) |
| RSI value cited | 25⁄25 (100%) | 24⁄25 (96%) |
| ₹ used (not Rs) | 25⁄25 (100%) | 24⁄25 (96%) |
| No CJK characters | 25⁄25 (100%) | 25⁄25 (100%) |
| No repetition/loop | 25⁄25 (100%) | 25⁄25 (100%) |
<think> block present |
25⁄25 (100%) | 0/25 (0%) |
| Current price cited | 25⁄25 (100%) | 20⁄25 (80%) |
| Invalidation / stop-loss | 25⁄25 (100%) | 23⁄25 (92%) |
| No hallucinated prices | 25⁄25 (100%) | 25⁄25 (100%) |
| Response length OK | 25⁄25 (100%) | 24⁄25 (96%) |
| Avg latency | 54.4s | 35.7s |
How to read the comparison: Base Qwen3 scores 0/25 overall mainly because it was never trained on LCX AI’s output format (the <think> block). On substance checks alone — excluding that format requirement — base Qwen3 passes 17⁄25 (68%). LCX AI wins on format adherence, price citation, RSI labelling, and invalidation framing.
Benchmark script: grow/benchmark.py · Full results: benchmark_20260601_175325.json
<think>
[Internal reasoning — cites numbers from the data block]
</think>
**TICKER — Headline thesis in one line**
[Body: key technicals cited from data, trend context, setup rationale]
**What invalidates this view:** [Specific price level or condition]
This model is designed to run inside a data pipeline that builds the context block before calling Ollama. Raw ollama run mrinalux/lcx-ai without a data block returns a polite refusal, not analysis.
ollama pull mrinalux/lcx-ai
import requests
context = """
[TATAMOTORS NSE - Data as of 2026-06-01]
Price: ₹780.00 (+1.5% vs prior day)
RSI(14): 58.3
50DMA: ₹745.00 — price is above DMA
200DMA: ₹710.00 — price is above DMA
60-day range: ₹720.00 - ₹820.00
Volume ratio: 1.3x
1Y return: +12.4%
3Y return: +45.2%
5Y return: +88.1%
Start price (5Y ago): ₹415.00
All-time high: ₹820.00
All-time low: ₹380.00
Current vs peak: -4.9%
"""
response = requests.post("http://localhost:11434/api/chat", json={
"model": "mrinalux/lcx-ai",
"messages": [
{"role": "system", "content": "You are LCX AI..."}, # baked into Modelfile
{"role": "user", "content": context + "\n\nAnalyze this stock."},
],
"stream": False,
"options": {"temperature": 0.3, "num_predict": 2048},
})
print(response.json()["message"]["content"])
For the full pipeline (MongoDB → context builder → post-validation), see the companion repo scripts: analyze_stock.py, test_qwen.py, stock_chat.py.
Ask it anything outside stock analysis and it responds:
“I’m LCX AI, a stock technical analysis assistant. I can only analyze stocks using live market data. Please ask about a specific stock and I’ll pull its data.”
| Base model | Qwen3-8B |
| Fine-tuning | LoRA on ~205 Indian equity snapshots |
| Quantization | Q8_0 GGUF (~8.7 GB) |
| Training data | Structured OHLCV context → analysis pairs |
| Held-out eval | 25 stocks, seed 42, no training ticker overlap |
Last updated: June 2026 · Benchmark run: 2026-06-01