nick5363 commited on
Commit
6adba8e
·
verified ·
1 Parent(s): 1658c4e

Upload 2 files

Browse files
Files changed (2) hide show
  1. app.py +45 -0
  2. requirements.txt +3 -0
app.py ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import requests
2
+ import pandas as pd
3
+ import gradio as gr
4
+
5
+ def scrape_barchart_unusual():
6
+ url = "https://www.barchart.com/proxies/core-api/v1/options/unusual-activity"
7
+ headers = {
8
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123 Safari/537.36",
9
+ "Accept": "application/json",
10
+ }
11
+ params = {
12
+ "assetType": "STOCK",
13
+ "fields": "symbol,optionType,strikePrice,expirationDate,tradeVolume,tradePremium",
14
+ "meta": "field.shortName,field.type",
15
+ "orderBy": "tradePremium",
16
+ "orderDir": "desc",
17
+ "page": 1,
18
+ "limit": 50
19
+ }
20
+
21
+ response = requests.get(url, headers=headers, params=params)
22
+ data = response.json()
23
+
24
+ if "data" not in data:
25
+ return pd.DataFrame(columns=["Symbol", "Type", "Strike", "Expiry", "Volume", "Premium ($)"])
26
+
27
+ rows = []
28
+ for item in data["data"]:
29
+ symbol = item.get("symbol", "")
30
+ opt_type = item.get("optionType", "")
31
+ strike = item.get("strikePrice", "")
32
+ expiry = item.get("expirationDate", "")
33
+ volume = item.get("tradeVolume", "")
34
+ premium = item.get("tradePremium", "")
35
+
36
+ rows.append([symbol, opt_type, strike, expiry, volume, f"${premium:,}"])
37
+
38
+ df = pd.DataFrame(rows, columns=["Symbol", "Type", "Strike", "Expiry", "Volume", "Premium ($)"])
39
+ return df
40
+
41
+ with gr.Blocks() as app:
42
+ gr.Markdown("# Barchart Unusual Options Flow (Realtime Top 50)")
43
+ table = gr.Dataframe(scrape_barchart_unusual, every=30, label="Unusual Options Activity")
44
+
45
+ app.launch(server_name="0.0.0.0", server_port=7860)
requirements.txt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ gradio
2
+ pandas
3
+ requests