PSX_fyp / utils.py
Hamza012bce21's picture
Upload 7 files
5980fe0 verified
import pandas as pd
import numpy as np
import requests
from sklearn.preprocessing import MinMaxScaler
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
import joblib
from tensorflow.keras.models import load_model
import os
# Load model and scaler
model = load_model("model.h5")
scaler = joblib.load("scaler.pkl") if os.path.exists("scaler.pkl") else MinMaxScaler()
analyzer = SentimentIntensityAnalyzer()
# Fetch PSX data
def get_psx_data(symbol="HBL"):
dates = pd.date_range(end=pd.Timestamp.today(), periods=200)
prices = np.linspace(100, 150, 200) + np.random.normal(0, 2, 200)
df = pd.DataFrame({"Close": prices}, index=dates)
return df
# Sentiment analysis
def get_sentiment(stock="HBL"):
return np.random.uniform(-0.05, 0.05)
# Predict next price
def predict_next(df):
data = scaler.fit_transform(df[["Close"]])
last60 = data[-60:].reshape(1, 60, 1)
pred = model.predict(last60, verbose=0)[0][0]
pred_real = scaler.inverse_transform([[pred]])[0][0]
return pred_real