Spaces:
Runtime error
Runtime error
| import datetime | |
| from pydantic import BaseModel, Field | |
| from typing import Dict, List, Optional | |
| import yfinance as yf | |
| import plotly.express as px | |
| from workcell.integrations.types import PlotlyPlot | |
| class Input(BaseModel): | |
| tickers: List[str] = Field( | |
| default=['AAPL','AMZN','META'], max_items=10, description="List of ticker values" | |
| ) | |
| def load_data(tickers): | |
| """Download ticker price data from ticker list. | |
| e.g. tickers = ['AAPL','AMZN','GOOG'] | |
| """ | |
| start = datetime.datetime(2022, 1, 1) | |
| end = datetime.datetime.now() # latest | |
| data = yf.download(tickers, start=start, end=end, interval='1d') | |
| # adjust close | |
| close = data['Adj Close'] | |
| return close | |
| def visualization(df): | |
| """Visualization price plot by yfinance dataframe. | |
| e.g. df = yf.download(***) | |
| """ | |
| template = 'plotly_white' | |
| fig = px.line(df, x=df.index, y=df.columns.tolist(), template=template) | |
| fig.update_xaxes( | |
| rangeslider_visible=True, | |
| rangeselector=dict( | |
| buttons=list([ | |
| dict(count=1, label="1m", step="month", stepmode="backward"), | |
| dict(count=6, label="6m", step="month", stepmode="backward"), | |
| dict(count=1, label="YTD", step="year", stepmode="todate"), | |
| dict(count=1, label="1y", step="year", stepmode="backward"), | |
| dict(step="all") | |
| ]) | |
| ) | |
| ) | |
| fig.update_layout(hovermode="x") | |
| return fig | |
| def stock_viewer(input: Input) -> PlotlyPlot: | |
| """Input ticker list, returns multiple stocks price. Data frome yfinance.""" | |
| # Step1. load data | |
| dataframe = load_data(input.tickers) | |
| # Step2. create plot | |
| fig = visualization(dataframe) | |
| # Step3. wrapped by output | |
| output = PlotlyPlot(data=fig) | |
| return output |