Manaregr8/Bitcoin_Predicter
0
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 