update stock list
This commit is contained in:
parent
99992ec371
commit
e79737588c
@ -160,6 +160,8 @@
|
|||||||
},
|
},
|
||||||
{ name: "Change OI", rule: "changeOI", type: "decimalSign" },
|
{ name: "Change OI", rule: "changeOI", type: "decimalSign" },
|
||||||
{ name: "Total OI", rule: "totalOI", type: "int" },
|
{ name: "Total OI", rule: "totalOI", type: "int" },
|
||||||
|
{ name: "IV Rank", rule: "ivRank", type: "float" },
|
||||||
|
{ name: "Total Prem", rule: "totalPrem", type: "int" },
|
||||||
];
|
];
|
||||||
|
|
||||||
allRows = [...allRows, ...specificRows];
|
allRows = [...allRows, ...specificRows];
|
||||||
|
|||||||
@ -562,11 +562,6 @@
|
|||||||
>AI Analyst report
|
>AI Analyst report
|
||||||
</Card.Title>
|
</Card.Title>
|
||||||
{#if analystReport?.date}
|
{#if analystReport?.date}
|
||||||
<label
|
|
||||||
class="text-black bg-[#fff] inline-block ml-3 mt-1 font-semibold not-italic text-xs rounded px-2 py-0.5"
|
|
||||||
>New</label
|
|
||||||
>
|
|
||||||
|
|
||||||
<label
|
<label
|
||||||
class="hidden sm:inline-block text-white text-sm italic ml-auto"
|
class="hidden sm:inline-block text-white text-sm italic ml-auto"
|
||||||
>Updated {analystReport?.date}</label
|
>Updated {analystReport?.date}</label
|
||||||
|
|||||||
@ -210,6 +210,18 @@
|
|||||||
title: "Highest OI Change",
|
title: "Highest OI Change",
|
||||||
link: "/list/highest-open-interest-change",
|
link: "/list/highest-open-interest-change",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: "Highest OI",
|
||||||
|
link: "/list/highest-open-interest",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Highest IV Rank",
|
||||||
|
link: "/list/highest-option-iv-rank",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "Highest Option Premium",
|
||||||
|
link: "/list/highest-option-premium",
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
navigation = [...navigationIndustry, ...navigation];
|
navigation = [...navigationIndustry, ...navigation];
|
||||||
@ -290,14 +302,14 @@
|
|||||||
{/each}
|
{/each}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="border-b-[2px] w-full mb-7" />
|
<div class="border-b-[2px] w-full mb-4" />
|
||||||
|
|
||||||
<div class="flex justify-center w-full m-auto overflow-hidden">
|
<div class="flex justify-center w-full m-auto overflow-hidden">
|
||||||
<main class="w-full lg:w-3/4 lg:pr-10">
|
<main class="w-full lg:w-3/4 lg:pr-10">
|
||||||
<slot />
|
<slot />
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<aside class="hidden lg:block relative fixed w-1/4 -mt-4">
|
<aside class="hidden lg:block relative fixed w-1/4">
|
||||||
{#if data?.user?.tier !== "Pro" || data?.user?.freeTrial}
|
{#if data?.user?.tier !== "Pro" || data?.user?.freeTrial}
|
||||||
<div
|
<div
|
||||||
class="w-full text-white border border-gray-600 rounded-md h-fit pb-4 mt-4 cursor-pointer bg-primary sm:hover:bg-secondary transition ease-out duration-100"
|
class="w-full text-white border border-gray-600 rounded-md h-fit pb-4 mt-4 cursor-pointer bg-primary sm:hover:bg-secondary transition ease-out duration-100"
|
||||||
|
|||||||
@ -33,13 +33,6 @@
|
|||||||
>U.S. Companies With The Most FTD Shares</a
|
>U.S. Companies With The Most FTD Shares</a
|
||||||
>
|
>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
|
||||||
<a
|
|
||||||
class="text-blue-400 sm:hover:text-white"
|
|
||||||
href="/list/highest-open-interest-change"
|
|
||||||
>U.S. Companies with Highest OI Change</a
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -139,8 +132,40 @@
|
|||||||
|
|
||||||
<!--End Index Group-->
|
<!--End Index Group-->
|
||||||
|
|
||||||
<!--Start Other Lists-->
|
<div class="text-white">
|
||||||
|
<h2 class="mb-2 text-xl font-bold pt-10">Options Lists</h2>
|
||||||
|
<ul
|
||||||
|
class="list-outside list-disc space-y-1 p-1 pl-6 md:columns-2 md:gap-x-8 md:text-lg"
|
||||||
|
>
|
||||||
|
<li>
|
||||||
|
<a
|
||||||
|
class="text-blue-400 sm:hover:text-white"
|
||||||
|
href="/list/highest-open-interest">Companies with Highest OI</a
|
||||||
|
>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a
|
||||||
|
class="text-blue-400 sm:hover:text-white"
|
||||||
|
href="/list/highest-open-interest-change"
|
||||||
|
>Companies with Highest OI Change</a
|
||||||
|
>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a
|
||||||
|
class="text-blue-400 sm:hover:text-white"
|
||||||
|
href="/list/highest-option-iv-rank">Companies with Highest IV Rank</a
|
||||||
|
>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a
|
||||||
|
class="text-blue-400 sm:hover:text-white"
|
||||||
|
href="/list/highest-option-premium">Companies with Highest Premium</a
|
||||||
|
>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!--Start Other Lists-->
|
||||||
<div class="text-white">
|
<div class="text-white">
|
||||||
<h2 class="mb-2 text-xl font-bold pt-10">Other Lists</h2>
|
<h2 class="mb-2 text-xl font-bold pt-10">Other Lists</h2>
|
||||||
<ul
|
<ul
|
||||||
|
|||||||
25
src/routes/list/highest-open-interest/+page.server.ts
Normal file
25
src/routes/list/highest-open-interest/+page.server.ts
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
export const load = async ({ locals }) => {
|
||||||
|
|
||||||
|
const getStocks = async () => {
|
||||||
|
const { apiKey, apiURL } = locals;
|
||||||
|
const postData = { filterList: 'highest-open-interest' };
|
||||||
|
|
||||||
|
const response = await fetch(apiURL + "/list-category", {
|
||||||
|
method: "POST",
|
||||||
|
headers: {
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
"X-API-KEY": apiKey,
|
||||||
|
},
|
||||||
|
body: JSON.stringify(postData),
|
||||||
|
});
|
||||||
|
|
||||||
|
const output = await response.json();
|
||||||
|
|
||||||
|
return output;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Make sure to return a promise
|
||||||
|
return {
|
||||||
|
getStocks: await getStocks(),
|
||||||
|
};
|
||||||
|
};
|
||||||
34
src/routes/list/highest-open-interest/+page.svelte
Normal file
34
src/routes/list/highest-open-interest/+page.svelte
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
import Table from "$lib/components/Table/Table.svelte";
|
||||||
|
import Infobox from "$lib/components/Infobox.svelte";
|
||||||
|
|
||||||
|
export let data;
|
||||||
|
|
||||||
|
const defaultList = [
|
||||||
|
{ name: "Total OI", rule: "totalOI" },
|
||||||
|
{ name: "Change OI", rule: "changeOI" },
|
||||||
|
{ name: "Price", rule: "price" },
|
||||||
|
{ name: "% Change", rule: "changesPercentage" },
|
||||||
|
{ name: "Market Cap", rule: "marketCap" },
|
||||||
|
];
|
||||||
|
|
||||||
|
const excludedRules = new Set([
|
||||||
|
"volume",
|
||||||
|
"price",
|
||||||
|
"changesPercentage",
|
||||||
|
"revenue",
|
||||||
|
"eps",
|
||||||
|
"marketCap",
|
||||||
|
"changeOI",
|
||||||
|
"totalOI",
|
||||||
|
]);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<section class="w-full overflow-hidden m-auto">
|
||||||
|
<Infobox
|
||||||
|
text="A list of stocks with the highest open interest (OI). Open interest represents the total number of outstanding options contracts available for trading."
|
||||||
|
/>
|
||||||
|
|
||||||
|
<!-- Page wrapper -->
|
||||||
|
<Table {data} rawData={data?.getStocks} {excludedRules} {defaultList} />
|
||||||
|
</section>
|
||||||
24
src/routes/list/highest-option-iv-rank/+page.server.ts
Normal file
24
src/routes/list/highest-option-iv-rank/+page.server.ts
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
export const load = async ({ locals }) => {
|
||||||
|
|
||||||
|
const getStocks = async () => {
|
||||||
|
const { apiKey, apiURL } = locals;
|
||||||
|
const postData = { filterList: 'highest-option-iv-rank' };
|
||||||
|
|
||||||
|
const response = await fetch(apiURL + "/list-category", {
|
||||||
|
method: "POST",
|
||||||
|
headers: {
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
"X-API-KEY": apiKey,
|
||||||
|
},
|
||||||
|
body: JSON.stringify(postData),
|
||||||
|
});
|
||||||
|
|
||||||
|
const output = await response.json();
|
||||||
|
return output;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Make sure to return a promise
|
||||||
|
return {
|
||||||
|
getStocks: await getStocks(),
|
||||||
|
};
|
||||||
|
};
|
||||||
34
src/routes/list/highest-option-iv-rank/+page.svelte
Normal file
34
src/routes/list/highest-option-iv-rank/+page.svelte
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
import Table from "$lib/components/Table/Table.svelte";
|
||||||
|
import Infobox from "$lib/components/Infobox.svelte";
|
||||||
|
|
||||||
|
export let data;
|
||||||
|
|
||||||
|
const defaultList = [
|
||||||
|
{ name: "IV Rank", rule: "ivRank" },
|
||||||
|
{ name: "Total OI", rule: "totalOI" },
|
||||||
|
{ name: "Price", rule: "price" },
|
||||||
|
{ name: "% Change", rule: "changesPercentage" },
|
||||||
|
{ name: "Market Cap", rule: "marketCap" },
|
||||||
|
];
|
||||||
|
|
||||||
|
const excludedRules = new Set([
|
||||||
|
"volume",
|
||||||
|
"price",
|
||||||
|
"changesPercentage",
|
||||||
|
"revenue",
|
||||||
|
"eps",
|
||||||
|
"marketCap",
|
||||||
|
"ivRank",
|
||||||
|
"totalOI",
|
||||||
|
]);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<section class="w-full overflow-hidden m-auto">
|
||||||
|
<Infobox
|
||||||
|
text="A list of stocks with the highest Implied Volatility (IV) Rank and a minimum of 1 million open interest (OI). IV Rank measures a stock's current implied volatility compared to its range over a specific period, helping identify potential opportunities in the options market."
|
||||||
|
/>
|
||||||
|
|
||||||
|
<!-- Page wrapper -->
|
||||||
|
<Table {data} rawData={data?.getStocks} {excludedRules} {defaultList} />
|
||||||
|
</section>
|
||||||
24
src/routes/list/highest-option-premium/+page.server.ts
Normal file
24
src/routes/list/highest-option-premium/+page.server.ts
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
export const load = async ({ locals }) => {
|
||||||
|
|
||||||
|
const getStocks = async () => {
|
||||||
|
const { apiKey, apiURL } = locals;
|
||||||
|
const postData = { filterList: 'highest-option-premium' };
|
||||||
|
|
||||||
|
const response = await fetch(apiURL + "/list-category", {
|
||||||
|
method: "POST",
|
||||||
|
headers: {
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
"X-API-KEY": apiKey,
|
||||||
|
},
|
||||||
|
body: JSON.stringify(postData),
|
||||||
|
});
|
||||||
|
|
||||||
|
const output = await response.json();
|
||||||
|
return output;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Make sure to return a promise
|
||||||
|
return {
|
||||||
|
getStocks: await getStocks(),
|
||||||
|
};
|
||||||
|
};
|
||||||
35
src/routes/list/highest-option-premium/+page.svelte
Normal file
35
src/routes/list/highest-option-premium/+page.svelte
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
import Table from "$lib/components/Table/Table.svelte";
|
||||||
|
import Infobox from "$lib/components/Infobox.svelte";
|
||||||
|
|
||||||
|
export let data;
|
||||||
|
|
||||||
|
const defaultList = [
|
||||||
|
{ name: "Total Prem", rule: "totalPrem" },
|
||||||
|
|
||||||
|
{ name: "IV Rank", rule: "ivRank" },
|
||||||
|
{ name: "Price", rule: "price" },
|
||||||
|
{ name: "% Change", rule: "changesPercentage" },
|
||||||
|
{ name: "Market Cap", rule: "marketCap" },
|
||||||
|
];
|
||||||
|
|
||||||
|
const excludedRules = new Set([
|
||||||
|
"volume",
|
||||||
|
"price",
|
||||||
|
"changesPercentage",
|
||||||
|
"revenue",
|
||||||
|
"eps",
|
||||||
|
"marketCap",
|
||||||
|
"ivRank",
|
||||||
|
"totalPrem",
|
||||||
|
]);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<section class="w-full overflow-hidden m-auto">
|
||||||
|
<Infobox
|
||||||
|
text="A list of stocks with the highest Implied Volatility (IV) Rank and a minimum of 1 million open interest (OI). IV Rank measures a stock's current implied volatility compared to its range over a specific period, helping identify potential opportunities in the options market."
|
||||||
|
/>
|
||||||
|
|
||||||
|
<!-- Page wrapper -->
|
||||||
|
<Table {data} rawData={data?.getStocks} {excludedRules} {defaultList} />
|
||||||
|
</section>
|
||||||
@ -1,6 +1,6 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Table from "$lib/components/Table/Table.svelte";
|
import Table from "$lib/components/Table/Table.svelte";
|
||||||
|
import Infobox from "$lib/components/Infobox.svelte";
|
||||||
export let data;
|
export let data;
|
||||||
|
|
||||||
const defaultList = [
|
const defaultList = [
|
||||||
@ -12,24 +12,12 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<section class="w-full overflow-hidden m-auto">
|
<section class="w-full overflow-hidden m-auto">
|
||||||
<div
|
<Infobox
|
||||||
class="w-full sm:flex sm:flex-row sm:items-center m-auto text-gray-100 border border-gray-800 sm:rounded-md h-auto p-5 mb-4"
|
text="This list highlights top-rated dividend stocks, each with an average 'buy'
|
||||||
>
|
or 'strong buy' rating from at least 10 analysts. Every stock offers a
|
||||||
<svg
|
|
||||||
class="w-5 h-5 inline-block sm:mr-2 flex-shrink-0"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
viewBox="0 0 256 256"
|
|
||||||
><path
|
|
||||||
fill="#fff"
|
|
||||||
d="M128 24a104 104 0 1 0 104 104A104.11 104.11 0 0 0 128 24m-4 48a12 12 0 1 1-12 12a12 12 0 0 1 12-12m12 112a16 16 0 0 1-16-16v-40a8 8 0 0 1 0-16a16 16 0 0 1 16 16v40a8 8 0 0 1 0 16"
|
|
||||||
/></svg
|
|
||||||
>
|
|
||||||
|
|
||||||
This list highlights top-rated dividend stocks, each with an average "buy"
|
|
||||||
or "strong buy" rating from at least 10 analysts. Every stock offers a
|
|
||||||
dividend yield of at least 2% and a payout ratio below 60%, indicating
|
dividend yield of at least 2% and a payout ratio below 60%, indicating
|
||||||
sustainable dividends.
|
sustainable dividends."
|
||||||
</div>
|
/>
|
||||||
|
|
||||||
<!-- Page wrapper -->
|
<!-- Page wrapper -->
|
||||||
<Table {data} rawData={data?.getDividendStocks} {defaultList} />
|
<Table {data} rawData={data?.getDividendStocks} {defaultList} />
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user