add learning center
This commit is contained in:
parent
cc588d559c
commit
1895a37b3e
@ -116,15 +116,13 @@
|
||||
>Blog</a
|
||||
>
|
||||
</li>
|
||||
<!--
|
||||
<li class="mt-2 inline-block mr-2 md:block md:mr-0">
|
||||
<a
|
||||
href="/donation"
|
||||
href="/learning-center"
|
||||
class="no-underline sm:hover:underline text-gray-100 sm:hover:text-blue-400"
|
||||
>Learning Center</a
|
||||
>
|
||||
</li>
|
||||
-->
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
20
src/routes/learning-center/+page.server.ts
Normal file
20
src/routes/learning-center/+page.server.ts
Normal file
@ -0,0 +1,20 @@
|
||||
|
||||
export const load = async ({locals}) => {
|
||||
const { pb } = locals;
|
||||
|
||||
const getAllBlogPost = async () => {
|
||||
|
||||
|
||||
// make the POST request to the endpoint
|
||||
const output = await pb.collection("tutorials").getFullList({
|
||||
sort: "-updated",
|
||||
});
|
||||
|
||||
return output;
|
||||
};
|
||||
|
||||
// Make sure to return a promise
|
||||
return {
|
||||
getAllBlogPost: await getAllBlogPost(),
|
||||
};
|
||||
};
|
||||
104
src/routes/learning-center/+page.svelte
Normal file
104
src/routes/learning-center/+page.svelte
Normal file
@ -0,0 +1,104 @@
|
||||
<script lang="ts">
|
||||
import { getImageURL, convertToSlug } from "$lib/utils";
|
||||
import SEO from "$lib/components/SEO.svelte";
|
||||
import Infobox from "$lib/components/Infobox.svelte";
|
||||
export let data;
|
||||
|
||||
let allBlogPosts = data?.getAllBlogPost;
|
||||
</script>
|
||||
|
||||
<SEO
|
||||
title="Learning Center"
|
||||
description="Learn and Understand the features and datasets of Stockner to better navigate the stock market."
|
||||
/>
|
||||
|
||||
<section
|
||||
class="w-full max-w-3xl sm:max-w-[1400px] overflow-hidden min-h-screen pb-20 pt-5 px-4 lg:px-3"
|
||||
>
|
||||
<div class="w-full overflow-hidden m-auto mt-5">
|
||||
<div class="sm:p-0 flex justify-center w-full m-auto overflow-hidden">
|
||||
<div
|
||||
class="relative flex justify-center items-start overflow-hidden w-full"
|
||||
>
|
||||
<main class="w-full">
|
||||
<div class="mb-6 border-b-[2px]">
|
||||
<h1 class="mb-1 text-white text-2xl sm:text-3xl font-bold">
|
||||
Learning Center
|
||||
</h1>
|
||||
</div>
|
||||
|
||||
<div class="w-full grid grid-cols-1 sm:grid-cols-3 sm:gap-5">
|
||||
{#if allBlogPosts?.length !== 0}
|
||||
{#each allBlogPosts as item}
|
||||
<div
|
||||
class="flex flex-col overflow-hidden rounded shadow-lg sm:hover:shadow-2xl border border-gray-600"
|
||||
>
|
||||
<div class="flex-shrink-0">
|
||||
<a href={"/learning-center/article/" + convertToSlug(item?.title)}
|
||||
><img
|
||||
class="h-48 w-full object-cover"
|
||||
src={getImageURL(
|
||||
item?.collectionId,
|
||||
item?.id,
|
||||
item?.cover,
|
||||
)}
|
||||
alt="Stock Analysis Blog Post Wallpaper"
|
||||
loading="lazy"
|
||||
/></a
|
||||
>
|
||||
</div>
|
||||
<div
|
||||
class="flex flex-1 flex-col justify-between bg-table p-4 xs:p-5 sm:p-6"
|
||||
>
|
||||
<div class="flex-1">
|
||||
<a
|
||||
href={"/learning-center/article/" + convertToSlug(item?.title)}
|
||||
class="block"
|
||||
><h2 class="text-xl font-semibold text-white">
|
||||
{item?.title}
|
||||
</h2>
|
||||
<p class="mt-3 text-sm text-white">
|
||||
{item?.abstract.length > 250
|
||||
? item?.abstract?.slice(0, 250) + "..."
|
||||
: item?.abstract}
|
||||
</p></a
|
||||
>
|
||||
</div>
|
||||
<div class="mt-3 flex items-center">
|
||||
<div class="flex space-x-1 text-sm text-white">
|
||||
<span class="font-semibold">Published:</span> <time datetime={item?.created} class="ml-1">
|
||||
{new Date(item?.created)?.toLocaleString("en-US", {
|
||||
month: "short",
|
||||
day: "numeric",
|
||||
year: "numeric",
|
||||
daySuffix: "2-digit",
|
||||
})}</time
|
||||
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex flex-col text-white mt-3">
|
||||
<div class="flex flex-wrap gap-x-2 gap-y-3 ">
|
||||
{#each item?.tags as tags}
|
||||
<label
|
||||
class="px-2 text-sm py-1 text-black rounded bg-white ml-0"
|
||||
>
|
||||
{tags}
|
||||
</label>
|
||||
{/each}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/each}
|
||||
{:else}
|
||||
<div class="w-full">
|
||||
<Infobox text="No blog posts found" />
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
25
src/routes/learning-center/article/[slug]/+page.server.ts
Normal file
25
src/routes/learning-center/article/[slug]/+page.server.ts
Normal file
@ -0,0 +1,25 @@
|
||||
import { convertToSlug } from "$lib/utils";
|
||||
|
||||
export const load = async ({ locals, params }) => {
|
||||
const { pb } = locals;
|
||||
|
||||
const getArticle = async () => {
|
||||
// Make the POST request to the endpoint
|
||||
const output = await pb.collection("tutorials").getFullList({
|
||||
sort: "-created",
|
||||
});
|
||||
|
||||
|
||||
// Find the matching article based on params.slug
|
||||
const matchingArticle = output?.find(
|
||||
(article) => convertToSlug(article?.title) === params?.slug
|
||||
);
|
||||
|
||||
return matchingArticle;
|
||||
};
|
||||
|
||||
// Make sure to return a promise
|
||||
return {
|
||||
getArticle: await getArticle(),
|
||||
};
|
||||
};
|
||||
122
src/routes/learning-center/article/[slug]/+page.svelte
Normal file
122
src/routes/learning-center/article/[slug]/+page.svelte
Normal file
@ -0,0 +1,122 @@
|
||||
<script>
|
||||
import { getImageURL } from "$lib/utils";
|
||||
import SEO from "$lib/components/SEO.svelte";
|
||||
export let data;
|
||||
|
||||
const article = data?.getArticle;
|
||||
</script>
|
||||
|
||||
<SEO
|
||||
title={article?.title}
|
||||
description={article?.abstract}
|
||||
image={getImageURL(article?.collectionId, article?.id, article?.cover)}
|
||||
/>
|
||||
|
||||
<div>
|
||||
<main id="main" class="mt-2 text-white min-h-screen pb-40">
|
||||
<div class="mx-auto max-w-screen-xl">
|
||||
<img
|
||||
src={getImageURL(article?.collectionId, article?.id, article?.cover)}
|
||||
class="h-[200px] w-full object-cover lg:h-[350px]"
|
||||
loading="lazy"
|
||||
alt="Wallpaper"
|
||||
/>
|
||||
<div class="lg:flex">
|
||||
<article
|
||||
class="z-5 relative mx-1 -mt-10 rounded-t-md bg-default p-3 xs:p-4 lg:-mt-16 lg:ml-3 lg:p-5 xl:mx-4"
|
||||
>
|
||||
<header class="pb-3 border-b-[2px] border-white w-full min-w-[850px] max-w-[850px]">
|
||||
<h1 class="mb-3 text-3xl font-bold text-white md:text-4xl ">
|
||||
{article?.title}
|
||||
</h1>
|
||||
<div class="text-white">
|
||||
<div>
|
||||
Last Updated: {new Date(article?.updated)?.toLocaleString(
|
||||
"en-US",
|
||||
{
|
||||
month: "short",
|
||||
day: "numeric",
|
||||
year: "numeric",
|
||||
daySuffix: "2-digit",
|
||||
},
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex flex-col text-white mt-3">
|
||||
<div class="flex flex-wrap gap-x-2 gap-y-3 ">
|
||||
{#each article?.tags as tags}
|
||||
<label
|
||||
class="px-2 text-sm py-1 text-black rounded bg-white ml-0"
|
||||
>
|
||||
{tags}
|
||||
</label>
|
||||
{/each}
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="text-lg mt-4">
|
||||
<div class="content">
|
||||
{@html article?.description}
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<div class="mt-5 lg:w-full">
|
||||
<div
|
||||
class="flex flex-wrap gap-y-5 justify-center px-5 lg:sticky lg:top-20 lg:px-0"
|
||||
>
|
||||
{#if !data?.user}
|
||||
<div
|
||||
class="w-full text-white border border-gray-600 rounded-md h-fit bg-inherit lg:mx-0 lg:w-[300px] xl:w-[360px]"
|
||||
>
|
||||
<div class="space-y-6 p-6">
|
||||
<h4 class="text-xl font-semibold sm:text-2xl sm:font-bold">
|
||||
Stay informed in just 2 minutes
|
||||
</h4>
|
||||
<p class="text-base text-white lg:text-lg">
|
||||
Get a daily email with the top market-moving news in bullet
|
||||
point format, for free.
|
||||
</p>
|
||||
<div>
|
||||
<a
|
||||
href="/register"
|
||||
class=" btn bg-[#fff] border border-gray-600 sm:hover:bg-gray-300 transition duration-100 btn-md w-full rounded-md m-auto text-black font-semibold text-[1rem]"
|
||||
>
|
||||
<span class="text-[1rem]">Sign Up</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
<a
|
||||
href="/watchlist/stocks"
|
||||
class="w-full text-white border border-gray-600 rounded-md h-fit bg-inherit sm:hover:bg-secondary transition ease-out duration-100 lg:mx-0 lg:w-[300px] xl:w-[360px]"
|
||||
>
|
||||
<div class="space-y-3 p-6">
|
||||
<h4 class="text-xl font-semibold">Watchlist</h4>
|
||||
<p class="text-base text-white lg:text-lg">
|
||||
Build your watchlist to keep track of their performance
|
||||
</p>
|
||||
</div>
|
||||
</a>
|
||||
<a
|
||||
href="/analysts/top-stocks"
|
||||
class="w-full text-white border border-gray-600 rounded-md h-fit bg-inherit sm:hover:bg-secondary transition ease-out duration-100 lg:mx-0 lg:w-[300px] xl:w-[360px]"
|
||||
>
|
||||
<div class="space-y-3 p-6">
|
||||
<h4 class="text-xl font-semibold">Top Stocks</h4>
|
||||
<p class="text-base text-white lg:text-lg">
|
||||
Get the latest Top Wall Street Analyst Ratings
|
||||
</p>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
@ -1,614 +0,0 @@
|
||||
<script>
|
||||
import { numberOfUnreadNotification } from "$lib/store";
|
||||
import UpgradeToPro from "$lib/components/UpgradeToPro.svelte";
|
||||
import Katex from "$lib/components/Katex.svelte";
|
||||
//import Chart from '$lib/components/Chart.svelte';
|
||||
//import greeks from "greeks";
|
||||
|
||||
export let data;
|
||||
|
||||
// Sample option contract parameters
|
||||
/*
|
||||
const strikePrice = 100; // Strike price of the option
|
||||
const timeToExpiration = 30 / 365; // Time to expiration in years (30 days)
|
||||
const volatility = 0.25; // Volatility of the underlying asset
|
||||
const riskFreeRate = 0.001; // Risk-free interest rate
|
||||
|
||||
// Generate sample underlying stock prices
|
||||
const underlyingPrices = Array.from({ length: 50 }, (_, i) => 80 + i); // Sample prices from 80 to 129
|
||||
|
||||
let testList = [];
|
||||
for(const price of underlyingPrices) {
|
||||
testList.push(greeks.getTheta(price, strikePrice, timeToExpiration, volatility, riskFreeRate, "call"))
|
||||
}
|
||||
|
||||
|
||||
const options = {
|
||||
silent: true,
|
||||
animation: false,
|
||||
grid: {
|
||||
left:'2%',
|
||||
right: '2%',
|
||||
bottom:'5%',
|
||||
containLabel: true
|
||||
},
|
||||
xAxis: {
|
||||
show: false, // Hide the xAxis
|
||||
type: 'category',
|
||||
data: underlyingPrices
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value',
|
||||
splitLine: {
|
||||
show: false,
|
||||
},
|
||||
},
|
||||
series: [
|
||||
{
|
||||
data: testList,
|
||||
showSymbol: false,
|
||||
type: 'line'
|
||||
}
|
||||
]
|
||||
};
|
||||
*/
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Long
|
||||
Call Options · stocknear</title
|
||||
>
|
||||
<meta
|
||||
name="description"
|
||||
content="Latest articles on stocks, finance and investing"
|
||||
/>
|
||||
<!-- Other meta tags -->
|
||||
<meta property="og:title" content="Long Call Options" />
|
||||
<meta
|
||||
property="og:description"
|
||||
content="Understand what call options are and when they become profitable in your trading strategy."
|
||||
/>
|
||||
<meta
|
||||
property="og:image"
|
||||
content="https://stocknear-pocketbase.s3.amazonaws.com/logo/meta_logo.jpg"
|
||||
/>
|
||||
<meta property="og:type" content="article" />
|
||||
<!-- Add more Open Graph meta tags as needed -->
|
||||
|
||||
<!-- Twitter specific meta tags -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content="Long Call Options" />
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content="Understand what call options are and when they become profitable in your trading strategy."
|
||||
/>
|
||||
<meta
|
||||
name="twitter:image"
|
||||
content="https://stocknear-pocketbase.s3.amazonaws.com/logo/meta_logo.jpg"
|
||||
/>
|
||||
<!-- Add more Twitter meta tags as needed -->
|
||||
</svelte:head>
|
||||
|
||||
<section
|
||||
class="w-full max-w-6xl m-auto pt-5 pb-60 min-h-screen overflow-hidden supports-[overflow:clip]:overflow-clip"
|
||||
>
|
||||
<div class="text-sm breadcrumbs ml-4 sm:ml-0">
|
||||
<ul>
|
||||
<li><a href="/" class="text-gray-300">Home</a></li>
|
||||
<li class="text-gray-300">Long Call Options</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<main class="grow m-auto">
|
||||
<div class="w-full max-w-4xl">
|
||||
<div class="sm:flex sm:justify-start">
|
||||
<!-- Main content -->
|
||||
<div
|
||||
class="md:grow pt-6 pb-12 w-full sm:mr-4 rounded-2xl sm:rounded-none"
|
||||
>
|
||||
<div class="sm:pr-5">
|
||||
<!--Start Title-->
|
||||
<h1
|
||||
class="flex justify-center sm:justify-start mt-5 text-white font-bold text-4xl p-3 mb-6 sm:mb-3"
|
||||
>
|
||||
Long Call Options
|
||||
</h1>
|
||||
<!--End Title-->
|
||||
|
||||
<!--
|
||||
<div class="app w-full h-[400px] sm:h-[500px]">
|
||||
<Chart options={options} class="chart" />
|
||||
</div>
|
||||
-->
|
||||
|
||||
<!--Start Paragraph-->
|
||||
<div class="text-white text-lg pl-3 pr-3">
|
||||
A call option is one of the two fundamental types of options. The
|
||||
holder of a call option has the option, but not the obligation, to
|
||||
purchase 100 shares of the underlying stock at the strike price in
|
||||
the future.
|
||||
<br />
|
||||
<br />
|
||||
It is useful to understand some basic terminology regarding the strike
|
||||
of a call option:
|
||||
<ol class="text-white list-disc ml-5 sm:ml-3 p-3 text-[1rem]">
|
||||
<li class="p-1">
|
||||
<span class="font-semibold">In-The-Money (ITM):</span> The
|
||||
stock price is <span class="italic">greater</span> than the strike
|
||||
price.
|
||||
</li>
|
||||
<li class="p-1">
|
||||
<span class="font-semibold">At-The-Money (ATM):</span> The
|
||||
stock price is <span class="italic">equal</span> to the strike
|
||||
price.
|
||||
</li>
|
||||
<li class="p-1">
|
||||
<span class="font-semibold">Out-of-the-money (OTM):</span> The
|
||||
stock price is <span class="italic">less</span> than the strike
|
||||
price.
|
||||
</li>
|
||||
</ol>
|
||||
<div
|
||||
class="flex justify-center items-center w-full sm:w-11/12 pb-10 pt-7 sm:p-10"
|
||||
>
|
||||
<svg
|
||||
class="w-full h-full rounded-2xl"
|
||||
version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 1120.3311378717422 595.9446960210801"
|
||||
filter="invert(93%) hue-rotate(180deg)"
|
||||
>
|
||||
<!-- svg-source:excalidraw -->
|
||||
<defs>
|
||||
<style class="style-fonts">
|
||||
@font-face {
|
||||
font-family: "Virgil";
|
||||
src: url("https://excalidraw.com/Virgil.woff2");
|
||||
}
|
||||
@font-face {
|
||||
font-family: "Cascadia";
|
||||
src: url("https://excalidraw.com/Cascadia.woff2");
|
||||
}
|
||||
@font-face {
|
||||
font-family: "Assistant";
|
||||
src: url("https://excalidraw.com/Assistant-Regular.woff2");
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<g stroke-linecap="round"
|
||||
><g
|
||||
transform="translate(127 423.94469602108) rotate(0 479.5 -1.5)"
|
||||
><path
|
||||
d="M-0.5 -0.74 C159.26 -1.58, 799.13 -3.81, 958.85 -4.01 M1.44 1.49 C161 1.28, 798.05 -2.14, 957.82 -3"
|
||||
stroke="#1e1e1e"
|
||||
stroke-width="2"
|
||||
fill="none"
|
||||
></path></g
|
||||
></g
|
||||
><mask></mask><g stroke-linecap="round"
|
||||
><g
|
||||
transform="translate(148 513.9446960210801) rotate(0 265 -2.5)"
|
||||
><path
|
||||
d="M-0.42 -0.45 C87.93 -1.38, 442.49 -4.97, 530.7 -5.72 M1.56 -1.73 C89.76 -2.5, 441.85 -4.25, 530.12 -4.56"
|
||||
stroke="#ff0000"
|
||||
stroke-width="4"
|
||||
fill="none"
|
||||
></path></g
|
||||
></g
|
||||
><mask></mask><g stroke-linecap="round"
|
||||
><g
|
||||
transform="translate(1026 141.94469602108) rotate(0 -173.5 183)"
|
||||
><path
|
||||
d="M0.7 0.28 C-57.08 61.32, -288 304.29, -345.84 365.13 M-0.4 -0.62 C-58.31 60.65, -288.45 305.06, -346.18 366.2"
|
||||
stroke="#2f9e44"
|
||||
stroke-width="4"
|
||||
fill="none"
|
||||
></path></g
|
||||
></g
|
||||
><mask></mask><g stroke-linecap="round"
|
||||
><g
|
||||
transform="translate(679 506.94469602108) rotate(0 0 -249)"
|
||||
><path
|
||||
d="M-0.66 -0.34 C-0.4 -83.29, 0.31 -413.86, 0.52 -496.94"
|
||||
stroke="#1e1e1e"
|
||||
stroke-width="1.5"
|
||||
fill="none"
|
||||
stroke-dasharray="8 9"
|
||||
></path></g
|
||||
></g
|
||||
><mask></mask><g
|
||||
transform="translate(10 90.94469602108) rotate(0 52.474998474121094 22.5)"
|
||||
><text
|
||||
x="0"
|
||||
y="31.536"
|
||||
font-family="Virgil, Segoe UI Emoji"
|
||||
font-size="36px"
|
||||
fill="#1e1e1e"
|
||||
text-anchor="start"
|
||||
style="white-space: pre;"
|
||||
direction="ltr"
|
||||
dominant-baseline="alphabetic">Profit</text
|
||||
></g
|
||||
><g
|
||||
transform="translate(23 479.94469602108) rotate(0 40.3125 22.5)"
|
||||
><text
|
||||
x="0"
|
||||
y="31.536"
|
||||
font-family="Virgil, Segoe UI Emoji"
|
||||
font-size="36px"
|
||||
fill="#1e1e1e"
|
||||
text-anchor="start"
|
||||
style="white-space: pre;"
|
||||
direction="ltr"
|
||||
dominant-baseline="alphabetic">Loss</text
|
||||
></g
|
||||
><g
|
||||
transform="translate(575 540.9446960210801) rotate(0 100.36250305175781 22.5)"
|
||||
><text
|
||||
x="0"
|
||||
y="31.536"
|
||||
font-family="Virgil, Segoe UI Emoji"
|
||||
font-size="36px"
|
||||
fill="#1e1e1e"
|
||||
text-anchor="start"
|
||||
style="white-space: pre;"
|
||||
direction="ltr"
|
||||
dominant-baseline="alphabetic">Stock Price</text
|
||||
></g
|
||||
><g stroke-linecap="round"
|
||||
><g
|
||||
transform="translate(959 413.94469602108) rotate(0 -48.5 -43.5)"
|
||||
><path
|
||||
d="M0.84 -0.95 C-15.36 -15.56, -81.71 -72.88, -97.96 -87.04"
|
||||
stroke="#2f9e44"
|
||||
stroke-width="2.5"
|
||||
fill="none"
|
||||
stroke-dasharray="8 10"
|
||||
></path></g
|
||||
></g
|
||||
><mask></mask><g stroke-linecap="round"
|
||||
><g
|
||||
transform="translate(915 267.94469602108) rotate(0 82 77)"
|
||||
><path
|
||||
d="M-0.95 0.02 C26.52 25.87, 136.81 128.6, 164.2 154.09"
|
||||
stroke="#2f9e44"
|
||||
stroke-width="2.5"
|
||||
fill="none"
|
||||
stroke-dasharray="8 10"
|
||||
></path></g
|
||||
></g
|
||||
><mask></mask><g stroke-linecap="round"
|
||||
><g
|
||||
transform="translate(813 374.94469602108) rotate(0 29.5 22.5)"
|
||||
><path
|
||||
d="M0.31 -0.42 C10.13 7, 48.83 36.42, 58.48 44.13"
|
||||
stroke="#2f9e44"
|
||||
stroke-width="2.5"
|
||||
fill="none"
|
||||
stroke-dasharray="8 10"
|
||||
></path></g
|
||||
></g
|
||||
><mask></mask><g stroke-linecap="round"
|
||||
><g
|
||||
transform="translate(977 201.94469602108) rotate(0 66.5 59)"
|
||||
><path
|
||||
d="M-0.85 -0.02 C21.37 19.8, 110.88 98.76, 133.33 118.36"
|
||||
stroke="#2f9e44"
|
||||
stroke-width="2.5"
|
||||
fill="none"
|
||||
stroke-dasharray="8 10"
|
||||
></path></g
|
||||
></g
|
||||
><mask></mask><g stroke-linecap="round"
|
||||
><g
|
||||
transform="translate(156 508.94469602108) rotate(0 49 -41)"
|
||||
><path
|
||||
d="M0.7 -0.18 C16.79 -13.9, 80.94 -68.33, 97.24 -81.8"
|
||||
stroke="#ff0000"
|
||||
stroke-width="2.5"
|
||||
fill="none"
|
||||
stroke-dasharray="8 10"
|
||||
></path></g
|
||||
></g
|
||||
><mask></mask><g stroke-linecap="round"
|
||||
><g
|
||||
transform="translate(216.03025395870213 508.933536529541) rotate(0 49 -41)"
|
||||
><path
|
||||
d="M0.91 0.03 C17.17 -13.64, 81.88 -67.94, 98.22 -81.7"
|
||||
stroke="#ee5365"
|
||||
stroke-width="2.5"
|
||||
fill="none"
|
||||
stroke-dasharray="8 10"
|
||||
></path></g
|
||||
></g
|
||||
><mask></mask><g stroke-linecap="round"
|
||||
><g
|
||||
transform="translate(290.03025395870213 506.933536529541) rotate(0 49 -41)"
|
||||
><path
|
||||
d="M-0.19 0.1 C16.41 -13.67, 82.78 -69.24, 99.08 -83.02"
|
||||
stroke="#ff0000"
|
||||
stroke-width="2.5"
|
||||
fill="none"
|
||||
stroke-dasharray="8 10"
|
||||
></path></g
|
||||
></g
|
||||
><mask></mask><g stroke-linecap="round"
|
||||
><g
|
||||
transform="translate(363.03025395870213 506.933536529541) rotate(0 49 -41)"
|
||||
><path
|
||||
d="M-0.92 -0.68 C15.55 -14.42, 82.54 -69.14, 99.14 -82.56"
|
||||
stroke="#ff0000"
|
||||
stroke-width="2.5"
|
||||
fill="none"
|
||||
stroke-dasharray="8 10"
|
||||
></path></g
|
||||
></g
|
||||
><mask></mask><g stroke-linecap="round"
|
||||
><g
|
||||
transform="translate(447.03025395870213 507.933536529541) rotate(0 49 -41)"
|
||||
><path
|
||||
d="M0.31 0.3 C16.93 -13.51, 82.32 -68.65, 98.61 -82.27"
|
||||
stroke="#ff0000"
|
||||
stroke-width="2.5"
|
||||
fill="none"
|
||||
stroke-dasharray="8 10"
|
||||
></path></g
|
||||
></g
|
||||
><mask></mask><g stroke-linecap="round"
|
||||
><g
|
||||
transform="translate(533.0302539587021 508.933536529541) rotate(0 49 -41)"
|
||||
><path
|
||||
d="M-0.2 -0.54 C16.08 -14.31, 82.48 -68.77, 98.86 -82.44"
|
||||
stroke="#ff0000"
|
||||
stroke-width="2.5"
|
||||
fill="none"
|
||||
stroke-dasharray="8 10"
|
||||
></path></g
|
||||
></g
|
||||
><mask></mask></svg
|
||||
>
|
||||
</div>
|
||||
|
||||
OTM options expire worthless, whereas ITM options hold value at
|
||||
expiration. However, simply being ITM doesn't guarantee profit.
|
||||
You need to consider the price you paid for the option. For
|
||||
instance, if you paid $5 per contract and the option is in the
|
||||
money by $2, you'd incur a $3 loss.
|
||||
<br />
|
||||
<br />
|
||||
Profiting from the option at expiration requires it to be ITM by more
|
||||
than the amount you paid for it; simple as that.
|
||||
</div>
|
||||
<!--End Paragraph-->
|
||||
|
||||
<h2 class="mt-10 text-white font-bold text-3xl p-3 mb-3">
|
||||
What's the Goal
|
||||
</h2>
|
||||
|
||||
<!--Start Paragraph-->
|
||||
<div class="text-white text-lg pl-3 pr-3">
|
||||
To break even at expiration, the underlying stock price must be
|
||||
higher than the strike price plus the premium you paid for the
|
||||
option.
|
||||
<br />
|
||||
<br />
|
||||
For example, if you paid $5.00 for a 100 call and the stock is now
|
||||
worth $103, you will still lose money ($2 x 100 = $200) because you
|
||||
must cover the cost of the option.
|
||||
<br />
|
||||
<br />
|
||||
Because of this, you really want the stock to go well above your strike
|
||||
price (depending on how much you paid for the option). Otherwise you
|
||||
will constantly be worrying if the stock is going to make it, which
|
||||
often leads to panic selling.
|
||||
<br />
|
||||
<br />
|
||||
As a result, you want the stock to rise significantly above your strike
|
||||
price (depending on the amount you paid for the option). Otherwise,
|
||||
you'll be constantly worried about whether the stock will make it,
|
||||
which can lead to panic selling.
|
||||
</div>
|
||||
<!--End Paragraph-->
|
||||
|
||||
<h2
|
||||
class="mt-10 text-white font-bold text-3xl bg-[#111011] sm:bg-default p-3 mb-3 bg-opacity-[0.9]"
|
||||
>
|
||||
Effect of Time
|
||||
</h2>
|
||||
|
||||
<!--Start Paragraph-->
|
||||
<div class="text-white text-lg pl-3 pr-3">
|
||||
A call option will lose value as time passes due to theta decay.
|
||||
The rate of this accelerates as expiration approaches, with the
|
||||
majority of the decay happening in the final days or weeks of the
|
||||
option's lifetime.
|
||||
<br />
|
||||
<br />
|
||||
Time decay occurs because as time passes, the chance of the stock making
|
||||
a large move decreases. An OTM contract can have plenty of value months
|
||||
before expiration, but as the final days approach, it will rapidly
|
||||
lose value if it is still out of the money. Simply put, when there
|
||||
is less time remaining, there is less of a chance that the stock will
|
||||
be able to move in time, making the price that others are willing to
|
||||
pay for the option less.
|
||||
<br />
|
||||
<br />
|
||||
Time decay can be "fought" by other factors. The most obvious of course,
|
||||
is the price of the underlying stock. If the stock moves upwards enough,
|
||||
it can increase the value of the call more than the time decay is taking
|
||||
away from the call. Another factor is implied volatility, which can
|
||||
offset the decay if it increases enough.
|
||||
<br />
|
||||
<br />
|
||||
Absent of these factors, a call will lose value as expiration approaches.
|
||||
The final price of a call will depend on how far ITM it is. All OTM
|
||||
calls, which previously were worth something due to the time value,
|
||||
will be worthless at expiration.
|
||||
</div>
|
||||
<!--End Paragraph-->
|
||||
|
||||
<h2
|
||||
class="mt-10 text-white font-bold text-3xl bg-[#111011] sm:bg-default p-3 mb-3 bg-opacity-[0.9]"
|
||||
>
|
||||
Effect of Volatility
|
||||
</h2>
|
||||
|
||||
<!--Start Paragraph-->
|
||||
<div class="text-white text-lg pl-3 pr-3">
|
||||
Volatility is a large unknown when trading options. Like the price
|
||||
of the stock itself, it is one thing that we cannot easily
|
||||
predict. Options will increase in value as implied volatility
|
||||
increases, and decrease when IV decreases. In fact, implied
|
||||
volatility is actually calculated from the price of the option
|
||||
itself compared to the "fair value" price of the option. When
|
||||
other traders are willing to pay more for an option, it increases
|
||||
that gap, which IV represents.
|
||||
<br />
|
||||
<br />
|
||||
Why would an investor pay more for an option than the theoretical fair
|
||||
value? There are many reasons, all of which involve real world events
|
||||
that factor into their decision. The most common reason is that an
|
||||
earnings announcement is upcoming.
|
||||
<br />
|
||||
<br />
|
||||
Typically, a stock moves either up or down a fair bit when earnings
|
||||
are announced, as the company either beats or doesn't meet earning
|
||||
expectations. You might think this would be the perfect time to buy
|
||||
a call, as there is a chance the stock makes a big move in the coming
|
||||
days. Of course, everyone else in the market also thinks this and wants
|
||||
to get in on the action. Demand from lots of buyers of an option will
|
||||
cause the price of the option to go up. (Just like how lots of demand
|
||||
from home buyers or concert-goers allows for sellers to charge more)
|
||||
It goes the other way too, as option sellers know their worth and aren't
|
||||
going to sell an option that could double in the coming days for cheap.
|
||||
<br />
|
||||
<br />
|
||||
Since there's expectation of a price raise, and therefore higher implied
|
||||
volatility, options are going for more than they usually would. However,
|
||||
after the announcement, implied volatility (and the price of the option)
|
||||
rapidly collapse to typical levels. So even if the price raises a lot
|
||||
as a result of the earnings, the call option might be worth less just
|
||||
because the IV is now lower (no more expectations that the price could
|
||||
raise further).
|
||||
</div>
|
||||
<!--End Paragraph-->
|
||||
|
||||
<h2
|
||||
class="mt-10 text-white font-bold text-3xl bg-[#111011] sm:bg-default p-3 bg-opacity-[0.9]"
|
||||
>
|
||||
Pros of Long Call Options
|
||||
</h2>
|
||||
<!--Start Paragraph-->
|
||||
<div class="text-white text-lg pl-3 pr-3">
|
||||
<ol class="text-white list-disc ml-5 sm:ml-3 p-3 text-[1rem]">
|
||||
<li class="p-1">
|
||||
Buying a call is much cheaper than buying 100 shares of the
|
||||
underlying stock, giving you lots of leverage for relatively
|
||||
little capital.
|
||||
</li>
|
||||
<li class="p-1">
|
||||
Like owning shares, a long call has no profit cap.
|
||||
</li>
|
||||
<li class="p-1">
|
||||
You can never lose more than 100% of your investment. (This
|
||||
may sound like a con, but it is a benefit over other option
|
||||
strategies that have uncapped loss potential).
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
<!--End Paragraph-->
|
||||
|
||||
<h2
|
||||
class="mt-10 text-white font-bold text-3xl bg-[#111011] sm:bg-default p-3 bg-opacity-[0.9]"
|
||||
>
|
||||
Cons of Long Call Options
|
||||
</h2>
|
||||
<!--Start Paragraph-->
|
||||
<div class="text-white text-lg pl-3 pr-3">
|
||||
<ol class="text-white list-disc ml-5 sm:ml-3 p-3 text-[1rem]">
|
||||
<li class="p-1">
|
||||
If the stock doesn't reach your breakeven point, you will lose
|
||||
your entire investment. If you owned shares instead, you may
|
||||
only be down a small amount, as the chance of a stock going to
|
||||
zero is slim. (But don't forget about Lehman Brothers)
|
||||
</li>
|
||||
<li class="p-1">
|
||||
Being highly leveraged means that even a small downwards move
|
||||
can send the call plummeting, leaving you with a tough
|
||||
decision to cut your losses or hold out for longer.
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
<!--End Paragraph-->
|
||||
|
||||
<h2
|
||||
class="mt-10 text-white font-bold text-3xl bg-[#111011] sm:bg-default p-3 bg-opacity-[0.9]"
|
||||
>
|
||||
Simple Example
|
||||
</h2>
|
||||
<!--Start Paragraph-->
|
||||
<div class="text-white text-lg pl-3 pr-3">
|
||||
When dealing with long call options, it's crucial to understand
|
||||
their value and how they work. At expiration, the value of a call
|
||||
option can be determined using a simple formula, also known as the
|
||||
intrinsic value:
|
||||
<span class="flex justify-center items-center pt-10">
|
||||
<Katex
|
||||
math={"\\text{option price} = \\max(\\text{stock price} - \\text{strike price}, 0)"}
|
||||
/>
|
||||
</span>
|
||||
<br />
|
||||
<br />
|
||||
This formula reflects that if the stock price exceeds the strike price,
|
||||
the option is profitable and worth exercising. For instance, if the
|
||||
strike price is $100 and the stock is trading at $105, the option can
|
||||
be exercised to buy shares at $100, resulting in a profit of $5 per
|
||||
share when sold at the market price.
|
||||
<br />
|
||||
<br />
|
||||
The value of a call option prior to expiry consists of both intrinsic
|
||||
value and extrinsic value, commonly referred to as time value. Calculating
|
||||
the extrinsic value manually can be complex, often necessitating the
|
||||
use of option pricing models.
|
||||
|
||||
<br />
|
||||
<br />
|
||||
To find the breakeven, simply add the price you paid for the contract(s)
|
||||
to the strike price:
|
||||
<span class="flex justify-center items-center pt-10">
|
||||
<Katex
|
||||
math={"\\text{break-even} = \\text{strike price} + \\text{cost basis}"}
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!--End Paragraph-->
|
||||
|
||||
<UpgradeToPro {data} />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</section>
|
||||
|
||||
<style>
|
||||
.app {
|
||||
height: 500px;
|
||||
max-width: 1500px;
|
||||
}
|
||||
|
||||
@media (max-width: 560px) {
|
||||
.app {
|
||||
max-width: 520px;
|
||||
height: 500px;
|
||||
}
|
||||
}
|
||||
|
||||
.chart {
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
||||
@ -1,185 +0,0 @@
|
||||
<script>
|
||||
import { numberOfUnreadNotification } from "$lib/store";
|
||||
|
||||
import ArrowLogo from "lucide-svelte/icons/move-up-right";
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Market
|
||||
Tide · Stocknear</title
|
||||
>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
|
||||
<!-- Other meta tags -->
|
||||
<meta property="og:title" content="Market Tide · Stocknear" />
|
||||
<meta property="og:type" content="website" />
|
||||
<!-- Add more Open Graph meta tags as needed -->
|
||||
|
||||
<!-- Twitter specific meta tags -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content="Market Tide · Stocknear" />
|
||||
<!-- Add more Twitter meta tags as needed -->
|
||||
</svelte:head>
|
||||
|
||||
<section
|
||||
class="w-full max-w-3xl sm:max-w-[1400px] overflow-hidden min-h-screen pb-20 pt-5 px-4 lg:px-3"
|
||||
>
|
||||
<div class="text-sm sm:text-[1rem] breadcrumbs">
|
||||
<ul>
|
||||
<li><a href="/" class="text-gray-300">Home</a></li>
|
||||
<li class="text-gray-300">Learning Center</li>
|
||||
<li class="text-gray-300">Market Tide</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="w-full overflow-hidden m-auto mt-5 text-white">
|
||||
<div class="sm:p-0 flex justify-center w-full m-auto overflow-hidden">
|
||||
<div
|
||||
class="relative flex justify-center items-start overflow-hidden w-full"
|
||||
>
|
||||
<main class="w-full lg:w-3/4 lg:pr-5">
|
||||
<div class="mb-6 border-b-[2px]">
|
||||
<h1 class="mb-1 text-white text-2xl sm:text-3xl font-bold">
|
||||
Market Tide
|
||||
</h1>
|
||||
</div>
|
||||
|
||||
<div class="w-full bg-default m-auto text-white">
|
||||
<h2 class="text-xl font-semibold mb-4">
|
||||
Daily Aggregated Premium and Volume Indicator
|
||||
</h2>
|
||||
<p class="mb-4">
|
||||
This indicator measures the daily aggregated premium and volume of
|
||||
option trades. It calculates the difference between the value of
|
||||
options transacted at or near the <span
|
||||
class="uppercase font-semibold">ask</span
|
||||
>
|
||||
price and those transacted at or near the
|
||||
<span class="uppercase font-semibold">bid</span> price.
|
||||
</p>
|
||||
|
||||
<div class="bg-table p-5 rounded-md mb-5">
|
||||
<p>
|
||||
Example: If $15,000 in calls are transacted at the <span
|
||||
class="uppercase font-semibold">ask</span
|
||||
>
|
||||
price and $10,000 at the
|
||||
<span class="uppercase font-semibold">bid</span>
|
||||
price, the aggregated call
|
||||
<span class="text-[#00FC50] font-semibold uppercase"
|
||||
>premium</span
|
||||
> is:
|
||||
</p>
|
||||
<p class="font-mono mt-2">$15,000 - $10,000 = $5,000</p>
|
||||
</div>
|
||||
|
||||
<div class="bg-table p-5 rounded-md mb-5">
|
||||
<p>
|
||||
Example: If $10,000 in puts are transacted at the <span
|
||||
class="uppercase font-semibold">ask</span
|
||||
>
|
||||
price and $20,000 at the
|
||||
<span class="uppercase font-semibold">bid</span>
|
||||
price, the aggregated put
|
||||
<span class="text-[#FF2F1F] font-semibold uppercase"
|
||||
>premium</span
|
||||
> is:
|
||||
</p>
|
||||
<p class="font-mono mt-2">$10,000 - $20,000 = -$10,000</p>
|
||||
</div>
|
||||
|
||||
<p class="mb-4">
|
||||
More calls bought at the <span class="uppercase font-semibold"
|
||||
>ask</span
|
||||
>
|
||||
suggest bullish sentiment, while more puts bought at the
|
||||
<span class="uppercase font-semibold">ask</span> suggest bearish sentiment.
|
||||
If both lines are close, the sentiment is neutral. Diverging trends
|
||||
indicate increasing bullish or bearish sentiment.
|
||||
</p>
|
||||
|
||||
<div class="bg-table p-5 rounded-md mb-5">
|
||||
<h3 class="font-semibold mb-3">
|
||||
Indicators of Bearish Sentiment
|
||||
</h3>
|
||||
<ul class="list-disc pl-5 space-y-2">
|
||||
<li>
|
||||
Aggregated call <span
|
||||
class="text-[#00FC50] font-semibold uppercase">premium</span
|
||||
> decreases rapidly.
|
||||
</li>
|
||||
<li>
|
||||
Aggregated put <span
|
||||
class="text-[#FF2F1F] font-semibold uppercase">premium</span
|
||||
> increases rapidly.
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<p class="mb-4">
|
||||
Volume is calculated as the difference between aggregated call and
|
||||
put volumes. This method uses the same principles as premium
|
||||
calculations.
|
||||
</p>
|
||||
|
||||
<div class="bg-table p-5 rounded-md">
|
||||
<p>
|
||||
Example: If 10,000 more calls and 5,000 more puts are transacted
|
||||
at the <span class="uppercase font-semibold">ask</span> compared
|
||||
to the <span class="uppercase font-semibold">bid</span>, the
|
||||
aggregated volume is:
|
||||
</p>
|
||||
<p class="font-mono mt-2">10,000 - 5,000 = 5,000</p>
|
||||
<p class="mt-2">
|
||||
Since not all options are priced equally, premium must be
|
||||
considered alongside volume for a clearer picture.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<aside class="hidden lg:block relative fixed w-1/4 ml-4">
|
||||
<div
|
||||
class="w-full text-white border border-gray-600 rounded-md h-fit pb-4 mt-4 cursor-pointer bg-inherit sm:hover:bg-secondary transition ease-out duration-100"
|
||||
>
|
||||
<a
|
||||
href="/donation"
|
||||
class="w-auto lg:w-full p-1 flex flex-col m-auto px-2 sm:px-0"
|
||||
>
|
||||
<div class="w-full flex justify-between items-center p-3 mt-3">
|
||||
<h2 class="text-start text-xl font-semibold text-white ml-3">
|
||||
Market Flow
|
||||
</h2>
|
||||
<ArrowLogo class="w-8 h-8 mr-3 flex-shrink-0" />
|
||||
</div>
|
||||
<span class="text-white p-3 ml-3 mr-3">
|
||||
High level options overview of the market
|
||||
</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="w-full text-white border border-gray-600 rounded-md h-fit pb-4 mt-4 cursor-pointer bg-inherit sm:hover:bg-secondary transition ease-out duration-100"
|
||||
>
|
||||
<a
|
||||
href="/contact"
|
||||
class="w-auto lg:w-full p-1 flex flex-col m-auto px-2 sm:px-0"
|
||||
>
|
||||
<div class="w-full flex justify-between items-center p-3 mt-3">
|
||||
<h2 class="text-start text-xl font-semibold text-white ml-3">
|
||||
Options Flow
|
||||
</h2>
|
||||
<ArrowLogo class="w-8 h-8 mr-3 flex-shrink-0" />
|
||||
</div>
|
||||
<span class="text-white p-3 ml-3 mr-3">
|
||||
Get realtime options flow and customize your screener
|
||||
</span>
|
||||
</a>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@ -22,6 +22,7 @@ const pages = [
|
||||
{ title: "/list/dividend/dividend-kings" },
|
||||
{ title: "/list/dividend/dividend-aristocrats" },
|
||||
{ title: "/list/magnificent-seven" },
|
||||
{ title: "/list/most-buybacks" },
|
||||
{ title: "/list/market-cap/mega-cap-stocks" },
|
||||
{ title: "/list/market-cap/large-cap-stocks" },
|
||||
{ title: "/list/market-cap/mid-cap-stocks" },
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user