File size: 2,292 Bytes
46bc116
 
663d47c
46bc116
663d47c
46bc116
 
663d47c
 
 
 
46bc116
663d47c
 
 
 
 
 
 
 
 
 
 
46bc116
663d47c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46bc116
663d47c
 
46bc116
663d47c
46bc116
663d47c
46bc116
663d47c
46bc116
 
663d47c
 
 
 
 
 
 
46bc116
 
663d47c
46bc116
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# app.py
import gradio as gr
import torch
import pandas as pd
from transformers import RagTokenizer, RagRetriever, RagSequenceForGeneration
import yfinance as yf

# Load the fine-tuned RAG model and tokenizer
tokenizer = RagTokenizer.from_pretrained("facebook/rag-sequence-base")
retriever = RagRetriever.from_pretrained("facebook/rag-sequence-base", index_name="custom")
model = RagSequenceForGeneration.from_pretrained("facebook/rag-sequence-base", retriever=retriever)

# Function to fetch and preprocess ICICI Bank data
def fetch_and_preprocess_data():
    # Fetch ICICI Bank data using yfinance
    ticker = "ICICIBANK.NS"
    data = yf.download(ticker, start="2020-01-01", end="2023-01-01")
    
    # Calculate technical indicators
    data['MA_50'] = data['Close'].rolling(window=50).mean()
    data['MA_200'] = data['Close'].rolling(window=200).mean()
    
    return data

# Function to analyze trading data using the RAG model
def analyze_trading_data(question):
    # Fetch and preprocess data
    data = fetch_and_preprocess_data()
    
    # Prepare context for the RAG model
    context = (
        f"ICICI Bank stock data:\n"
        f"Latest Close Price: {data['Close'].iloc[-1]:.2f}\n"
        f"50-Day Moving Average: {data['MA_50'].iloc[-1]:.2f}\n"
        f"200-Day Moving Average: {data['MA_200'].iloc[-1]:.2f}\n"
    )
    
    # Combine question and context
    input_text = f"Question: {question}\nContext: {context}"
    
    # Tokenize the input
    inputs = tokenizer(input_text, return_tensors="pt", padding=True, truncation=True)
    
    # Generate the answer using the RAG model
    outputs = model.generate(inputs['input_ids'])
    
    # Decode the output to get the answer
    answer = tokenizer.decode(outputs[0], skip_special_tokens=True)
    
    return answer

# Gradio interface
iface = gr.Interface(
    fn=analyze_trading_data,
    inputs="text",
    outputs="text",
    title="ICICI Bank Trading Analysis",
    description="Ask any question about ICICI Bank's trading data and get a detailed analysis.",
    examples=[
        "What is the current trend of ICICI Bank stock?",
        "Is the 50-day moving average above the 200-day moving average?",
        "What is the latest closing price of ICICI Bank?"
    ]
)

# Launch the app
iface.launch()