-
-
-
-
-
-
-
- Add to Watchlist
-
-
-
-
- {#each userWatchList as item}
-
- {/each}
-
-
-
+
+
+
+
+
diff --git a/src/routes/etf/[tickerID]/options/+page.svelte b/src/routes/etf/[tickerID]/options/+page.svelte
index 2badd177..e84e7f92 100644
--- a/src/routes/etf/[tickerID]/options/+page.svelte
+++ b/src/routes/etf/[tickerID]/options/+page.svelte
@@ -14,8 +14,12 @@
use([BarChart,LineChart, GridComponent, TooltipComponent, CanvasRenderer])
- export let data;
- let isLoaded = false;
+export let data;
+let isLoaded = false;
+let activeEX = 0;
+let activeIdx = 0;
+
+
const getDailyTransactions = async (transactionId) => {
let output;
const cachedData = getCache(transactionId, "getDailyTransactions");
@@ -51,7 +55,7 @@
let optionsPlotData = data?.getOptionsPlotData?.plot;
let displayData = 'volume';
let options;
- let optionsGEX;
+ let optionsEX;
let rawData = data?.getOptionsHistoricalData;
let optionList = rawData?.slice(0,30);
@@ -132,7 +136,7 @@ function normalizer(value) {
return formattedTimeString;
}
-
+
function changeTimePeriod(event)
{
displayTimePeriod = event.target.value;
@@ -213,20 +217,20 @@ function plotData(callData, putData) {
return options;
}
-function getGEXPlot() {
+function getEXPlot(state) {
let dates = [];
- let gexList = [];
+ let valueList = [];
let priceList = [];
data?.getOptionsGexData?.forEach(item => {
dates?.push(item?.date);
- gexList?.push(item?.gex);
+ valueList?.push(item[state]);
priceList?.push(item?.close)
});
- const {unit, denominator } = normalizer(Math.max(...gexList) ?? 0)
+ const {unit, denominator } = normalizer(Math.max(...valueList) ?? 0)
const option = {
@@ -310,7 +314,7 @@ function getGEXPlot() {
},
{
name: 'GEX',
- data: gexList,
+ data: valueList,
type: 'bar',
yAxisIndex: 1,
itemStyle: {
@@ -407,7 +411,7 @@ function processPlotData(filteredList: any[]) {
onMount(async () => {
if(data?.getOptionsGexData?.length !== 0) {
- optionsGEX = getGEXPlot();
+ optionsEX = getEXPlot('gex');
}
@@ -477,14 +481,27 @@ function handleMode(i) {
},
];
- let activeIdx = 0;
-
function changeStatement(event)
{
optionChainList = (data?.getOptionsChainData?.filter(item => item?.date_expiration === event.target.value))?.at(0)?.chain || [];
}
+ const tabEX = [
+ {
+ title: "GEX",
+ },
+ {
+ title: "DEX",
+ },
+ ];
+
+
+function handleEXMode(i) {
+ activeEX = i;
+ optionsEX = getEXPlot(activeEX === 0 ? 'gex' : 'dex');
+}
+
$: {
@@ -649,12 +666,33 @@ $: {
{#if data?.getOptionsGexData?.length !== 0}
- Daily Gamma Exposure (GEX)
+ {activeEX === 0 ? 'Daily Gamma Exposure (GEX)' : 'Daily Delta Exposure (DEX)'}
+
+ {#each tabEX as item, i}
+
+ {/each}
+
+
-
+
{/if}
@@ -711,6 +749,7 @@ $: {
% Change |
P/C |
Bear/Bull |
+
Bid/Ask Vol |
% OTM |
Total Volume |
Total OI |
@@ -721,7 +760,7 @@ $: {
{#each (data?.user?.tier === 'Pro' ? optionList : optionList?.slice(0,3)) as item, index}
handleViewData(item?.date)} on:mouseover={() => getDailyTransactions($etfTicker+'+'+item?.date)} class="cursor-pointer sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-[#27272A] border-b-[#09090B] {index+1 === optionList?.slice(0,3)?.length && data?.user?.tier !== 'Pro' ? 'opacity-[0.1]' : ''}">
- |
+ |
{formatDate(item?.date)}
|
@@ -737,7 +776,7 @@ $: {
{item?.c_vol !== 0 ? (item?.p_vol/item?.c_vol)?.toFixed(1) : '-'}
-
+ |
{#if item?.bear_ratio > (item?.neutral_ratio ?? 0) && item?.bear_ratio > (item?.bull_ratio ?? 0)}
{item?.bear_ratio?.toFixed(0)}% Bearish
@@ -769,6 +808,38 @@ $: {
{/if}
|
+
+ {#if item?.bid_ratio > (item?.midpoint_ratio ?? 0) && item?.bid_ratio > (item?.ask_ratio ?? 0)}
+
+ {item?.bid_ratio?.toFixed(0)}% Bid
+
+ {:else if item?.ask_ratio > (item?.midpoint_ratio ?? 0) && item?.ask_ratio > (item?.bid_ratio ?? 0)}
+
+ {item?.ask_ratio?.toFixed(0)}% Ask
+
+ {:else if item?.midpoint_ratio > (item?.ask_ratio ?? 0) && item?.midpoint_ratio > (item?.bid_ratio ?? 0)}
+
+ {item?.midpoint_ratio?.toFixed(0)}% Midpoint
+
+ {:else if item?.bid_ratio === item?.ask_ratio && item?.bid_ratio > (item?.midpoint_ratio ?? 0)}
+
+ {item?.bid_ratio?.toFixed(0)}% Bid/Ask Tie
+
+ {:else if item?.bid_ratio === item?.midpoint_ratio && item?.bid_ratio > (item?.ask_ratio ?? 0)}
+
+ {item?.bid_ratio?.toFixed(0)}% Bid/Neutral Tie
+
+ {:else if item?.ask_ratio === item?.midpoint_ratio && item?.ask_ratio > (item?.bid_ratio ?? 0)}
+
+ {item?.ask_ratio?.toFixed(0)}% Ask/Neutral Tie
+
+ {:else}
+
+ Equal Distribution
+
+ {/if}
+ |
+
{item?.otm_ratio?.toFixed(0)}%
|
@@ -924,6 +995,7 @@ $: {
Strike |
C/P |
Sent. |
+ Exec. |
Spot |
Price |
Prem. |
@@ -960,6 +1032,9 @@ $: {
{item?.sentiment}
|
+
+ {item?.execution_estimate}
+ |
{item?.underlying_price}
diff --git a/src/routes/price-alert/+page.svelte b/src/routes/price-alert/+page.svelte
index 8ee13afd..54fb853a 100644
--- a/src/routes/price-alert/+page.svelte
+++ b/src/routes/price-alert/+page.svelte
@@ -342,7 +342,7 @@ $: charNumber = $screenWidth < 640 ? 15 : 40;
|
| Symbol |
Company |
- Volume |
+ Volume |
Price when Created |
Price Target |
Current Price |
@@ -363,7 +363,7 @@ $: charNumber = $screenWidth < 640 ? 15 : 40;
{item?.name?.length > charNumber ? item?.name?.slice(0,charNumber) + "..." : item?.name}
-
+ |
{new Intl.NumberFormat("en", {
minimumFractionDigits: 2,
maximumFractionDigits: 2
@@ -431,7 +431,7 @@ $: charNumber = $screenWidth < 640 ? 15 : 40;
- Pro Subscription
+ Pro Subscription 🔥
@@ -442,30 +442,30 @@ $: charNumber = $screenWidth < 640 ? 15 : 40;
{/if}
- goto('/analysts')} class="w-full bg-[#141417] duration-100 ease-out sm:hover:text-white text-gray-400 sm:hover:border-gray-700 border border-gray-800 rounded-lg h-fit pb-4 mt-4 cursor-pointer">
+ goto('/watchlist')} class="w-full bg-[#141417] duration-100 ease-out sm:hover:text-white text-gray-400 sm:hover:border-gray-700 border border-gray-800 rounded-lg h-fit pb-4 mt-4 cursor-pointer">
- Wallstreet Analyst
+ Watchlist ⭐
- Get the latest top Wall Street analyst ratings.
+ Build your watchlist to keep track of their performance.
- goto('/politicians')} class="w-full bg-[#141417] duration-100 ease-out sm:hover:text-white text-gray-400 sm:hover:border-gray-700 border border-gray-800 rounded-lg h-fit pb-4 mt-4 cursor-pointer">
+ goto('/stock-screener')} class="w-full bg-[#141417] duration-100 ease-out sm:hover:text-white text-gray-400 sm:hover:border-gray-700 border border-gray-800 rounded-lg h-fit pb-4 mt-4 cursor-pointer">
- Congress Trading
+ Stock Screener 🔎
- Get the latest top Congress trading insights.
+ Build your Stock Screener to find profitable stocks.
diff --git a/src/routes/stocks/[tickerID]/+layout.svelte b/src/routes/stocks/[tickerID]/+layout.svelte
index 72a1f3ca..2ac9a04b 100644
--- a/src/routes/stocks/[tickerID]/+layout.svelte
+++ b/src/routes/stocks/[tickerID]/+layout.svelte
@@ -840,16 +840,16 @@ $: {
- |