Spaces:
Running
Running
import requests | |
import pandas as pd | |
import gradio as gr | |
def scrape_barchart_unusual(): | |
url = "https://www.barchart.com/proxies/core-api/v1/options/unusual-activity" | |
headers = { | |
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123 Safari/537.36", | |
"Accept": "application/json", | |
} | |
params = { | |
"assetType": "STOCK", | |
"fields": "symbol,optionType,strikePrice,expirationDate,tradeVolume,tradePremium", | |
"meta": "field.shortName,field.type", | |
"orderBy": "tradePremium", | |
"orderDir": "desc", | |
"page": 1, | |
"limit": 50 | |
} | |
response = requests.get(url, headers=headers, params=params) | |
data = response.json() | |
if "data" not in data: | |
return pd.DataFrame(columns=["Symbol", "Type", "Strike", "Expiry", "Volume", "Premium ($)"]) | |
rows = [] | |
for item in data["data"]: | |
symbol = item.get("symbol", "") | |
opt_type = item.get("optionType", "") | |
strike = item.get("strikePrice", "") | |
expiry = item.get("expirationDate", "") | |
volume = item.get("tradeVolume", "") | |
premium = item.get("tradePremium", "") | |
rows.append([symbol, opt_type, strike, expiry, volume, f"${premium:,}"]) | |
df = pd.DataFrame(rows, columns=["Symbol", "Type", "Strike", "Expiry", "Volume", "Premium ($)"]) | |
return df | |
with gr.Blocks() as app: | |
gr.Markdown("# Barchart Unusual Options Flow (Realtime Top 50)") | |
table = gr.Dataframe(scrape_barchart_unusual, every=30, label="Unusual Options Activity") | |
app.launch(server_name="0.0.0.0", server_port=7860) |