CoolFace
Apppublic

Manaregr8/Bitcoin_Predicter

sourceHugging Facemitupdated 1y agoView on Hugging Face
0likes
app.py57 linesDownload Raw Back to src
1import streamlit as st
2import yfinance as yf
3import pandas as pd
4from prophet import Prophet
5from datetime import datetime, timedelta
6
7def fetch_historical_data(ticker, period_days=365):
8    data = yf.download(ticker, period=f"{period_days}d", interval="1d")
9    data = data[['Close']].reset_index()
10    data.columns = ['ds', 'y']
11    return data
12
13# Convert USD to INR (approximate rate)
14INR_RATE = 83.0  # you may update this dynamically
15
16def predict_prices(days, ticker='BTC-USD'):
17    if ticker != 'BTC-USD':
18        return None
19    # fetch last 365 days
20    hist = fetch_historical_data(ticker)
21    model = Prophet(daily_seasonality=True)
22    model.fit(hist)
23    future = model.make_future_dataframe(periods=days)
24    forecast = model.predict(future)
25    # take only forecast for future days
26    future_forecast = forecast.tail(days)[['ds', 'yhat']]
27    # convert to INR and format
28    results = []
29    for _, row in future_forecast.iterrows():
30        date_str = row['ds'].strftime('%Y-%m-%d')
31        inr_val = row['yhat'] * INR_RATE
32        # convert to lakhs
33        lakh_val = inr_val / 1e5
34        results.append(f"{date_str} ➤ ₹{lakh_val:.2f}L")
35    return results
36
37# Streamlit app
38def main():
39    st.set_page_config(page_title="BTC Price Predictor", layout="wide")
40    st.title("📈 BTC-USD Price Predictor")
41
42    with st.form("predict_form"):
43        ticker = st.text_input("Enter currency (BTC-USD only):", "BTC-USD")
44        days = st.number_input("Days to predict:", min_value=1, max_value=365, value=30)
45        submit = st.form_submit_button("Predict")
46
47    if submit:
48        output = predict_prices(days, ticker)
49        if output is None:
50            st.error("Invalid ticker. Only BTC-USD supported.")
51        else:
52            for line in output:
53                st.write(line)
54
55if __name__ == '__main__':
56    main()
57