DAY 4 — PHASE 4 ANALYSIS ENGINE (RAG + OLLAMA REASONING CORE)

Skip to main content
< All Topics
Print

🎯 Goal

By the end of Day 4 you will have:

  • RAG system connected to your LLM
  • real strategy questions answered using your data
  • structured analysis outputs (not random chat)
  • your first working “trading research brain”

This is the core intelligence layer of your system.


🧱 STEP 1 — CREATE ANALYSIS ENGINE FILE

Inside your project:

cd AI_TRADING_SYSTEM
source venv/bin/activate
touch analysis_engine.py

🧠 STEP 2 — DEFINE THE PIPELINE

Your system now becomes:

User Question
    ↓
RAG Retrieval (vector DB)
    ↓
Context Builder (format strategy data)
    ↓
Send to Ollama (14B / 20B)
    ↓
Structured Analysis Output

🐍 STEP 3 — BUILD CORE ENGINE

Paste into analysis_engine.py:

import chromadb
from sentence_transformers import SentenceTransformer
import ollama

# Load embedding model
embedder = SentenceTransformer("all-MiniLM-L6-v2")

# Load vector DB
client = chromadb.PersistentClient(path="07_RAG_KNOWLEDGE_BASE/index")
collection = client.get_or_create_collection("trading_data")


def retrieve_context(query, k=3):
    query_embedding = embedder.encode(query).tolist()

    results = collection.query(
        query_embeddings=[query_embedding],
        n_results=k
    )

    return "\n".join(results["documents"][0])


def build_prompt(question, context):

    return f"""
You are a quantitative trading research analyst.

You ONLY use the provided historical trading data.

Do NOT assume external knowledge.

-------------------
QUESTION:
{question}

-------------------
HISTORICAL CONTEXT:
{context}

-------------------
OUTPUT FORMAT:

1. Summary
2. Strategy Breakdown
3. Regime Behavior
4. Risk Analysis
5. Comparison
6. Improvement Suggestions
"""


def run_analysis(question, model="qwen2.5:14b"):

    context = retrieve_context(question)
    prompt = build_prompt(question, context)

    response = ollama.chat(
        model=model,
        messages=[{"role": "user", "content": prompt}]
    )

    return response["message"]["content"]


if __name__ == "__main__":

    q = input("Ask your trading question: ")
    result = run_analysis(q)

    print("\n\n===== ANALYSIS =====\n")
    print(result)

▶️ STEP 4 — RUN YOUR FIRST ANALYSIS

python analysis_engine.py

Try inputs like:

Why does momentum fail in volatile markets?

or

Compare mean reversion vs momentum in bull markets


🧠 STEP 5 — WHAT SHOULD HAPPEN NOW

You should see:

✔ RAG pulls relevant strategy data
✔ context is injected into prompt
✔ LLM generates structured response
✔ output follows fixed format


⚙️ STEP 6 — MODEL SWITCHING (IMPORTANT)

You can now test all 3 layers:

Fast:

model="llama3.1:8b"

Standard:

model="qwen2.5:14b"

Deep:

model="deepseek-r1:20b"

🧠 STEP 7 — WHAT YOU JUST BUILT

You now have:

✔ full RAG → LLM pipeline

✔ structured trading reasoning engine

✔ historical-only analysis system

✔ consistent output format enforcement


🚫 WHAT THIS SYSTEM IS NOT

  • ❌ not live trading
  • ❌ not predictive AI
  • ❌ not autonomous agent
  • ❌ not market-connected

It is:

a deterministic research engine over your trading history


🧱 WHY THIS IS THE MOST IMPORTANT PHASE

Because now:

your data + retrieval + reasoning are fully connected

Everything after this is just UI + optimization.


💡 ONE-LINE SUMMARY

Day 4 builds your core intelligence engine by connecting RAG retrieval directly to local LLM reasoning with structured trading outputs.