Spaces:
Sleeping
Sleeping
Update stock.py
Browse files
stock.py
CHANGED
|
@@ -57,70 +57,6 @@ from chart_builder import build_chart
|
|
| 57 |
from ta_indi_pat import talib_df
|
| 58 |
|
| 59 |
|
| 60 |
-
# -------------------------- INFO ------------------------------
|
| 61 |
-
|
| 62 |
-
def fetch_info2(symbol):
|
| 63 |
-
try:
|
| 64 |
-
info = yfinfo(symbol)
|
| 65 |
-
if not info:
|
| 66 |
-
return html_error(f"No information found for {symbol}")
|
| 67 |
-
|
| 68 |
-
basic = {
|
| 69 |
-
"Symbol": symbol,
|
| 70 |
-
"Name": safe_get(info, "longName"),
|
| 71 |
-
"Sector": safe_get(info, "sector"),
|
| 72 |
-
"Industry": safe_get(info, "industry"),
|
| 73 |
-
"Website": safe_get(info, "website"),
|
| 74 |
-
"Employee Count": format_large_number(safe_get(info, "fullTimeEmployees")),
|
| 75 |
-
}
|
| 76 |
-
df_basic = pd.DataFrame(basic.items(), columns=["Field", "Value"])
|
| 77 |
-
|
| 78 |
-
price_info = {
|
| 79 |
-
"Current Price": format_number(safe_get(info, "currentPrice")),
|
| 80 |
-
"Previous Close": format_number(safe_get(info, "previousClose")),
|
| 81 |
-
"Open": format_number(safe_get(info, "open")),
|
| 82 |
-
"Day High": format_number(safe_get(info, "dayHigh")),
|
| 83 |
-
"Day Low": format_number(safe_get(info, "dayLow")),
|
| 84 |
-
"52W High": format_number(safe_get(info, "fiftyTwoWeekHigh")),
|
| 85 |
-
"52W Low": format_number(safe_get(info, "fiftyTwoWeekLow")),
|
| 86 |
-
"Volume": format_large_number(safe_get(info, "volume")),
|
| 87 |
-
"Avg Volume": format_large_number(safe_get(info, "averageVolume")),
|
| 88 |
-
}
|
| 89 |
-
df_price = pd.DataFrame(price_info.items(), columns=["Field", "Value"])
|
| 90 |
-
|
| 91 |
-
valuation = {
|
| 92 |
-
"Market Cap": format_large_number(safe_get(info, "marketCap")),
|
| 93 |
-
"PE Ratio": format_number(safe_get(info, "trailingPE")),
|
| 94 |
-
"EPS": format_number(safe_get(info, "trailingEps")),
|
| 95 |
-
"PB Ratio": format_number(safe_get(info, "priceToBook")),
|
| 96 |
-
"Dividend Yield": format_number(safe_get(info, "dividendYield")),
|
| 97 |
-
"ROE": format_number(safe_get(info, "returnOnEquity")),
|
| 98 |
-
"ROA": format_number(safe_get(info, "returnOnAssets")),
|
| 99 |
-
}
|
| 100 |
-
df_val = pd.DataFrame(valuation.items(), columns=["Field", "Value"])
|
| 101 |
-
|
| 102 |
-
extra = {
|
| 103 |
-
"Beta": format_number(safe_get(info, "beta")),
|
| 104 |
-
"Revenue": format_large_number(safe_get(info, "totalRevenue")),
|
| 105 |
-
"Gross Margins": format_number(safe_get(info, "grossMargins")),
|
| 106 |
-
"Operating Margins": format_number(safe_get(info, "operatingMargins")),
|
| 107 |
-
"Profit Margins": format_number(safe_get(info, "profitMargins")),
|
| 108 |
-
"Book Value": format_number(safe_get(info, "bookValue")),
|
| 109 |
-
}
|
| 110 |
-
df_extra = pd.DataFrame(extra.items(), columns=["Field", "Value"])
|
| 111 |
-
|
| 112 |
-
final_html = (
|
| 113 |
-
html_card("Basic Information", make_table(df_basic))
|
| 114 |
-
+ html_card("Price Details", make_table(df_price))
|
| 115 |
-
+ html_card("Valuation Metrics", make_table(df_val))
|
| 116 |
-
+ html_card("Additional Company Data", make_table(df_extra))
|
| 117 |
-
)
|
| 118 |
-
return final_html
|
| 119 |
-
|
| 120 |
-
except Exception as e:
|
| 121 |
-
return html_error(f"INFO ERROR: {e}<br><pre>{traceback.format_exc()}</pre>")
|
| 122 |
-
|
| 123 |
-
|
| 124 |
# -------------------------- INTRADAY ------------------------------
|
| 125 |
|
| 126 |
def fetch_intraday(symbol, indicators=None):
|
|
@@ -132,7 +68,7 @@ def fetch_intraday(symbol, indicators=None):
|
|
| 132 |
if isinstance(df.columns, pd.MultiIndex):
|
| 133 |
df.columns = df.columns.get_level_values(0)
|
| 134 |
|
| 135 |
-
chart_html = build_chart(df, indicators=indicators
|
| 136 |
table_html = make_table(df.tail(50))
|
| 137 |
|
| 138 |
return wrap_html(f"{chart_html}<h2>Last 50 Rows</h2>{table_html}",
|
|
|
|
| 57 |
from ta_indi_pat import talib_df
|
| 58 |
|
| 59 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 60 |
# -------------------------- INTRADAY ------------------------------
|
| 61 |
|
| 62 |
def fetch_intraday(symbol, indicators=None):
|
|
|
|
| 68 |
if isinstance(df.columns, pd.MultiIndex):
|
| 69 |
df.columns = df.columns.get_level_values(0)
|
| 70 |
|
| 71 |
+
chart_html = build_chart(df, indicators=indicators)
|
| 72 |
table_html = make_table(df.tail(50))
|
| 73 |
|
| 74 |
return wrap_html(f"{chart_html}<h2>Last 50 Rows</h2>{table_html}",
|