seo fix
This commit is contained in:
parent
2f62b3d934
commit
6ce24a8de3
@ -11,12 +11,10 @@
|
||||
let topHoldingList = [];
|
||||
let description = "";
|
||||
let website = "-";
|
||||
let snippet;
|
||||
|
||||
let ipoDate = "n/a";
|
||||
let assetClass = "-";
|
||||
let provider = "-";
|
||||
let showFullText = false;
|
||||
let totalAssetPercentage = 0;
|
||||
|
||||
let dividendHistoryList = [];
|
||||
@ -56,7 +54,6 @@
|
||||
info?.description ??
|
||||
"A detailed description of the company is not yet available.";
|
||||
website = info?.website;
|
||||
snippet = description?.slice(0, 450) + "...";
|
||||
|
||||
totalAssetPercentage = topHoldingList
|
||||
?.slice(0, 5)
|
||||
@ -71,26 +68,8 @@
|
||||
About {$etfTicker}
|
||||
</h2>
|
||||
<p class="text-gray-200">
|
||||
{#if showFullText}
|
||||
{description}
|
||||
{:else}
|
||||
{snippet}
|
||||
{/if}
|
||||
</p>
|
||||
{#if description.length !== 0}
|
||||
<div class="inline-block">
|
||||
<label
|
||||
on:click={() => (showFullText = !showFullText)}
|
||||
class="w-full text-md mt-1 cursor-pointer font-medium sm:hover:text-white text-blue-400 sm:hover:underline"
|
||||
>
|
||||
{#if showFullText}
|
||||
[Show less]
|
||||
{:else}
|
||||
[Show more]
|
||||
{/if}
|
||||
</label>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<div
|
||||
class="mt-3 grid grid-cols-2 gap-3 w-full border-b border-gray-600 lg:border-none pb-8 lg:pb-0"
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
<svelte:head>
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} About
|
||||
· stocknear</title
|
||||
· Stocknear</title
|
||||
>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
@ -33,7 +33,7 @@
|
||||
content="Welcome to Stocknear — a site that aims to be the internet's best source of free stock data and information for small investors."
|
||||
/>
|
||||
<!-- Other meta tags -->
|
||||
<meta property="og:title" content="About · stocknear" />
|
||||
<meta property="og:title" content="About · Stocknear" />
|
||||
<meta
|
||||
property="og:description"
|
||||
content="Welcome to Stocknear — a site that aims to be the internet's best source of free stock data and information for small investors."
|
||||
@ -43,7 +43,7 @@
|
||||
|
||||
<!-- Twitter specific meta tags -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content="About · stocknear" />
|
||||
<meta name="twitter:title" content="About · Stocknear" />
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content="Welcome to Stocknear — a site that aims to be the internet's best source of free stock data and information for small investors."
|
||||
|
||||
@ -135,7 +135,7 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Top
|
||||
Wall Street Stock Analysts · stocknear
|
||||
Wall Street Stock Analysts · Stocknear
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
@ -145,7 +145,7 @@
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`Top Wall Street Stock Analysts · stocknear`}
|
||||
content={`Top Wall Street Stock Analysts · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -158,7 +158,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`Top Wall Street Stock Analysts · stocknear`}
|
||||
content={`Top Wall Street Stock Analysts · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -172,7 +172,7 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Top
|
||||
Wall Street Stock Analysts · stocknear
|
||||
Wall Street Stock Analysts · Stocknear
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
@ -182,7 +182,7 @@
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`Top Wall Street Stock Analysts · stocknear`}
|
||||
content={`Top Wall Street Stock Analysts · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -195,7 +195,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`Top Wall Street Stock Analysts · stocknear`}
|
||||
content={`Top Wall Street Stock Analysts · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -30,7 +30,7 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Top
|
||||
100 Strong Buy Stocks · stocknear
|
||||
100 Strong Buy Stocks · Stocknear
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
@ -38,7 +38,7 @@
|
||||
/>
|
||||
|
||||
<!-- Other meta tags -->
|
||||
<meta property="og:title" content={`Top 100 Strong Buy Stocks · stocknear`} />
|
||||
<meta property="og:title" content={`Top 100 Strong Buy Stocks · Stocknear`} />
|
||||
<meta
|
||||
property="og:description"
|
||||
content={`The top 100 "Strong Buy" stocks according to the best performing Wall Street analysts, with a rating of 5 stars.`}
|
||||
@ -50,7 +50,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`Top 100 Strong Buy Stocks · stocknear`}
|
||||
content={`Top 100 Strong Buy Stocks · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -8,19 +8,19 @@
|
||||
<svelte:head>
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Changelog
|
||||
· stocknear</title
|
||||
· Stocknear</title
|
||||
>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
|
||||
<!-- Other meta tags -->
|
||||
<meta property="og:title" content="Changelog · stocknear" />
|
||||
<meta property="og:title" content="Changelog · 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="Changelog · stocknear" />
|
||||
<meta name="twitter:title" content="Changelog · Stocknear" />
|
||||
<!-- Add more Twitter meta tags as needed -->
|
||||
</svelte:head>
|
||||
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Contact
|
||||
Us · stocknear
|
||||
Us · Stocknear
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
@ -20,7 +20,7 @@
|
||||
/>
|
||||
|
||||
<!-- Other meta tags -->
|
||||
<meta property="og:title" content={`Contact Us · stocknear`} />
|
||||
<meta property="og:title" content={`Contact Us · Stocknear`} />
|
||||
<meta
|
||||
property="og:description"
|
||||
content={`Need help, found a bug or you have a feature request. Please contact us to resolve any issues.`}
|
||||
@ -30,7 +30,7 @@
|
||||
|
||||
<!-- Twitter specific meta tags -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content={`Contact Us · stocknear`} />
|
||||
<meta name="twitter:title" content={`Contact Us · Stocknear`} />
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content={`Need help, found a bug or you have a feature request. Please contact us to resolve any issues.`}
|
||||
|
||||
@ -122,7 +122,7 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Latest
|
||||
Lobbiyng Disclosure Tracker · stocknear
|
||||
Lobbiyng Disclosure Tracker · Stocknear
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
@ -132,7 +132,7 @@
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`Latest Lobbiyng Disclosure Tracker · stocknear`}
|
||||
content={`Latest Lobbiyng Disclosure Tracker · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -145,7 +145,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`Latest Lobbiyng Disclosure Tracker · stocknear`}
|
||||
content={`Latest Lobbiyng Disclosure Tracker · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -172,7 +172,7 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Jim
|
||||
Carmer Tracker · stocknear
|
||||
Carmer Tracker · Stocknear
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
@ -180,7 +180,7 @@
|
||||
/>
|
||||
|
||||
<!-- Other meta tags -->
|
||||
<meta property="og:title" content={`Jim Carmer Tracker · stocknear`} />
|
||||
<meta property="og:title" content={`Jim Carmer Tracker · Stocknear`} />
|
||||
<meta
|
||||
property="og:description"
|
||||
content={`Track the stock recommendations and performance of CNBC's Jim Cramer`}
|
||||
@ -190,7 +190,7 @@
|
||||
|
||||
<!-- Twitter specific meta tags -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content={`Jim Carmer Tracker · stocknear`} />
|
||||
<meta name="twitter:title" content={`Jim Carmer Tracker · Stocknear`} />
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content={`Track the stock recommendations and performance of CNBC's Jim Cramer`}
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} List
|
||||
of All Crypto Ticker Symbols · stocknear
|
||||
of All Crypto Ticker Symbols · Stocknear
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
@ -28,7 +28,7 @@
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`List of All Crypto Ticker Symbols · stocknear`}
|
||||
content={`List of All Crypto Ticker Symbols · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -41,7 +41,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`List of All Crypto Ticker Symbols · stocknear`}
|
||||
content={`List of All Crypto Ticker Symbols · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -626,7 +626,7 @@ afterUpdate(async () => {
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`${$displayCompanyName} (${$cryptoTicker}) Stock Price, Quote & News · stocknear`}
|
||||
content={`${$displayCompanyName} (${$cryptoTicker}) Stock Price, Quote & News · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -639,7 +639,7 @@ afterUpdate(async () => {
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`${$displayCompanyName} (${$cryptoTicker}) Stock Price, Quote & News · stocknear`}
|
||||
content={`${$displayCompanyName} (${$cryptoTicker}) Stock Price, Quote & News · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -132,7 +132,7 @@
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`${$displayCompanyName} (${$cryptoTicker}) US Congress & Senate Trading · stocknear`}
|
||||
content={`${$displayCompanyName} (${$cryptoTicker}) US Congress & Senate Trading · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -145,7 +145,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`${$displayCompanyName} (${$cryptoTicker}) US Congress & Senate Trading · stocknear`}
|
||||
content={`${$displayCompanyName} (${$cryptoTicker}) US Congress & Senate Trading · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -1,5 +1,11 @@
|
||||
<script lang="ts">
|
||||
import { numberOfUnreadNotification, displayCompanyName, stockTicker, sentimentComponent, priceAnalysisComponent } from "$lib/store";
|
||||
import {
|
||||
numberOfUnreadNotification,
|
||||
displayCompanyName,
|
||||
stockTicker,
|
||||
sentimentComponent,
|
||||
priceAnalysisComponent,
|
||||
} from "$lib/store";
|
||||
import PriceAnalysis from "$lib/components/PriceAnalysis.svelte";
|
||||
import SentimentAnalysis from "$lib/components/SentimentAnalysis.svelte";
|
||||
import AnalystInsight from "$lib/components/AnalystInsight.svelte";
|
||||
@ -14,47 +20,78 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""}
|
||||
{$displayCompanyName} ({$stockTicker}) Forecast AI · stocknear
|
||||
{$displayCompanyName} ({$stockTicker}) Forecast AI · Stocknear
|
||||
</title>
|
||||
<meta name="description" content={`A list of analyst ratings for Advanced Micro Devices (AMD) stock. See upgrades, downgrades, price targets and more from top Wall Street stock analysts.`} />
|
||||
<meta
|
||||
name="description"
|
||||
content={`A list of analyst ratings for Advanced Micro Devices (AMD) stock. See upgrades, downgrades, price targets and more from top Wall Street stock analysts.`}
|
||||
/>
|
||||
|
||||
<!-- Other meta tags -->
|
||||
<meta property="og:title" content={`${$displayCompanyName} (${$stockTicker}) Forecast AI · stocknear`} />
|
||||
<meta property="og:description" content={`A list of analyst ratings for Advanced Micro Devices (AMD) stock. See upgrades, downgrades, price targets and more from top Wall Street stock analysts.`} />
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Forecast AI · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
content={`A list of analyst ratings for Advanced Micro Devices (AMD) stock. See upgrades, downgrades, price targets and more from top Wall Street stock analysts.`}
|
||||
/>
|
||||
<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={`${$displayCompanyName} (${$stockTicker}) Forecast AI · stocknear`} />
|
||||
<meta name="twitter:description" content={`A list of analyst ratings for Advanced Micro Devices (AMD) stock. See upgrades, downgrades, price targets and more from top Wall Street stock analysts.`} />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Forecast AI · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content={`A list of analyst ratings for Advanced Micro Devices (AMD) stock. See upgrades, downgrades, price targets and more from top Wall Street stock analysts.`}
|
||||
/>
|
||||
<!-- Add more Twitter meta tags as needed -->
|
||||
</svelte:head>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section class="bg-[#09090B] overflow-hidden text-white h-full mb-40 sm:mb-0 w-full">
|
||||
<section
|
||||
class="bg-[#09090B] overflow-hidden text-white h-full mb-40 sm:mb-0 w-full"
|
||||
>
|
||||
<div class="flex justify-center m-auto h-full overflow-hidden w-full">
|
||||
<div class="relative flex justify-center items-center overflow-hidden w-full">
|
||||
<div
|
||||
class="relative flex justify-center items-center overflow-hidden w-full"
|
||||
>
|
||||
<div class="sm:p-7 w-full m-auto mt-2 sm:mt-0">
|
||||
<Lazy>
|
||||
<div class="w-full mt-10 sm:mt-0 m-auto sm:pt-6 {Object?.keys(data?.getAnalystInsight)?.length === 0 ? 'hidden' : ''}">
|
||||
<AnalystInsight data={data} />
|
||||
<div
|
||||
class="w-full mt-10 sm:mt-0 m-auto sm:pt-6 {Object?.keys(
|
||||
data?.getAnalystInsight,
|
||||
)?.length === 0
|
||||
? 'hidden'
|
||||
: ''}"
|
||||
>
|
||||
<AnalystInsight {data} />
|
||||
</div>
|
||||
</Lazy>
|
||||
|
||||
<Lazy>
|
||||
<div class="w-full mt-10 sm:mt-5 m-auto sm:pb-6 sm:pt-6 {Object?.keys(data?.getPriceAnalysis)?.length === 0 ? 'hidden' : ''}">
|
||||
<PriceAnalysis data={data} />
|
||||
<div
|
||||
class="w-full mt-10 sm:mt-5 m-auto sm:pb-6 sm:pt-6 {Object?.keys(
|
||||
data?.getPriceAnalysis,
|
||||
)?.length === 0
|
||||
? 'hidden'
|
||||
: ''}"
|
||||
>
|
||||
<PriceAnalysis {data} />
|
||||
</div>
|
||||
</Lazy>
|
||||
|
||||
|
||||
<Lazy>
|
||||
<div class="w-full mt-10 sm:mt-5 m-auto sm:pb-6 sm:pt-6 {data?.getSentimentAnalysis?.length === 0 ? 'hidden' : ''}">
|
||||
<SentimentAnalysis data={data} />
|
||||
<div
|
||||
class="w-full mt-10 sm:mt-5 m-auto sm:pb-6 sm:pt-6 {data
|
||||
?.getSentimentAnalysis?.length === 0
|
||||
? 'hidden'
|
||||
: ''}"
|
||||
>
|
||||
<SentimentAnalysis {data} />
|
||||
</div>
|
||||
</Lazy>
|
||||
</div>
|
||||
|
||||
@ -67,7 +67,7 @@
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""}
|
||||
{$displayCompanyName} ({$cryptoTicker}) latest Stock Market News and
|
||||
Breaking Stories · stocknear
|
||||
Breaking Stories · Stocknear
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
@ -77,7 +77,7 @@
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`${$displayCompanyName} (${$cryptoTicker}) latest Stock Market News and Breaking Stories · stocknear`}
|
||||
content={`${$displayCompanyName} (${$cryptoTicker}) latest Stock Market News and Breaking Stories · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -90,7 +90,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`${$displayCompanyName} (${$cryptoTicker}) latest Stock Market News and Breaking Stories · stocknear`}
|
||||
content={`${$displayCompanyName} (${$cryptoTicker}) latest Stock Market News and Breaking Stories · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -93,7 +93,7 @@ updateYearRange()
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`${$displayCompanyName} (${$cryptoTicker}) Statistics & Valuation Metrics · stocknear`}
|
||||
content={`${$displayCompanyName} (${$cryptoTicker}) Statistics & Valuation Metrics · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -106,7 +106,7 @@ updateYearRange()
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`${$displayCompanyName} (${$cryptoTicker}) Statistics & Valuation Metrics · stocknear`}
|
||||
content={`${$displayCompanyName} (${$cryptoTicker}) Statistics & Valuation Metrics · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -307,7 +307,7 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Dividends
|
||||
Calendar · stocknear
|
||||
Calendar · Stocknear
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
@ -315,7 +315,7 @@
|
||||
/>
|
||||
|
||||
<!-- Other meta tags -->
|
||||
<meta property="og:title" content={`Dividends Calendar · stocknear`} />
|
||||
<meta property="og:title" content={`Dividends Calendar · Stocknear`} />
|
||||
<meta
|
||||
property="og:description"
|
||||
content={`A list of upcoming dividends on the US stock market, with dates, times and estimated revenue and dividends growth.`}
|
||||
@ -325,7 +325,7 @@
|
||||
|
||||
<!-- Twitter specific meta tags -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content={`Dividends Calendar · stocknear`} />
|
||||
<meta name="twitter:title" content={`Dividends Calendar · Stocknear`} />
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content={`A list of upcoming dividends on the US stock market, with dates, times and estimated revenue and dividends growth.`}
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
/>
|
||||
|
||||
<!-- Other meta tags -->
|
||||
<meta property="og:title" content={`sponsor · stocknear`} />
|
||||
<meta property="og:title" content={`sponsor · Stocknear`} />
|
||||
<meta
|
||||
property="og:description"
|
||||
content={`Your sponsor helps us to become the number 1 stock analysis platform in the world with the best price plans.`}
|
||||
@ -28,7 +28,7 @@
|
||||
|
||||
<!-- Twitter specific meta tags -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content={`sponsor · stocknear`} />
|
||||
<meta name="twitter:title" content={`sponsor · Stocknear`} />
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content={`Your sponsor helps us to become the number 1 stock analysis platform in the world with the best price plans.`}
|
||||
|
||||
@ -308,7 +308,7 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Earnings
|
||||
Calendar · stocknear
|
||||
Calendar · Stocknear
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
@ -316,7 +316,7 @@
|
||||
/>
|
||||
|
||||
<!-- Other meta tags -->
|
||||
<meta property="og:title" content={`Earnings Calendar · stocknear`} />
|
||||
<meta property="og:title" content={`Earnings Calendar · Stocknear`} />
|
||||
<meta
|
||||
property="og:description"
|
||||
content={`A list of upcoming earnings on the US stock market, with dates, times and estimated revenue and earnings growth.`}
|
||||
@ -326,7 +326,7 @@
|
||||
|
||||
<!-- Twitter specific meta tags -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content={`Earnings Calendar · stocknear`} />
|
||||
<meta name="twitter:title" content={`Earnings Calendar · Stocknear`} />
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content={`A list of upcoming earnings on the US stock market, with dates, times and estimated revenue and earnings growth.`}
|
||||
|
||||
@ -309,7 +309,7 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Worldwide
|
||||
Economic Calendar · stocknear
|
||||
Economic Calendar · Stocknear
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
@ -319,7 +319,7 @@
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`Worldwide Economic Calendar · stocknear`}
|
||||
content={`Worldwide Economic Calendar · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -332,7 +332,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`Worldwide Economic Calendar · stocknear`}
|
||||
content={`Worldwide Economic Calendar · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -623,7 +623,7 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} US
|
||||
Economic Indicator · stocknear
|
||||
Economic Indicator · Stocknear
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
@ -631,7 +631,7 @@
|
||||
/>
|
||||
|
||||
<!-- Other meta tags -->
|
||||
<meta property="og:title" content={`US Economic Indicator · stocknear`} />
|
||||
<meta property="og:title" content={`US Economic Indicator · Stocknear`} />
|
||||
<meta
|
||||
property="og:description"
|
||||
content={`Economic indicators measure economic performance and identify growth trends.`}
|
||||
@ -641,7 +641,7 @@
|
||||
|
||||
<!-- Twitter specific meta tags -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content={`US Economic Indicator · stocknear`} />
|
||||
<meta name="twitter:title" content={`US Economic Indicator · Stocknear`} />
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content={`Economic indicators measure economic performance and identify growth trends.`}
|
||||
|
||||
@ -36,7 +36,7 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} List
|
||||
of All ETF Ticker Symbols · stocknear
|
||||
of All ETF Ticker Symbols · Stocknear
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
@ -46,7 +46,7 @@
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`List of All ETF Ticker Symbols · stocknear`}
|
||||
content={`List of All ETF Ticker Symbols · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -59,7 +59,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`List of All ETF Ticker Symbols · stocknear`}
|
||||
content={`List of All ETF Ticker Symbols · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -370,16 +370,20 @@
|
||||
>
|
||||
<svg
|
||||
class="w-6 h-6 inline-block"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 512 512"
|
||||
><path
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="white"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
stroke="#fff"
|
||||
><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g
|
||||
id="SVGRepo_tracerCarrier"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
stroke-width="32"
|
||||
d="M336 192h40a40 40 0 0 1 40 40v192a40 40 0 0 1-40 40H136a40 40 0 0 1-40-40V232a40 40 0 0 1 40-40h40m160-64l-80-80l-80 80m80 193V48"
|
||||
/></svg
|
||||
></g><g id="SVGRepo_iconCarrier">
|
||||
<path
|
||||
d="M20.3359 3.22136L3.87333 8.70889C3.56801 8.81066 3.55033 9.23586 3.84614 9.36263L9.89655 11.9557C9.96078 11.9832 10.0347 11.9752 10.0916 11.9346L16.0235 7.69749C16.2073 7.56618 16.4338 7.79266 16.3025 7.97648L12.0654 13.9084C12.0248 13.9653 12.0168 14.0392 12.0443 14.1034L14.6374 20.1539C14.7641 20.4497 15.1893 20.432 15.2911 20.1267L20.7786 3.66408C20.8698 3.39046 20.6095 3.13015 20.3359 3.22136Z"
|
||||
fill="#fff"
|
||||
></path>
|
||||
</g></svg
|
||||
>
|
||||
</label>
|
||||
<!--End Share Button-->
|
||||
|
||||
@ -763,7 +763,7 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""}
|
||||
{$displayCompanyName} ({$etfTicker}) Stock Price, Quote & News · stocknear
|
||||
{$displayCompanyName} ({$etfTicker}) Stock Price, Quote & News · Stocknear
|
||||
</title>
|
||||
|
||||
<meta
|
||||
@ -773,7 +773,7 @@
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`${$displayCompanyName} (${$etfTicker}) Stock Price, Quote & News · stocknear`}
|
||||
content={`${$displayCompanyName} (${$etfTicker}) Stock Price, Quote & News · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -787,7 +787,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`${$displayCompanyName} (${$etfTicker}) Stock Price, Quote & News · stocknear`}
|
||||
content={`${$displayCompanyName} (${$etfTicker}) Stock Price, Quote & News · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -130,7 +130,7 @@
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`${$displayCompanyName} (${$etfTicker}) Dividend History, Dates & Yield · stocknear`}
|
||||
content={`${$displayCompanyName} (${$etfTicker}) Dividend History, Dates & Yield · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -143,7 +143,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`${$displayCompanyName} (${$etfTicker}) Dividend History, Dates & Yield · stocknear`}
|
||||
content={`${$displayCompanyName} (${$etfTicker}) Dividend History, Dates & Yield · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -1,5 +1,11 @@
|
||||
<script lang="ts">
|
||||
import { numberOfUnreadNotification, displayCompanyName, stockTicker, sentimentComponent, priceAnalysisComponent } from "$lib/store";
|
||||
import {
|
||||
numberOfUnreadNotification,
|
||||
displayCompanyName,
|
||||
stockTicker,
|
||||
sentimentComponent,
|
||||
priceAnalysisComponent,
|
||||
} from "$lib/store";
|
||||
import PriceAnalysis from "$lib/components/PriceAnalysis.svelte";
|
||||
import SentimentAnalysis from "$lib/components/SentimentAnalysis.svelte";
|
||||
import AnalystInsight from "$lib/components/AnalystInsight.svelte";
|
||||
@ -14,47 +20,78 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""}
|
||||
{$displayCompanyName} ({$stockTicker}) Forecast AI · stocknear
|
||||
{$displayCompanyName} ({$stockTicker}) Forecast AI · Stocknear
|
||||
</title>
|
||||
<meta name="description" content={`A list of analyst ratings for Advanced Micro Devices (AMD) stock. See upgrades, downgrades, price targets and more from top Wall Street stock analysts.`} />
|
||||
<meta
|
||||
name="description"
|
||||
content={`A list of analyst ratings for Advanced Micro Devices (AMD) stock. See upgrades, downgrades, price targets and more from top Wall Street stock analysts.`}
|
||||
/>
|
||||
|
||||
<!-- Other meta tags -->
|
||||
<meta property="og:title" content={`${$displayCompanyName} (${$stockTicker}) Forecast AI · stocknear`} />
|
||||
<meta property="og:description" content={`A list of analyst ratings for Advanced Micro Devices (AMD) stock. See upgrades, downgrades, price targets and more from top Wall Street stock analysts.`} />
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Forecast AI · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
content={`A list of analyst ratings for Advanced Micro Devices (AMD) stock. See upgrades, downgrades, price targets and more from top Wall Street stock analysts.`}
|
||||
/>
|
||||
<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={`${$displayCompanyName} (${$stockTicker}) Forecast AI · stocknear`} />
|
||||
<meta name="twitter:description" content={`A list of analyst ratings for Advanced Micro Devices (AMD) stock. See upgrades, downgrades, price targets and more from top Wall Street stock analysts.`} />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Forecast AI · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content={`A list of analyst ratings for Advanced Micro Devices (AMD) stock. See upgrades, downgrades, price targets and more from top Wall Street stock analysts.`}
|
||||
/>
|
||||
<!-- Add more Twitter meta tags as needed -->
|
||||
</svelte:head>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section class="bg-[#09090B] overflow-hidden text-white h-full mb-40 sm:mb-0 w-full">
|
||||
<section
|
||||
class="bg-[#09090B] overflow-hidden text-white h-full mb-40 sm:mb-0 w-full"
|
||||
>
|
||||
<div class="flex justify-center m-auto h-full overflow-hidden w-full">
|
||||
<div class="relative flex justify-center items-center overflow-hidden w-full">
|
||||
<div
|
||||
class="relative flex justify-center items-center overflow-hidden w-full"
|
||||
>
|
||||
<div class="sm:p-7 w-full m-auto mt-2 sm:mt-0">
|
||||
<Lazy>
|
||||
<div class="w-full mt-10 sm:mt-0 m-auto sm:pt-6 {Object?.keys(data?.getAnalystInsight)?.length === 0 ? 'hidden' : ''}">
|
||||
<AnalystInsight data={data} />
|
||||
<div
|
||||
class="w-full mt-10 sm:mt-0 m-auto sm:pt-6 {Object?.keys(
|
||||
data?.getAnalystInsight,
|
||||
)?.length === 0
|
||||
? 'hidden'
|
||||
: ''}"
|
||||
>
|
||||
<AnalystInsight {data} />
|
||||
</div>
|
||||
</Lazy>
|
||||
|
||||
<Lazy>
|
||||
<div class="w-full mt-10 sm:mt-5 m-auto sm:pb-6 sm:pt-6 {Object?.keys(data?.getPriceAnalysis)?.length === 0 ? 'hidden' : ''}">
|
||||
<PriceAnalysis data={data} />
|
||||
<div
|
||||
class="w-full mt-10 sm:mt-5 m-auto sm:pb-6 sm:pt-6 {Object?.keys(
|
||||
data?.getPriceAnalysis,
|
||||
)?.length === 0
|
||||
? 'hidden'
|
||||
: ''}"
|
||||
>
|
||||
<PriceAnalysis {data} />
|
||||
</div>
|
||||
</Lazy>
|
||||
|
||||
|
||||
<Lazy>
|
||||
<div class="w-full mt-10 sm:mt-5 m-auto sm:pb-6 sm:pt-6 {data?.getSentimentAnalysis?.length === 0 ? 'hidden' : ''}">
|
||||
<SentimentAnalysis data={data} />
|
||||
<div
|
||||
class="w-full mt-10 sm:mt-5 m-auto sm:pb-6 sm:pt-6 {data
|
||||
?.getSentimentAnalysis?.length === 0
|
||||
? 'hidden'
|
||||
: ''}"
|
||||
>
|
||||
<SentimentAnalysis {data} />
|
||||
</div>
|
||||
</Lazy>
|
||||
</div>
|
||||
|
||||
@ -39,7 +39,7 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""}
|
||||
{$displayCompanyName} ({$etfTicker}) Holdings List · stocknear
|
||||
{$displayCompanyName} ({$etfTicker}) Holdings List · Stocknear
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
@ -49,7 +49,7 @@
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`${$displayCompanyName} (${$etfTicker}) Holdings List · stocknear`}
|
||||
content={`${$displayCompanyName} (${$etfTicker}) Holdings List · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -62,7 +62,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`${$displayCompanyName} (${$etfTicker}) Holdings List · stocknear`}
|
||||
content={`${$displayCompanyName} (${$etfTicker}) Holdings List · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -121,7 +121,7 @@
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`${$displayCompanyName} (${$etfTicker}) US Congress & Senate Trading · stocknear`}
|
||||
content={`${$displayCompanyName} (${$etfTicker}) US Congress & Senate Trading · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -134,7 +134,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`${$displayCompanyName} (${$etfTicker}) US Congress & Senate Trading · stocknear`}
|
||||
content={`${$displayCompanyName} (${$etfTicker}) US Congress & Senate Trading · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -67,7 +67,7 @@
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""}
|
||||
{$displayCompanyName} ({$etfTicker}) latest Stock Market News and Breaking
|
||||
Stories · stocknear
|
||||
Stories · Stocknear
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
@ -77,7 +77,7 @@
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`${$displayCompanyName} (${$etfTicker}) latest Stock Market News and Breaking Stories · stocknear`}
|
||||
content={`${$displayCompanyName} (${$etfTicker}) latest Stock Market News and Breaking Stories · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -90,7 +90,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`${$displayCompanyName} (${$etfTicker}) latest Stock Market News and Breaking Stories · stocknear`}
|
||||
content={`${$displayCompanyName} (${$etfTicker}) latest Stock Market News and Breaking Stories · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -538,7 +538,7 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""}
|
||||
{$displayCompanyName} ({$etfTicker}) Options Activity · stocknear
|
||||
{$displayCompanyName} ({$etfTicker}) Options Activity · Stocknear
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
@ -548,7 +548,7 @@
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`${$displayCompanyName} (${$etfTicker}) Options Activity · stocknear`}
|
||||
content={`${$displayCompanyName} (${$etfTicker}) Options Activity · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -561,7 +561,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`${$displayCompanyName} (${$etfTicker}) Options Activity · stocknear`}
|
||||
content={`${$displayCompanyName} (${$etfTicker}) Options Activity · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -93,7 +93,7 @@ updateYearRange()
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`${$displayCompanyName} (${$etfTicker}) Statistics & Valuation Metrics · stocknear`}
|
||||
content={`${$displayCompanyName} (${$etfTicker}) Statistics & Valuation Metrics · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -106,7 +106,7 @@ updateYearRange()
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`${$displayCompanyName} (${$etfTicker}) Statistics & Valuation Metrics · stocknear`}
|
||||
content={`${$displayCompanyName} (${$etfTicker}) Statistics & Valuation Metrics · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -24,7 +24,7 @@
|
||||
<svelte:head>
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Largest
|
||||
ETF Providers by Assets Under Management · stocknear</title
|
||||
ETF Providers by Assets Under Management · Stocknear</title
|
||||
>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
@ -36,7 +36,7 @@
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content="Largest ETF Providers by Assets Under Management · stocknear"
|
||||
content="Largest ETF Providers by Assets Under Management · Stocknear"
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -49,7 +49,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content="Largest ETF Providers by Assets Under Management · stocknear"
|
||||
content="Largest ETF Providers by Assets Under Management · Stocknear"
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -86,7 +86,7 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Largest
|
||||
ETF Providers by Assets Under Management · stocknear
|
||||
ETF Providers by Assets Under Management · Stocknear
|
||||
</title>
|
||||
|
||||
<meta
|
||||
@ -96,7 +96,7 @@
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`Largest ETF Providers by Assets Under Management · stocknear`}
|
||||
content={`Largest ETF Providers by Assets Under Management · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -109,7 +109,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`Largest ETF Providers by Assets Under Management · stocknear`}
|
||||
content={`Largest ETF Providers by Assets Under Management · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -124,7 +124,7 @@
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""}
|
||||
{etfProviderData?.length}
|
||||
{etfProviderName} ETFs - A Complete List · stocknear
|
||||
{etfProviderName} ETFs - A Complete List · Stocknear
|
||||
</title>
|
||||
<meta name="description" content={``} />
|
||||
|
||||
|
||||
@ -90,7 +90,7 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} 100
|
||||
Newest ETFs · stocknear
|
||||
Newest ETFs · Stocknear
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
@ -98,7 +98,7 @@
|
||||
/>
|
||||
|
||||
<!-- Other meta tags -->
|
||||
<meta property="og:title" content={`100 Newest ETFs · stocknear`} />
|
||||
<meta property="og:title" content={`100 Newest ETFs · Stocknear`} />
|
||||
<meta
|
||||
property="og:description"
|
||||
content={`A list of the 100 most recently launched ETFs on the US stock market, sorted by the inception date.`}
|
||||
@ -108,7 +108,7 @@
|
||||
|
||||
<!-- Twitter specific meta tags -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content={`100 Newest ETFs · stocknear`} />
|
||||
<meta name="twitter:title" content={`100 Newest ETFs · Stocknear`} />
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content={`A list of the 100 most recently launched ETFs on the US stock market, sorted by the inception date.`}
|
||||
|
||||
@ -29,7 +29,7 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} FDA
|
||||
Calendar · stocknear
|
||||
Calendar · Stocknear
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
@ -37,7 +37,7 @@
|
||||
/>
|
||||
|
||||
<!-- Other meta tags -->
|
||||
<meta property="og:title" content={`FDA Calendar · stocknear`} />
|
||||
<meta property="og:title" content={`FDA Calendar · Stocknear`} />
|
||||
<meta
|
||||
property="og:description"
|
||||
content={`FDA Approval to track success rates of Biotech companies in the stock market.`}
|
||||
@ -47,7 +47,7 @@
|
||||
|
||||
<!-- Twitter specific meta tags -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content={`FDA Tracker · stocknear`} />
|
||||
<meta name="twitter:title" content={`FDA Tracker · Stocknear`} />
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content={`FDA Approval to track success rates of Biotech companies in the stock market.`}
|
||||
|
||||
@ -275,7 +275,7 @@ async function exportTreemap() {
|
||||
<svelte:head>
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Market
|
||||
Heatmaps · stocknear</title
|
||||
Heatmaps · Stocknear</title
|
||||
>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
@ -285,7 +285,7 @@ async function exportTreemap() {
|
||||
content="Stock Heatmaps of S&P500, Nasdaq and Dow Jones to see percentage changes of the return for different time periods"
|
||||
/>
|
||||
<!-- Other meta tags -->
|
||||
<meta property="og:title" content="Market Heatmaps · stocknear" />
|
||||
<meta property="og:title" content="Market Heatmaps · Stocknear" />
|
||||
<meta
|
||||
property="og:description"
|
||||
content="Stock Heatmaps of S&P500, Nasdaq and Dow Jones to see percentage changes of the return for different time periods"
|
||||
@ -295,7 +295,7 @@ async function exportTreemap() {
|
||||
|
||||
<!-- Twitter specific meta tags -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content="Market Heatmaps · stocknear" />
|
||||
<meta name="twitter:title" content="Market Heatmaps · Stocknear" />
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content="Stock Heatmaps of S&P500, Nasdaq and Dow Jones to see percentage changes of the return for different time periods"
|
||||
|
||||
@ -81,7 +81,7 @@
|
||||
<svelte:head>
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} All
|
||||
listed Hedge Funds · stocknear</title
|
||||
listed Hedge Funds · Stocknear</title
|
||||
>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0" />
|
||||
@ -91,7 +91,7 @@
|
||||
content="Find all listed Hedge Funds based on the US Market."
|
||||
/>
|
||||
<!-- Other meta tags -->
|
||||
<meta property="og:title" content="All listed Hedge Funds · stocknear" />
|
||||
<meta property="og:title" content="All listed Hedge Funds · Stocknear" />
|
||||
<meta
|
||||
property="og:description"
|
||||
content="Find all listed Hedge Funds based on the US Market."
|
||||
@ -101,7 +101,7 @@
|
||||
|
||||
<!-- Twitter specific meta tags -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content="All listed Hedge Funds · stocknear" />
|
||||
<meta name="twitter:title" content="All listed Hedge Funds · Stocknear" />
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content="Find all listed Hedge Funds based on the US Market."
|
||||
|
||||
@ -47,7 +47,7 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Top
|
||||
Wall Street Hedge Funds · stocknear
|
||||
Wall Street Hedge Funds · Stocknear
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
@ -57,7 +57,7 @@
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`Top Wall Street hedge funds · stocknear`}
|
||||
content={`Top Wall Street hedge funds · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -70,7 +70,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`Top Wall Street hedge funds · stocknear`}
|
||||
content={`Top Wall Street hedge funds · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
<svelte:head>
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Imprint
|
||||
· stocknear</title
|
||||
· Stocknear</title
|
||||
>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
@ -18,7 +18,7 @@
|
||||
content="Imprint of Stocknear. Contact Information if you need help."
|
||||
/>
|
||||
<!-- Other meta tags -->
|
||||
<meta property="og:title" content="Imprint · stocknear" />
|
||||
<meta property="og:title" content="Imprint · Stocknear" />
|
||||
<meta
|
||||
property="og:description"
|
||||
content="Imprint of Stocknear. Contact Information if you need help."
|
||||
@ -28,7 +28,7 @@
|
||||
|
||||
<!-- Twitter specific meta tags -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content="Imprint · stocknear" />
|
||||
<meta name="twitter:title" content="Imprint · Stocknear" />
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content="Imprint of Stocknear. Contact Information if you need help."
|
||||
|
||||
@ -35,14 +35,14 @@
|
||||
<svelte:head>
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Industry
|
||||
· stocknear</title
|
||||
· Stocknear</title
|
||||
>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
|
||||
<meta name="description" content="Lists of stocks industry and sectors." />
|
||||
<!-- Other meta tags -->
|
||||
<meta property="og:title" content="Industry · stocknear" />
|
||||
<meta property="og:title" content="Industry · Stocknear" />
|
||||
<meta
|
||||
property="og:description"
|
||||
content="Lists of stocks industry and sectors."
|
||||
@ -52,7 +52,7 @@
|
||||
|
||||
<!-- Twitter specific meta tags -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content="Industry · stocknear" />
|
||||
<meta name="twitter:title" content="Industry · Stocknear" />
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content="Lists of stocks industry and sectors."
|
||||
|
||||
@ -136,7 +136,7 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Insider
|
||||
Tracker · stocknear
|
||||
Tracker · Stocknear
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
@ -144,7 +144,7 @@
|
||||
/>
|
||||
|
||||
<!-- Other meta tags -->
|
||||
<meta property="og:title" content={`Insider Tracker · stocknear`} />
|
||||
<meta property="og:title" content={`Insider Tracker · Stocknear`} />
|
||||
<meta
|
||||
property="og:description"
|
||||
content={`Stay ahead of the market with our real-time insider tracking page.`}
|
||||
@ -154,7 +154,7 @@
|
||||
|
||||
<!-- Twitter specific meta tags -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content={`Insider Tracker · stocknear`} />
|
||||
<meta name="twitter:title" content={`Insider Tracker · Stocknear`} />
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content={`Stay ahead of the market with our real-time insider tracking page.`}
|
||||
|
||||
@ -49,7 +49,7 @@
|
||||
<svelte:head>
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} IPOs
|
||||
Calendar · stocknear</title
|
||||
Calendar · Stocknear</title
|
||||
>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
@ -59,7 +59,7 @@
|
||||
content="A list of upcoming ipos on the US stock market."
|
||||
/>
|
||||
<!-- Other meta tags -->
|
||||
<meta property="og:title" content="IPOs Calendar · stocknear" />
|
||||
<meta property="og:title" content="IPOs Calendar · Stocknear" />
|
||||
<meta
|
||||
property="og:description"
|
||||
content="A list of upcoming ipos on the US stock market."
|
||||
@ -73,7 +73,7 @@
|
||||
|
||||
<!-- Twitter specific meta tags -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content="IPOs Calendar · stocknear" />
|
||||
<meta name="twitter:title" content="IPOs Calendar · Stocknear" />
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content="A list of upcoming ipos on the US stock market."
|
||||
|
||||
@ -1,88 +1,46 @@
|
||||
<script lang ='ts'>
|
||||
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>
|
||||
|
||||
|
||||
<script lang 'ts'></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">
|
||||
<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: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"/>
|
||||
<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">
|
||||
|
||||
<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>
|
||||
@ -90,16 +48,18 @@ grid: {
|
||||
</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="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">
|
||||
<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-->
|
||||
@ -112,23 +72,41 @@ grid: {
|
||||
|
||||
<!--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:
|
||||
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.
|
||||
<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.
|
||||
<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.
|
||||
<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)">
|
||||
<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">
|
||||
@ -145,15 +123,210 @@ grid: {
|
||||
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>
|
||||
<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.
|
||||
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-->
|
||||
|
||||
@ -163,143 +336,218 @@ grid: {
|
||||
|
||||
<!--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.
|
||||
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-[#09090B] p-3 mb-3 bg-opacity-[0.9]">
|
||||
<h2
|
||||
class="mt-10 text-white font-bold text-3xl bg-[#111011] sm:bg-[#09090B] 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.
|
||||
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-[#09090B] p-3 mb-3 bg-opacity-[0.9]">
|
||||
<h2
|
||||
class="mt-10 text-white font-bold text-3xl bg-[#111011] sm:bg-[#09090B] 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).
|
||||
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-[#09090B] p-3 bg-opacity-[0.9]">
|
||||
<h2
|
||||
class="mt-10 text-white font-bold text-3xl bg-[#111011] sm:bg-[#09090B] 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.
|
||||
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).
|
||||
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-[#09090B] p-3 bg-opacity-[0.9]">
|
||||
<h2
|
||||
class="mt-10 text-white font-bold text-3xl bg-[#111011] sm:bg-[#09090B] 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)
|
||||
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.
|
||||
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-[#09090B] p-3 bg-opacity-[0.9]">
|
||||
<h2
|
||||
class="mt-10 text-white font-bold text-3xl bg-[#111011] sm:bg-[#09090B] 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:
|
||||
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)"} />
|
||||
<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 />
|
||||
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:
|
||||
<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}"} />
|
||||
<Katex
|
||||
math={"\\text{break-even} = \\text{strike price} + \\text{cost basis}"}
|
||||
/>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!--End Paragraph-->
|
||||
|
||||
|
||||
{#if data?.user?.tier !== 'Pro'}
|
||||
{#if data?.user?.tier !== "Pro"}
|
||||
<div class="mt-20">
|
||||
<UpgradeToPro data={data} title="Start investing smarter than everyone else with our platform" />
|
||||
<UpgradeToPro
|
||||
{data}
|
||||
title="Start investing smarter than everyone else with our platform"
|
||||
/>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</main>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<style>
|
||||
.app {
|
||||
height: 500px;
|
||||
|
||||
@ -222,7 +222,7 @@
|
||||
<svelte:head>
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Stock
|
||||
Lists · stocknear</title
|
||||
Lists · Stocknear</title
|
||||
>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
@ -232,7 +232,7 @@
|
||||
content="Lists of stocks that share common characteristics. See companies ranked by market cap, employee count, sales or others."
|
||||
/>
|
||||
<!-- Other meta tags -->
|
||||
<meta property="og:title" content="Stock Lists · stocknear" />
|
||||
<meta property="og:title" content="Stock Lists · Stocknear" />
|
||||
<meta
|
||||
property="og:description"
|
||||
content="Lists of stocks that share common characteristics. See companies ranked by market cap, employee count, sales or others."
|
||||
@ -242,7 +242,7 @@
|
||||
|
||||
<!-- Twitter specific meta tags -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content="Stock Lists · stocknear" />
|
||||
<meta name="twitter:title" content="Stock Lists · Stocknear" />
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content="Lists of stocks that share common characteristics. See companies ranked by market cap, employee count, sales or others."
|
||||
|
||||
@ -74,7 +74,7 @@
|
||||
<svelte:head>
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Sign
|
||||
In · stocknear</title
|
||||
In · Stocknear</title
|
||||
>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
@ -84,7 +84,7 @@
|
||||
content="Sign In to to improve your stock analysis for free"
|
||||
/>
|
||||
<!-- Other meta tags -->
|
||||
<meta property="og:title" content="Sign In · stocknear" />
|
||||
<meta property="og:title" content="Sign In · Stocknear" />
|
||||
<meta
|
||||
property="og:description"
|
||||
content="Sign In to to improve your stock analysis for free"
|
||||
@ -94,7 +94,7 @@
|
||||
|
||||
<!-- Twitter specific meta tags -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content="Sign In · stocknear" />
|
||||
<meta name="twitter:title" content="Sign In · Stocknear" />
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content="Sign In to to improve your stock analysis for free"
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
<svelte:head>
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Markdown
|
||||
Guide · stocknear</title
|
||||
Guide · Stocknear</title
|
||||
>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
@ -15,7 +15,7 @@
|
||||
content="Markdown Guide to Post on Stocknear Community Page"
|
||||
/>
|
||||
<!-- Other meta tags -->
|
||||
<meta property="og:title" content="Markdown Guide · stocknear" />
|
||||
<meta property="og:title" content="Markdown Guide · Stocknear" />
|
||||
<meta
|
||||
property="og:description"
|
||||
content="Markdown Guide to Post on Stocknear Community Page"
|
||||
@ -25,7 +25,7 @@
|
||||
|
||||
<!-- Twitter specific meta tags -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content="Markdown Guide · stocknear" />
|
||||
<meta name="twitter:title" content="Markdown Guide · Stocknear" />
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content="Markdown Guide to Post on Stocknear Community Page"
|
||||
|
||||
@ -38,7 +38,7 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Today's
|
||||
Top Stock {title} · stocknear
|
||||
Top Stock {title} · Stocknear
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
@ -48,7 +48,7 @@
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`Today's Top Stock ${title} · stocknear`}
|
||||
content={`Today's Top Stock ${title} · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -61,7 +61,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`Today's Top Stock ${title} · stocknear`}
|
||||
content={`Today's Top Stock ${title} · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""}
|
||||
Afterhours Top Stocks · stocknear
|
||||
Afterhours Top Stocks · Stocknear
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
@ -32,7 +32,7 @@
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`Today's Afterhours Top Stocks · stocknear`}
|
||||
content={`Today's Afterhours Top Stocks · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -45,7 +45,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`Today's Afterhours Top Stocks · stocknear`}
|
||||
content={`Today's Afterhours Top Stocks · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -38,7 +38,7 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Today's
|
||||
Top Stock {title} · stocknear
|
||||
Top Stock {title} · Stocknear
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
@ -48,7 +48,7 @@
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`Today's Top Stock ${title} · stocknear`}
|
||||
content={`Today's Top Stock ${title} · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -61,7 +61,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`Today's Top Stock ${title} · stocknear`}
|
||||
content={`Today's Top Stock ${title} · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -38,7 +38,7 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Today's
|
||||
Top Stock {title} · stocknear
|
||||
Top Stock {title} · Stocknear
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
@ -48,7 +48,7 @@
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`Today's Top Stock ${title} · stocknear`}
|
||||
content={`Today's Top Stock ${title} · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -61,7 +61,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`Today's Top Stock ${title} · stocknear`}
|
||||
content={`Today's Top Stock ${title} · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""}
|
||||
Premarket Top Stocks · stocknear
|
||||
Premarket Top Stocks · Stocknear
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
@ -32,7 +32,7 @@
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`Today's Premarket Top Stocks · stocknear`}
|
||||
content={`Today's Premarket Top Stocks · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -45,7 +45,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`Today's Premarket Top Stocks · stocknear`}
|
||||
content={`Today's Premarket Top Stocks · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -74,7 +74,7 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Today's
|
||||
Stock Market News and Breaking Stories · stocknear
|
||||
Stock Market News and Breaking Stories · Stocknear
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
@ -84,7 +84,7 @@
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`Today's Stock Market News and Breaking Stories · stocknear`}
|
||||
content={`Today's Stock Market News and Breaking Stories · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -97,7 +97,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`Today's Stock Market News and Breaking Stories · stocknear`}
|
||||
content={`Today's Stock Market News and Breaking Stories · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -74,7 +74,7 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Today's
|
||||
General News and Breaking Stories · stocknear
|
||||
General News and Breaking Stories · Stocknear
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
@ -84,7 +84,7 @@
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`Today's General News and Breaking Stories · stocknear`}
|
||||
content={`Today's General News and Breaking Stories · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -97,7 +97,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`Today's General News and Breaking Stories · stocknear`}
|
||||
content={`Today's General News and Breaking Stories · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Free
|
||||
Market Newsletter: Stay Informed in Just 2 Minutes Per Day · stocknear
|
||||
Market Newsletter: Stay Informed in Just 2 Minutes Per Day · Stocknear
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
@ -21,7 +21,7 @@
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`Free Market Newsletter: Stay Informed in Just 2 Minutes Per Day · stocknear`}
|
||||
content={`Free Market Newsletter: Stay Informed in Just 2 Minutes Per Day · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -38,7 +38,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`Free Market Newsletter: Stay Informed in Just 2 Minutes Per Day · stocknear`}
|
||||
content={`Free Market Newsletter: Stay Informed in Just 2 Minutes Per Day · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -60,14 +60,14 @@
|
||||
<svelte:head>
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Notifications
|
||||
· stocknear</title
|
||||
· Stocknear</title
|
||||
>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
|
||||
<meta name="description" content="Free Stock Analysis" />
|
||||
<!-- Other meta tags -->
|
||||
<meta property="og:title" content="Notifications · stocknear" />
|
||||
<meta property="og:title" content="Notifications · Stocknear" />
|
||||
<meta property="og:description" content="Free Stock Analysis" />
|
||||
<meta
|
||||
property="og:image"
|
||||
@ -78,7 +78,7 @@
|
||||
|
||||
<!-- Twitter specific meta tags -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content="Notifications · stocknear" />
|
||||
<meta name="twitter:title" content="Notifications · Stocknear" />
|
||||
<meta name="twitter:description" content="Free Stock Analysis" />
|
||||
<meta
|
||||
name="twitter:image"
|
||||
|
||||
@ -795,7 +795,7 @@ function sendMessage(message) {
|
||||
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Options
|
||||
Flow Feed · stocknear
|
||||
Flow Feed · Stocknear
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
@ -803,7 +803,7 @@ function sendMessage(message) {
|
||||
/>
|
||||
|
||||
<!-- Other meta tags -->
|
||||
<meta property="og:title" content={`Options Flow Feed · stocknear`} />
|
||||
<meta property="og:title" content={`Options Flow Feed · Stocknear`} />
|
||||
<meta
|
||||
property="og:description"
|
||||
content={`Explore unusual options from big institutional traders and hedge funds.`}
|
||||
@ -813,7 +813,7 @@ function sendMessage(message) {
|
||||
|
||||
<!-- Twitter specific meta tags -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content={`Options Flow Feed · stocknear`} />
|
||||
<meta name="twitter:title" content={`Options Flow Feed · Stocknear`} />
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content={`Explore unusual options from big institutional traders and hedge funds.`}
|
||||
|
||||
@ -145,7 +145,7 @@
|
||||
<svelte:head>
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} US
|
||||
Politician Stock Trade Tracker · stocknear</title
|
||||
Politician Stock Trade Tracker · Stocknear</title
|
||||
>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
@ -157,7 +157,7 @@
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content="US Politician Stock Trade Tracker · stocknear"
|
||||
content="US Politician Stock Trade Tracker · Stocknear"
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -170,7 +170,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content="US Politician Stock Trade Tracker · stocknear"
|
||||
content="US Politician Stock Trade Tracker · Stocknear"
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -108,7 +108,7 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Which
|
||||
stocks is {name} trading? · stocknear
|
||||
stocks is {name} trading? · Stocknear
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
@ -118,7 +118,7 @@
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`Which stocks is ${name} trading? · stocknear`}
|
||||
content={`Which stocks is ${name} trading? · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -131,7 +131,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`Which stocks is ${name} trading? · stocknear`}
|
||||
content={`Which stocks is ${name} trading? · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -63,7 +63,7 @@
|
||||
<svelte:head>
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Latest
|
||||
Congressional Trading · stocknear</title
|
||||
Congressional Trading · Stocknear</title
|
||||
>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
@ -75,7 +75,7 @@
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content="Latest Congressional Trading · stocknear"
|
||||
content="Latest Congressional Trading · Stocknear"
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -88,7 +88,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content="Latest Congressional Trading · stocknear"
|
||||
content="Latest Congressional Trading · Stocknear"
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -263,7 +263,7 @@
|
||||
<svelte:head>
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Price
|
||||
Alert · stocknear</title
|
||||
Alert · Stocknear</title
|
||||
>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
@ -273,7 +273,7 @@
|
||||
content="Set a price alert and get instant notification."
|
||||
/>
|
||||
<!-- Other meta tags -->
|
||||
<meta property="og:title" content="Price Alert · stocknear" />
|
||||
<meta property="og:title" content="Price Alert · Stocknear" />
|
||||
<meta
|
||||
property="og:description"
|
||||
content="Set a price alert and get instant notification."
|
||||
@ -283,7 +283,7 @@
|
||||
|
||||
<!-- Twitter specific meta tags -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content="Price Alert · stocknear" />
|
||||
<meta name="twitter:title" content="Price Alert · Stocknear" />
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content="Set a price alert and get instant notification."
|
||||
|
||||
@ -79,7 +79,7 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Pricing
|
||||
· stocknear
|
||||
· Stocknear
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
@ -87,7 +87,7 @@
|
||||
/>
|
||||
|
||||
<!-- Other meta tags -->
|
||||
<meta property="og:title" content={`Pricing · stocknear`} />
|
||||
<meta property="og:title" content={`Pricing · Stocknear`} />
|
||||
<meta
|
||||
property="og:description"
|
||||
content={`Get unlimited access to all of our data and tools, including full financial history, full ETF holdings, and more.`}
|
||||
@ -97,7 +97,7 @@
|
||||
|
||||
<!-- Twitter specific meta tags -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content={`Pricing · stocknear`} />
|
||||
<meta name="twitter:title" content={`Pricing · Stocknear`} />
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content={`Get unlimited access to all of our data and tools, including full financial history, full ETF holdings, and more.`}
|
||||
|
||||
@ -7,19 +7,19 @@
|
||||
<svelte:head>
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Privacy
|
||||
Policy · stocknear</title
|
||||
Policy · Stocknear</title
|
||||
>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
|
||||
<!-- Other meta tags -->
|
||||
<meta property="og:title" content="Privacy Policy · stocknear" />
|
||||
<meta property="og:title" content="Privacy Policy · 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="Privacy Policy · stocknear" />
|
||||
<meta name="twitter:title" content="Privacy Policy · Stocknear" />
|
||||
<!-- Add more Twitter meta tags as needed -->
|
||||
</svelte:head>
|
||||
|
||||
|
||||
@ -141,20 +141,20 @@
|
||||
<svelte:head>
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""}
|
||||
My Account · stocknear</title
|
||||
My Account · Stocknear</title
|
||||
>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
|
||||
<!-- Other meta tags -->
|
||||
<meta property="og:title" content="My Account · stocknear" />
|
||||
<meta property="og:title" content="My Account · 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="My Account · stocknear" />
|
||||
<meta name="twitter:title" content="My Account · Stocknear" />
|
||||
|
||||
<!-- Add more Twitter meta tags as needed -->
|
||||
</svelte:head>
|
||||
|
||||
@ -261,7 +261,7 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Wallstreetbets
|
||||
Tracker · stocknear
|
||||
Tracker · Stocknear
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
@ -269,7 +269,7 @@
|
||||
/>
|
||||
|
||||
<!-- Other meta tags -->
|
||||
<meta property="og:title" content={`Wallstreetbets Tracker · stocknear`} />
|
||||
<meta property="og:title" content={`Wallstreetbets Tracker · Stocknear`} />
|
||||
<meta
|
||||
property="og:description"
|
||||
content={`Track the stocks and discussion of Wallstreetbets in realtime.`}
|
||||
@ -279,7 +279,7 @@
|
||||
|
||||
<!-- Twitter specific meta tags -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content={`Wallstreetbets Tracker · stocknear`} />
|
||||
<meta name="twitter:title" content={`Wallstreetbets Tracker · Stocknear`} />
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content={`Track the stocks and discussion of Wallstreetbets in realtime.`}
|
||||
|
||||
@ -69,7 +69,7 @@
|
||||
<!-- HEADER FOR BETTER SEO -->
|
||||
<svelte:head>
|
||||
<meta charset="utf-8" />
|
||||
<title>Sign Up · stocknear</title>
|
||||
<title>Sign Up · Stocknear</title>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
||||
<meta
|
||||
name="description"
|
||||
|
||||
@ -1,10 +1,8 @@
|
||||
<script lang='ts'>
|
||||
|
||||
import toast from 'svelte-french-toast';
|
||||
import Input from '$lib/components/Input.svelte';
|
||||
import { pb } from '$lib/pocketbase';
|
||||
import { goto } from '$app/navigation';
|
||||
|
||||
<script lang="ts">
|
||||
import toast from "svelte-french-toast";
|
||||
import Input from "$lib/components/Input.svelte";
|
||||
import { pb } from "$lib/pocketbase";
|
||||
import { goto } from "$app/navigation";
|
||||
|
||||
let loading = false;
|
||||
let email: String;
|
||||
@ -12,34 +10,46 @@ let email:String;
|
||||
async function resetPassword(event) {
|
||||
event.preventDefault();
|
||||
try {
|
||||
await pb.collection('users').requestPasswordReset(email);
|
||||
toast.success('Password resetted. Check your emails!', {
|
||||
style: 'border-radius: 200px; background: #333; color: #fff;',
|
||||
await pb.collection("users").requestPasswordReset(email);
|
||||
toast.success("Password resetted. Check your emails!", {
|
||||
style: "border-radius: 200px; background: #333; color: #fff;",
|
||||
});
|
||||
goto('/login')
|
||||
goto("/login");
|
||||
} catch (err) {
|
||||
toast.error({err}, {
|
||||
style: 'border-radius: 200px; background: #333; color: #fff;',
|
||||
});
|
||||
};
|
||||
toast.error(
|
||||
{ err },
|
||||
{
|
||||
style: "border-radius: 200px; background: #333; color: #fff;",
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<!-- HEADER FOR BETTER SEO -->
|
||||
<svelte:head>
|
||||
<meta charset="utf-8">
|
||||
<title> Reset Password · stocknear</title>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<meta name="description" content="Reset your password to sign in to your stocknear account.">
|
||||
<meta charset="utf-8" />
|
||||
<title>Reset Password · Stocknear</title>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
||||
<meta
|
||||
name="description"
|
||||
content="Reset your password to sign in to your stocknear account."
|
||||
/>
|
||||
</svelte:head>
|
||||
|
||||
<div class="flex flex-col items-center min-h-screen w-full max-w-3xl m-auto mt-40">
|
||||
<div
|
||||
class="flex flex-col items-center min-h-screen w-full max-w-3xl m-auto mt-40"
|
||||
>
|
||||
<h2 class="text-center text-3xl font-bold tracking-tight text-white">
|
||||
Reset Your Password
|
||||
</h2>
|
||||
<p class="text-center mt-1 text-white">We'll send you an email with a link to reset your password.</p>
|
||||
<form on:submit={resetPassword} class="flex flex-col items-center space-y-2 w-5/6 sm:w-full pt-4" >
|
||||
<p class="text-center mt-1 text-white">
|
||||
We'll send you an email with a link to reset your password.
|
||||
</p>
|
||||
<form
|
||||
on:submit={resetPassword}
|
||||
class="flex flex-col items-center space-y-2 w-5/6 sm:w-full pt-4"
|
||||
>
|
||||
<input
|
||||
class="input input-bordered w-full max-w-lg bg-[#242527] placeholder-gray-400 text-white whitespace-normal ring-2"
|
||||
type="email"
|
||||
@ -48,12 +58,12 @@ async function resetPassword(event) {
|
||||
autocomplete="off"
|
||||
/>
|
||||
<div class="w-full max-w-lg pt-2">
|
||||
<button type="submit" class="btn bg-blue-600 hover:bg-blue-500 text-white w-full">
|
||||
<button
|
||||
type="submit"
|
||||
class="btn bg-blue-600 hover:bg-blue-500 text-white w-full"
|
||||
>
|
||||
Request Password Reset
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
@ -36,7 +36,7 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Sentiment
|
||||
Tracker · stocknear
|
||||
Tracker · Stocknear
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
@ -44,7 +44,7 @@
|
||||
/>
|
||||
|
||||
<!-- Other meta tags -->
|
||||
<meta property="og:title" content={`Sentiment Tracker · stocknear`} />
|
||||
<meta property="og:title" content={`Sentiment Tracker · Stocknear`} />
|
||||
<meta
|
||||
property="og:description"
|
||||
content={`Stay ahead of the market with our real-time filtering of the most discussed and bullish stocks on social media. Discover trending stocks and make informed investment decisions today!`}
|
||||
@ -54,7 +54,7 @@
|
||||
|
||||
<!-- Twitter specific meta tags -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content={`Sentiment Tracker · stocknear`} />
|
||||
<meta name="twitter:title" content={`Sentiment Tracker · Stocknear`} />
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content={`Stay ahead of the market with our real-time filtering of the most discussed and bullish stocks on social media. Discover trending stocks and make informed investment decisions today!`}
|
||||
|
||||
@ -2332,7 +2332,7 @@ const handleKeyDown = (event) => {
|
||||
/>
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Stock
|
||||
Screener · stocknear
|
||||
Screener · Stocknear
|
||||
</title>
|
||||
|
||||
<meta
|
||||
@ -2340,7 +2340,7 @@ const handleKeyDown = (event) => {
|
||||
content={`Build your Stock Screener to find profitable stocks.`}
|
||||
/>
|
||||
<!-- Other meta tags -->
|
||||
<meta property="og:title" content={`Stock Screener · stocknear`} />
|
||||
<meta property="og:title" content={`Stock Screener · Stocknear`} />
|
||||
<meta
|
||||
property="og:description"
|
||||
content={`Build your Stock Screener to find profitable stocks.`}
|
||||
@ -2350,7 +2350,7 @@ const handleKeyDown = (event) => {
|
||||
|
||||
<!-- Twitter specific meta tags -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content={`Stock Screener · stocknear`} />
|
||||
<meta name="twitter:title" content={`Stock Screener · Stocknear`} />
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content={`Build your Stock Screener to find profitable stocks.`}
|
||||
|
||||
@ -14,7 +14,7 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} List
|
||||
of All Stock Ticker Symbols · stocknear
|
||||
of All Stock Ticker Symbols · Stocknear
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
@ -24,7 +24,7 @@
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`List of All Stock Ticker Symbols · stocknear`}
|
||||
content={`List of All Stock Ticker Symbols · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -41,7 +41,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`List of All Stock Ticker Symbols · stocknear`}
|
||||
content={`List of All Stock Ticker Symbols · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -53,12 +53,12 @@
|
||||
function shareContent(url) {
|
||||
if (navigator.share) {
|
||||
navigator
|
||||
.share({
|
||||
?.share({
|
||||
title: document.title,
|
||||
url,
|
||||
})
|
||||
.then(() => console.log("Content shared successfully."))
|
||||
.catch((error) => console.log("Error sharing content:", error));
|
||||
?.then(() => console.log("Content shared successfully."))
|
||||
?.catch((error) => console.log("Error sharing content:", error));
|
||||
} else {
|
||||
toast.error("Sharing is not supported by your device", {
|
||||
style: "background: #333; color: #fff;",
|
||||
@ -75,7 +75,7 @@
|
||||
metrics: "metrics",
|
||||
forecast: "/forecast",
|
||||
financials: "/financials",
|
||||
news: "/news",
|
||||
profile: "/profile",
|
||||
};
|
||||
|
||||
if (state !== "overview" && sectionMap[state]) {
|
||||
@ -353,7 +353,7 @@
|
||||
insider: "insider",
|
||||
dividends: "dividends",
|
||||
forecast: "forecast",
|
||||
news: "news",
|
||||
profile: "profile",
|
||||
};
|
||||
displaySection =
|
||||
sectionMap[
|
||||
@ -446,16 +446,20 @@
|
||||
>
|
||||
<svg
|
||||
class="w-6 h-6 inline-block"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 512 512"
|
||||
><path
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="white"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
stroke="#fff"
|
||||
><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g
|
||||
id="SVGRepo_tracerCarrier"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
stroke-width="32"
|
||||
d="M336 192h40a40 40 0 0 1 40 40v192a40 40 0 0 1-40 40H136a40 40 0 0 1-40-40V232a40 40 0 0 1 40-40h40m160-64l-80-80l-80 80m80 193V48"
|
||||
/></svg
|
||||
></g><g id="SVGRepo_iconCarrier">
|
||||
<path
|
||||
d="M20.3359 3.22136L3.87333 8.70889C3.56801 8.81066 3.55033 9.23586 3.84614 9.36263L9.89655 11.9557C9.96078 11.9832 10.0347 11.9752 10.0916 11.9346L16.0235 7.69749C16.2073 7.56618 16.4338 7.79266 16.3025 7.97648L12.0654 13.9084C12.0248 13.9653 12.0168 14.0392 12.0443 14.1034L14.6374 20.1539C14.7641 20.4497 15.1893 20.432 15.2911 20.1267L20.7786 3.66408C20.8698 3.39046 20.6095 3.13015 20.3359 3.22136Z"
|
||||
fill="#fff"
|
||||
></path>
|
||||
</g></svg
|
||||
>
|
||||
</label>
|
||||
<!--End Share Button-->
|
||||
@ -949,6 +953,16 @@
|
||||
>
|
||||
Dividends
|
||||
</a>
|
||||
<a
|
||||
href={`/stocks/${$stockTicker}/profile`}
|
||||
on:click={() => changeSection("profile")}
|
||||
class="p-2 px-5 cursor-pointer {displaySection ===
|
||||
'profile'
|
||||
? 'text-white bg-primary sm:hover:bg-opacity-[0.95]'
|
||||
: 'text-gray-400 sm:hover:text-white sm:hover:bg-primary sm:hover:bg-opacity-[0.95]'}"
|
||||
>
|
||||
Profile
|
||||
</a>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
|
||||
@ -727,7 +727,7 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""}
|
||||
{data?.companyName} ({$stockTicker}) Stock Price, Quote & News · stocknear
|
||||
{data?.companyName} ({$stockTicker}) Stock Price, Quote & News · Stocknear
|
||||
</title>
|
||||
|
||||
<meta
|
||||
@ -737,7 +737,7 @@
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`${data?.companyName} (${$stockTicker}) Stock Price, Quote & News · stocknear`}
|
||||
content={`${data?.companyName} (${$stockTicker}) Stock Price, Quote & News · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -751,7 +751,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`${data?.companyName} (${$stockTicker}) Stock Price, Quote & News · stocknear`}
|
||||
content={`${data?.companyName} (${$stockTicker}) Stock Price, Quote & News · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -130,7 +130,7 @@
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Dividend History, Dates & Yield · stocknear`}
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Dividend History, Dates & Yield · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -143,7 +143,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Dividend History, Dates & Yield · stocknear`}
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Dividend History, Dates & Yield · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -404,7 +404,7 @@
|
||||
/>
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Financials - Income Statement · stocknear`}
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Financials - Income Statement · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -414,7 +414,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Financials - Income Statement · stocknear`}
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Financials - Income Statement · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -397,7 +397,7 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""}
|
||||
{$displayCompanyName} ({$stockTicker}) Cash Flow Statement · stocknear
|
||||
{$displayCompanyName} ({$stockTicker}) Cash Flow Statement · Stocknear
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
@ -407,7 +407,7 @@
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Cash Flow Statement · stocknear`}
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Cash Flow Statement · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -420,7 +420,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Cash Flow Statement · stocknear`}
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Cash Flow Statement · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -365,7 +365,7 @@
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Financial Ratios and Metrics · stocknear`}
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Financial Ratios and Metrics · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -378,7 +378,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Financial Ratios and Metrics · stocknear`}
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Financial Ratios and Metrics · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -457,7 +457,7 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""}
|
||||
{$displayCompanyName} ({$stockTicker}) Forecast Overview · stocknear
|
||||
{$displayCompanyName} ({$stockTicker}) Forecast Overview · Stocknear
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
@ -467,7 +467,7 @@
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Forecast Overview · stocknear`}
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Forecast Overview · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -480,7 +480,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Forecast Overview · stocknear`}
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Forecast Overview · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -1,5 +1,11 @@
|
||||
<script lang="ts">
|
||||
import { numberOfUnreadNotification, displayCompanyName, stockTicker, sentimentComponent, priceAnalysisComponent } from "$lib/store";
|
||||
import {
|
||||
numberOfUnreadNotification,
|
||||
displayCompanyName,
|
||||
stockTicker,
|
||||
sentimentComponent,
|
||||
priceAnalysisComponent,
|
||||
} from "$lib/store";
|
||||
import PriceAnalysis from "$lib/components/PriceAnalysis.svelte";
|
||||
import SentimentAnalysis from "$lib/components/SentimentAnalysis.svelte";
|
||||
import AnalystInsight from "$lib/components/AnalystInsight.svelte";
|
||||
@ -14,47 +20,78 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""}
|
||||
{$displayCompanyName} ({$stockTicker}) Forecast AI · stocknear
|
||||
{$displayCompanyName} ({$stockTicker}) Forecast AI · Stocknear
|
||||
</title>
|
||||
<meta name="description" content={`A list of analyst ratings for Advanced Micro Devices (AMD) stock. See upgrades, downgrades, price targets and more from top Wall Street stock analysts.`} />
|
||||
<meta
|
||||
name="description"
|
||||
content={`A list of analyst ratings for Advanced Micro Devices (AMD) stock. See upgrades, downgrades, price targets and more from top Wall Street stock analysts.`}
|
||||
/>
|
||||
|
||||
<!-- Other meta tags -->
|
||||
<meta property="og:title" content={`${$displayCompanyName} (${$stockTicker}) Forecast AI · stocknear`} />
|
||||
<meta property="og:description" content={`A list of analyst ratings for Advanced Micro Devices (AMD) stock. See upgrades, downgrades, price targets and more from top Wall Street stock analysts.`} />
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Forecast AI · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
content={`A list of analyst ratings for Advanced Micro Devices (AMD) stock. See upgrades, downgrades, price targets and more from top Wall Street stock analysts.`}
|
||||
/>
|
||||
<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={`${$displayCompanyName} (${$stockTicker}) Forecast AI · stocknear`} />
|
||||
<meta name="twitter:description" content={`A list of analyst ratings for Advanced Micro Devices (AMD) stock. See upgrades, downgrades, price targets and more from top Wall Street stock analysts.`} />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Forecast AI · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content={`A list of analyst ratings for Advanced Micro Devices (AMD) stock. See upgrades, downgrades, price targets and more from top Wall Street stock analysts.`}
|
||||
/>
|
||||
<!-- Add more Twitter meta tags as needed -->
|
||||
</svelte:head>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section class="bg-[#09090B] overflow-hidden text-white h-full mb-40 sm:mb-0 w-full">
|
||||
<section
|
||||
class="bg-[#09090B] overflow-hidden text-white h-full mb-40 sm:mb-0 w-full"
|
||||
>
|
||||
<div class="flex justify-center m-auto h-full overflow-hidden w-full">
|
||||
<div class="relative flex justify-center items-center overflow-hidden w-full">
|
||||
<div
|
||||
class="relative flex justify-center items-center overflow-hidden w-full"
|
||||
>
|
||||
<div class="sm:p-7 w-full m-auto mt-2 sm:mt-0">
|
||||
<Lazy>
|
||||
<div class="w-full mt-10 sm:mt-0 m-auto sm:pt-6 {Object?.keys(data?.getAnalystInsight)?.length === 0 ? 'hidden' : ''}">
|
||||
<AnalystInsight data={data} />
|
||||
<div
|
||||
class="w-full mt-10 sm:mt-0 m-auto sm:pt-6 {Object?.keys(
|
||||
data?.getAnalystInsight,
|
||||
)?.length === 0
|
||||
? 'hidden'
|
||||
: ''}"
|
||||
>
|
||||
<AnalystInsight {data} />
|
||||
</div>
|
||||
</Lazy>
|
||||
|
||||
<Lazy>
|
||||
<div class="w-full mt-10 sm:mt-5 m-auto sm:pb-6 sm:pt-6 {Object?.keys(data?.getPriceAnalysis)?.length === 0 ? 'hidden' : ''}">
|
||||
<PriceAnalysis data={data} />
|
||||
<div
|
||||
class="w-full mt-10 sm:mt-5 m-auto sm:pb-6 sm:pt-6 {Object?.keys(
|
||||
data?.getPriceAnalysis,
|
||||
)?.length === 0
|
||||
? 'hidden'
|
||||
: ''}"
|
||||
>
|
||||
<PriceAnalysis {data} />
|
||||
</div>
|
||||
</Lazy>
|
||||
|
||||
|
||||
<Lazy>
|
||||
<div class="w-full mt-10 sm:mt-5 m-auto sm:pb-6 sm:pt-6 {data?.getSentimentAnalysis?.length === 0 ? 'hidden' : ''}">
|
||||
<SentimentAnalysis data={data} />
|
||||
<div
|
||||
class="w-full mt-10 sm:mt-5 m-auto sm:pb-6 sm:pt-6 {data
|
||||
?.getSentimentAnalysis?.length === 0
|
||||
? 'hidden'
|
||||
: ''}"
|
||||
>
|
||||
<SentimentAnalysis {data} />
|
||||
</div>
|
||||
</Lazy>
|
||||
</div>
|
||||
|
||||
@ -197,7 +197,7 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""}
|
||||
{$displayCompanyName} ({$stockTicker}) Analyst Ratings · stocknear
|
||||
{$displayCompanyName} ({$stockTicker}) Analyst Ratings · Stocknear
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
@ -207,7 +207,7 @@
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Analyst Ratings · stocknear`}
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Analyst Ratings · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -220,7 +220,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Analyst Ratings · stocknear`}
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Analyst Ratings · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -238,7 +238,7 @@
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`${$displayCompanyName} (${$stockTicker}) US Congress & Senate Trading · stocknear`}
|
||||
content={`${$displayCompanyName} (${$stockTicker}) US Congress & Senate Trading · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -251,7 +251,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`${$displayCompanyName} (${$stockTicker}) US Congress & Senate Trading · stocknear`}
|
||||
content={`${$displayCompanyName} (${$stockTicker}) US Congress & Senate Trading · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -121,7 +121,7 @@
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`${$displayCompanyName} (${$stockTicker}) US Congress & Senate Trading · stocknear`}
|
||||
content={`${$displayCompanyName} (${$stockTicker}) US Congress & Senate Trading · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -134,7 +134,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`${$displayCompanyName} (${$stockTicker}) US Congress & Senate Trading · stocknear`}
|
||||
content={`${$displayCompanyName} (${$stockTicker}) US Congress & Senate Trading · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -26,7 +26,7 @@
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`${$displayCompanyName} (${$stockTicker}) US Congress & Senate Trading · stocknear`}
|
||||
content={`${$displayCompanyName} (${$stockTicker}) US Congress & Senate Trading · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -39,7 +39,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`${$displayCompanyName} (${$stockTicker}) US Congress & Senate Trading · stocknear`}
|
||||
content={`${$displayCompanyName} (${$stockTicker}) US Congress & Senate Trading · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -81,7 +81,7 @@
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""}
|
||||
{$displayCompanyName} ({$stockTicker}) · Q{quarter}
|
||||
{year} · Earnings Call Transcript · stocknear
|
||||
{year} · Earnings Call Transcript · Stocknear
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
@ -91,7 +91,7 @@
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`${$displayCompanyName} (${$stockTicker}) · Q${quarter} ${year} · Earnings Call Transcript · stocknear`}
|
||||
content={`${$displayCompanyName} (${$stockTicker}) · Q${quarter} ${year} · Earnings Call Transcript · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -104,7 +104,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`${$displayCompanyName} (${$stockTicker}) · Q${quarter} ${year} · Earnings Call Transcript · stocknear`}
|
||||
content={`${$displayCompanyName} (${$stockTicker}) · Q${quarter} ${year} · Earnings Call Transcript · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -62,7 +62,7 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""}
|
||||
{$displayCompanyName} ({$stockTicker}) Business Metric Overview · stocknear
|
||||
{$displayCompanyName} ({$stockTicker}) Business Metric Overview · Stocknear
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
@ -70,7 +70,7 @@
|
||||
/>
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Business Metric Overview · stocknear`}
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Business Metric Overview · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -80,7 +80,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Business Metric Overview · stocknear`}
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Business Metric Overview · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -154,19 +154,19 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""}
|
||||
{$displayCompanyName} ({$stockTicker}) Revenue Breakdown · stocknear
|
||||
{$displayCompanyName} ({$stockTicker}) Revenue Breakdown · Stocknear
|
||||
</title>
|
||||
<meta name="description" content={`Revenue & Geographic Breakdown`} />
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Revenue Breakdown · stocknear`}
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Revenue Breakdown · Stocknear`}
|
||||
/>
|
||||
<meta property="og:description" content={`Revenue & Geographic Breakdown`} />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Revenue Breakdown · stocknear`}
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Revenue Breakdown · Stocknear`}
|
||||
/>
|
||||
<meta name="twitter:description" content={`Revenue & Geographic Breakdown`} />
|
||||
</svelte:head>
|
||||
|
||||
@ -538,7 +538,7 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""}
|
||||
{$displayCompanyName} ({$stockTicker}) Options Activity · stocknear
|
||||
{$displayCompanyName} ({$stockTicker}) Options Activity · Stocknear
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
@ -548,7 +548,7 @@
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Options Activity · stocknear`}
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Options Activity · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -561,7 +561,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Options Activity · stocknear`}
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Options Activity · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
28
src/routes/stocks/[tickerID]/profile/+layout.server.ts
Normal file
28
src/routes/stocks/[tickerID]/profile/+layout.server.ts
Normal file
@ -0,0 +1,28 @@
|
||||
export const load = async ({ locals, params }) => {
|
||||
|
||||
const getSimilarStocks = async () => {
|
||||
const { apiKey, apiURL } = locals;
|
||||
const postData = {
|
||||
ticker: params.tickerID,
|
||||
};
|
||||
|
||||
// make the POST request to the endpoint
|
||||
const response = await fetch(apiURL + "/similar-stocks", {
|
||||
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 {
|
||||
getSimilarStocks: await getSimilarStocks(),
|
||||
};
|
||||
};
|
||||
87
src/routes/stocks/[tickerID]/profile/+layout.svelte
Normal file
87
src/routes/stocks/[tickerID]/profile/+layout.svelte
Normal file
@ -0,0 +1,87 @@
|
||||
<script lang="ts">
|
||||
import ArrowLogo from "lucide-svelte/icons/move-up-right";
|
||||
|
||||
export let data;
|
||||
|
||||
const similarStocks = data?.getSimilarStocks?.sort(
|
||||
(a, b) => b?.dividendYield - a?.dividendYield,
|
||||
);
|
||||
</script>
|
||||
|
||||
<section class="w-auto overflow-hidden min-h-screen">
|
||||
<div class="w-full overflow-hidden m-auto">
|
||||
<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">
|
||||
<slot />
|
||||
</main>
|
||||
|
||||
<aside class="hidden lg:block relative fixed w-1/4 ml-4">
|
||||
{#if data?.user?.tier !== "Pro" || data?.user?.freeTrial}
|
||||
<div
|
||||
class="w-full border border-gray-600 rounded-md h-fit pb-4 mt-4 cursor-pointer"
|
||||
>
|
||||
<a
|
||||
href="/pricing"
|
||||
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">
|
||||
Pro Subscription
|
||||
</h2>
|
||||
<ArrowLogo class="w-8 h-8 mr-3 flex-shrink-0" />
|
||||
</div>
|
||||
<span class="text-white p-3 ml-3 mr-3">
|
||||
Upgrade now for unlimited access to all data and tools.
|
||||
</span>
|
||||
</a>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{#if similarStocks?.length > 0}
|
||||
<div
|
||||
class="w-full p-2 text-white border border-gray-600 rounded-md h-fit pb-4 mt-4 cursor-pointer"
|
||||
>
|
||||
<h3 class="p-2 pt-4 text-xl font-semibold">Related Stocks</h3>
|
||||
<table class="table table-sm table-compact w-full text-white">
|
||||
<thead class="text-white"
|
||||
><tr
|
||||
><th
|
||||
class="whitespace-nowrap border-b font-semibold text-sm text-left"
|
||||
>Company</th
|
||||
>
|
||||
<th
|
||||
class="whitespace-nowrap border-b font-semibold text-sm text-right"
|
||||
>Dividend Yield</th
|
||||
></tr
|
||||
></thead
|
||||
>
|
||||
<tbody>
|
||||
{#each similarStocks?.slice(0, 8) as item}
|
||||
<tr class="border-gray-600 border-b"
|
||||
><td class="text-left"
|
||||
><a
|
||||
href={`/stocks/${item?.symbol}`}
|
||||
class="sm:hover:text-white text-blue-400"
|
||||
>{item?.symbol}</a
|
||||
></td
|
||||
>
|
||||
<td class="text-right cursor-normal"
|
||||
>{item?.dividendYield !== null &&
|
||||
item?.dividendYield !== undefined
|
||||
? item?.dividendYield + "%"
|
||||
: "n/a"}</td
|
||||
>
|
||||
</tr>
|
||||
{/each}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{/if}
|
||||
</aside>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
187
src/routes/stocks/[tickerID]/profile/+page.server.ts
Normal file
187
src/routes/stocks/[tickerID]/profile/+page.server.ts
Normal file
@ -0,0 +1,187 @@
|
||||
import { error, fail, redirect } from "@sveltejs/kit";
|
||||
import { validateData } from "$lib/utils";
|
||||
import { loginUserSchema, registerUserSchema } from "$lib/schemas";
|
||||
|
||||
|
||||
export const load = async ({ params, locals }) => {
|
||||
const getStockDividend = async () => {
|
||||
let newsList;
|
||||
|
||||
const { apiURL, apiKey } = locals;
|
||||
|
||||
const postData = {
|
||||
ticker: params.tickerID,
|
||||
};
|
||||
|
||||
// make the POST request to the endpoint
|
||||
const response = await fetch(apiURL + "/stock-dividend", {
|
||||
method: "POST",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
"X-API-KEY": apiKey,
|
||||
},
|
||||
body: JSON.stringify(postData),
|
||||
});
|
||||
|
||||
newsList = await response.json();
|
||||
|
||||
return newsList;
|
||||
};
|
||||
|
||||
// Make sure to return a promise
|
||||
return {
|
||||
getStockDividend: await getStockDividend(),
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
|
||||
export const actions = {
|
||||
login: async ({ url, request, locals }) => {
|
||||
|
||||
const path = url?.href?.replace("/oauth2","")
|
||||
|
||||
const { formData, errors } = await validateData(
|
||||
await request.formData(),
|
||||
loginUserSchema,
|
||||
);
|
||||
|
||||
if (errors) {
|
||||
return fail(400, {
|
||||
data: formData,
|
||||
errors: errors.fieldErrors,
|
||||
});
|
||||
}
|
||||
|
||||
try {
|
||||
await locals.pb
|
||||
.collection("users")
|
||||
.authWithPassword(formData.email, formData.password);
|
||||
|
||||
/*
|
||||
if (!locals.pb?.authStore?.model?.verified) {
|
||||
locals.pb.authStore.clear();
|
||||
return {
|
||||
notVerified: true,
|
||||
};
|
||||
}
|
||||
*/
|
||||
} catch (err) {
|
||||
console.log("Error: ", err);
|
||||
error(err.status, err.message);
|
||||
}
|
||||
|
||||
redirect(302, path);
|
||||
},
|
||||
|
||||
register: async ({ url, locals, request }) => {
|
||||
const path = url?.href?.replace("/oauth2","")
|
||||
|
||||
const { formData, errors } = await validateData(
|
||||
await request.formData(),
|
||||
registerUserSchema,
|
||||
);
|
||||
|
||||
if (errors) {
|
||||
return fail(400, {
|
||||
data: formData,
|
||||
errors: errors.fieldErrors,
|
||||
});
|
||||
}
|
||||
|
||||
try {
|
||||
let newUser = await locals.pb.collection("users").create(formData);
|
||||
/*
|
||||
await locals.pb?.collection('users').update(
|
||||
newUser?.id, {
|
||||
'freeTrial' : true,
|
||||
'tier': 'Pro', //Give new users a free trial for the Pro Subscription
|
||||
});
|
||||
*/
|
||||
await locals.pb.collection("users")?.requestVerification(formData.email);
|
||||
} catch (err) {
|
||||
console.log("Error: ", err);
|
||||
error(err.status, err.message);
|
||||
}
|
||||
|
||||
try {
|
||||
await locals.pb
|
||||
.collection("users")
|
||||
.authWithPassword(formData.email, formData.password);
|
||||
} catch (err) {
|
||||
console.log("Error: ", err);
|
||||
error(err.status, err.message);
|
||||
}
|
||||
|
||||
redirect(303, path);
|
||||
},
|
||||
|
||||
oauth2: async ({ url, locals, request, cookies }) => {
|
||||
|
||||
const path = url?.href?.replace("/oauth2","")
|
||||
const authMethods = (await locals?.pb
|
||||
?.collection("users")
|
||||
?.listAuthMethods())?.oauth2;
|
||||
|
||||
|
||||
const data = await request?.formData();
|
||||
const providerSelected = data?.get("provider");
|
||||
|
||||
if (!authMethods) {
|
||||
return {
|
||||
authProviderRedirect: "",
|
||||
authProviderState: "",
|
||||
};
|
||||
}
|
||||
const redirectURL = `${url.origin}/oauth`;
|
||||
|
||||
const targetItem = authMethods?.providers?.findIndex(
|
||||
(item) => item?.name === providerSelected,
|
||||
);
|
||||
//console.log("==================")
|
||||
//console.log(authMethods.authProviders)
|
||||
//console.log('target item is: ', targetItem)
|
||||
|
||||
const provider = authMethods.providers[targetItem];
|
||||
const authProviderRedirect = `${provider.authUrl}${redirectURL}`;
|
||||
const state = provider.state;
|
||||
const verifier = provider.codeVerifier;
|
||||
|
||||
|
||||
|
||||
cookies.set("state", state, {
|
||||
httpOnly: true,
|
||||
sameSite: "lax",
|
||||
secure: true,
|
||||
path: "/",
|
||||
maxAge: 60 * 60,
|
||||
});
|
||||
|
||||
cookies.set("verifier", verifier, {
|
||||
httpOnly: true,
|
||||
sameSite: "lax",
|
||||
secure: true,
|
||||
path: "/",
|
||||
maxAge: 60 * 60,
|
||||
});
|
||||
|
||||
cookies.set("provider", providerSelected, {
|
||||
httpOnly: true,
|
||||
sameSite: "lax",
|
||||
secure: true,
|
||||
path: "/",
|
||||
maxAge: 60 * 60,
|
||||
});
|
||||
|
||||
cookies.set("path", path, {
|
||||
httpOnly: true,
|
||||
sameSite: "lax",
|
||||
secure: true,
|
||||
path: "/",
|
||||
maxAge: 60,
|
||||
});
|
||||
|
||||
redirect(302, authProviderRedirect);
|
||||
},
|
||||
|
||||
};
|
||||
454
src/routes/stocks/[tickerID]/profile/+page.svelte
Normal file
454
src/routes/stocks/[tickerID]/profile/+page.svelte
Normal file
@ -0,0 +1,454 @@
|
||||
<script lang="ts">
|
||||
import {
|
||||
numberOfUnreadNotification,
|
||||
displayCompanyName,
|
||||
stockTicker,
|
||||
} from "$lib/store";
|
||||
import { onMount } from "svelte";
|
||||
import { monthNames } from "$lib/utils";
|
||||
import { Chart } from "svelte-echarts";
|
||||
import { init, use } from "echarts/core";
|
||||
import { LineChart, BarChart } from "echarts/charts";
|
||||
import { GridComponent, TooltipComponent } from "echarts/components";
|
||||
import { CanvasRenderer } from "echarts/renderers";
|
||||
use([LineChart, BarChart, TooltipComponent, GridComponent, CanvasRenderer]);
|
||||
|
||||
export let data;
|
||||
let isLoaded = false;
|
||||
let dateDistance;
|
||||
let rawData = data?.getStockDividend;
|
||||
let optionsDividend;
|
||||
|
||||
let exDividendDate = rawData?.history?.at(0)?.date;
|
||||
let dividendYield = rawData?.dividendYield;
|
||||
let annualDividend = rawData?.annualDividend;
|
||||
let payoutFrequency = rawData?.payoutFrequency;
|
||||
let payoutRatio = rawData?.payoutRatio;
|
||||
let dividendGrowth = rawData?.dividendGrowth;
|
||||
|
||||
async function plotDividend() {
|
||||
// Combine the data into an array of objects to keep them linked
|
||||
const combinedData = rawData?.history?.map((item) => ({
|
||||
date: item?.paymentDate,
|
||||
dividend: item?.adjDividend?.toFixed(3),
|
||||
}));
|
||||
|
||||
// Sort the combined data array based on the date
|
||||
combinedData.sort((a, b) => new Date(a?.date) - new Date(b?.date));
|
||||
|
||||
// Separate the sorted data back into individual arrays
|
||||
const dates = combinedData.map((item) => item.date);
|
||||
const dividendList = combinedData?.map((item) => item.dividend);
|
||||
|
||||
const options = {
|
||||
animation: false,
|
||||
grid: {
|
||||
left: "3%",
|
||||
right: "3%",
|
||||
bottom: "10%",
|
||||
top: "10%",
|
||||
containLabel: true,
|
||||
},
|
||||
xAxis: {
|
||||
data: dates,
|
||||
type: "category",
|
||||
axisLabel: {
|
||||
color: "#fff",
|
||||
},
|
||||
splitLine: {
|
||||
show: false, // Disable x-axis grid lines
|
||||
},
|
||||
},
|
||||
yAxis: [
|
||||
{
|
||||
type: "value",
|
||||
splitLine: {
|
||||
show: false, // Disable x-axis grid lines
|
||||
},
|
||||
|
||||
axisLabel: {
|
||||
show: false, // Hide y-axis labels
|
||||
},
|
||||
},
|
||||
],
|
||||
series: [
|
||||
{
|
||||
name: "Dividend per Share",
|
||||
data: dividendList,
|
||||
type: "bar",
|
||||
smooth: true,
|
||||
itemStyle: {
|
||||
color: "#fff",
|
||||
},
|
||||
},
|
||||
],
|
||||
tooltip: {
|
||||
trigger: "axis",
|
||||
hideDelay: 100,
|
||||
borderColor: "#969696", // Black border color
|
||||
borderWidth: 1, // Border width of 1px
|
||||
backgroundColor: "#313131", // Optional: Set background color for contrast
|
||||
textStyle: {
|
||||
color: "#fff", // Optional: Text color for better visibility
|
||||
},
|
||||
formatter: function (params) {
|
||||
const date = params[0].name; // Get the date from the x-axis value
|
||||
const dateParts = date.split("-");
|
||||
const year = dateParts[0];
|
||||
const monthIndex = parseInt(dateParts[1]) - 1;
|
||||
const day = dateParts[2];
|
||||
const formattedDate = `${monthNames[monthIndex]} ${day}, ${year}`;
|
||||
|
||||
// Return the tooltip content
|
||||
return `${formattedDate}<br/> Dividend Per Share: ${params[0].value}`;
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
return options;
|
||||
}
|
||||
|
||||
onMount(async () => {
|
||||
optionsDividend = await plotDividend();
|
||||
isLoaded = true;
|
||||
});
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""}
|
||||
{$displayCompanyName} ({$stockTicker}) Company Profile & Overview -
|
||||
Stocknear
|
||||
</title>
|
||||
|
||||
<meta
|
||||
name="description"
|
||||
content={`Company profile for ${$displayCompanyName} (${$stockTicker}) with a description, list of executives, contact details and other key facts.`}
|
||||
/>
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`{$displayCompanyName} ({$stockTicker}) Company Profile & Overview · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
content={`Get the latest dividend data for ${$displayCompanyName} (${$stockTicker}), including dividend history, yield, key dates, growth and other metrics.`}
|
||||
/>
|
||||
<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={`{$displayCompanyName} ({$stockTicker}) Company Profile & Overview · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content={`Company profile for ${$displayCompanyName} (${$stockTicker}) with a description, list of executives, contact details and other key facts.`}
|
||||
/>
|
||||
<!-- Add more Twitter meta tags as needed -->
|
||||
</svelte:head>
|
||||
|
||||
<section class="w-full bg-[#09090B] overflow-hidden text-white h-full">
|
||||
<div class="w-full flex h-full overflow-hidden">
|
||||
<div
|
||||
class="w-full relative flex justify-center items-center overflow-hidden"
|
||||
>
|
||||
<div class="sm:p-7 w-full m-auto mt-2 sm:mt-0">
|
||||
<div class="w-full mb-6">
|
||||
<h1 class="text-xl sm:text-2xl text-gray-200 font-bold mb-4 w-full">
|
||||
Dividends
|
||||
</h1>
|
||||
|
||||
<div
|
||||
class="w-full text-white text-start p-3 sm:p-5 mb-10 rounded-md sm:flex sm:flex-row sm:items-center border border-gray-600 text-sm sm:text-[1rem]"
|
||||
>
|
||||
<svg
|
||||
class="w-6 h-6 flex-shrink-0 inline-block sm:mr-2"
|
||||
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
|
||||
>
|
||||
|
||||
{#if rawData?.history?.length !== 0}
|
||||
{#if !dateDistance}
|
||||
{$displayCompanyName} has an annual dividend of ${annualDividend}
|
||||
per share, with a forward yield of
|
||||
{dividendYield}%. The dividend is paid every
|
||||
{payoutFrequency === 4
|
||||
? "3 months"
|
||||
: payoutFrequency === 2
|
||||
? "6 months"
|
||||
: payoutFrequency === 1
|
||||
? "12 months"
|
||||
: "n/a"}
|
||||
and the last ex-dividend date was
|
||||
{new Date(exDividendDate)?.toLocaleString("en-US", {
|
||||
month: "short",
|
||||
day: "numeric",
|
||||
year: "numeric",
|
||||
daySuffix: "2-digit",
|
||||
})}
|
||||
{:else}
|
||||
{$displayCompanyName} issued its most recent dividend on
|
||||
{new Date(rawData?.history?.at(0)?.date)?.toLocaleString(
|
||||
"en-US",
|
||||
{
|
||||
month: "short",
|
||||
day: "numeric",
|
||||
year: "numeric",
|
||||
daySuffix: "2-digit",
|
||||
},
|
||||
)}. Since then, the company has not distributed any further
|
||||
dividends for over 12 months.
|
||||
{/if}
|
||||
{:else}
|
||||
No dividend history available for {$displayCompanyName}.
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{#if rawData?.history?.length !== 0}
|
||||
<div
|
||||
class="mb-4 grid grid-cols-2 grid-rows-1 divide-gray-600 rounded-md border border-gray-600 md:grid-cols-3 md:grid-rows-1 divide-x"
|
||||
>
|
||||
<div class="p-4 bp:p-5 sm:p-6">
|
||||
<label
|
||||
class="mr-1 cursor-pointer flex flex-row items-center text-white text-[1rem]"
|
||||
>
|
||||
Dividend Yield
|
||||
</label>
|
||||
<div
|
||||
class="mt-1 break-words font-semibold leading-8 text-light text-xl"
|
||||
>
|
||||
{dividendYield !== "0.00" ? dividendYield : "0"}%
|
||||
</div>
|
||||
</div>
|
||||
<div class="p-4 bp:p-5 sm:p-6 border-l border-b border-contrast">
|
||||
<label
|
||||
class="mr-1 cursor-pointer flex flex-row items-center text-white text-[1rem]"
|
||||
>
|
||||
Annual Dividend
|
||||
</label>
|
||||
|
||||
<div
|
||||
class="mt-1 break-words font-semibold leading-8 text-light text-xl"
|
||||
>
|
||||
{annualDividend !== "0.00" ? annualDividend : "0"}
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="p-4 bp:p-5 sm:p-6 border-t border-r border-contrast border-contrast"
|
||||
>
|
||||
<label
|
||||
class="mr-1 cursor-pointer flex flex-row items-center text-white text-[1rem]"
|
||||
>
|
||||
Ex-Dividend Date
|
||||
</label>
|
||||
|
||||
<div
|
||||
class="mt-1 break-words font-semibold leading-8 text-light text-xl"
|
||||
>
|
||||
{new Date(exDividendDate)?.toLocaleString("en-US", {
|
||||
month: "short",
|
||||
day: "numeric",
|
||||
year: "numeric",
|
||||
daySuffix: "2-digit",
|
||||
})}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="p-4 bp:p-5 sm:p-6 border-t border-r border-contrast">
|
||||
<label
|
||||
class="mr-1 cursor-pointer flex flex-row items-center text-white text-[1rem]"
|
||||
>
|
||||
Payout Frequency
|
||||
</label>
|
||||
|
||||
<div
|
||||
class="mt-1 break-words font-semibold leading-8 text-light text-xl"
|
||||
>
|
||||
{payoutFrequency === 4
|
||||
? "Quartely"
|
||||
: payoutFrequency === 2
|
||||
? "Half-Yearly"
|
||||
: payoutFrequency === 1
|
||||
? "Annually"
|
||||
: "n/a"}
|
||||
</div>
|
||||
</div>
|
||||
<div class="p-4 bp:p-5 sm:p-6 border-t border-r border-contrast">
|
||||
<label
|
||||
class="mr-1 cursor-pointer flex flex-row items-center text-white text-[1rem]"
|
||||
>
|
||||
Payout Ratio
|
||||
</label>
|
||||
|
||||
<div
|
||||
class="mt-1 break-words font-semibold leading-8 text-light text-xl"
|
||||
>
|
||||
{payoutRatio !== "0.00" ? payoutRatio : "0"}%
|
||||
</div>
|
||||
</div>
|
||||
<div class="p-4 bp:p-5 sm:p-6 border-t border-r border-contrast">
|
||||
<label
|
||||
class="mr-1 cursor-pointer flex flex-row items-center text-white text-[1rem]"
|
||||
>
|
||||
Dividend Growth
|
||||
</label>
|
||||
|
||||
<div
|
||||
class="mt-1 break-words font-semibold leading-8 text-light text-xl"
|
||||
>
|
||||
{dividendGrowth !== "NaN" ? dividendGrowth + "%" : "-"}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="flex flex-col sm:flex-row items-start sm:items-center w-full mt-14 mb-8"
|
||||
>
|
||||
<h3 class="text-xl text-white font-semibold">Dividends History</h3>
|
||||
</div>
|
||||
|
||||
{#if isLoaded}
|
||||
{#if rawData?.history?.length !== 0 && optionsDividend}
|
||||
<div class="app w-full">
|
||||
<Chart {init} options={optionsDividend} class="chart" />
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="overflow-x-scroll no-scrollbar flex justify-start items-center w-full m-auto shadow-md rounded-none sm:rounded-md mb-4"
|
||||
>
|
||||
<table
|
||||
class="table table-sm table-compact flex justify-start items-center w-full m-auto"
|
||||
>
|
||||
<thead>
|
||||
<tr class="bg-[#09090B] border-b-slate-600 shadow-md">
|
||||
<th
|
||||
class="text-start bg-[#09090B] border-b border-[#09090B] text-white text-sm font-semibold"
|
||||
>
|
||||
Ex-Divid. Date
|
||||
</th>
|
||||
<th
|
||||
class="text-end bg-[#09090B] border-b border-[#09090B] text-white text-sm font-semibold"
|
||||
>
|
||||
Cash Amount
|
||||
</th>
|
||||
<th
|
||||
class="text-end bg-[#09090B] border-b border-[#09090B] text-white text-sm font-semibold"
|
||||
>
|
||||
Record Date
|
||||
</th>
|
||||
<th
|
||||
class="text-end bg-[#09090B] border-b border-[#09090B] text-white text-sm font-semibold"
|
||||
>
|
||||
Pay Date
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="shadow-md">
|
||||
{#each rawData?.history as item}
|
||||
<tr class="text-gray-200 odd:bg-secondary">
|
||||
<td
|
||||
class="text-start text-sm sm:text-[1rem] whitespace-nowrap text-white font-medium border-b border-[#09090B]"
|
||||
>
|
||||
{new Date(item?.date)?.toLocaleString("en-US", {
|
||||
month: "short",
|
||||
day: "numeric",
|
||||
year: "numeric",
|
||||
daySuffix: "2-digit",
|
||||
})}
|
||||
</td>
|
||||
<td
|
||||
class="text-end text-sm sm:text-[1rem] whitespace-nowrap text-white border-b border-[#09090B]"
|
||||
>
|
||||
{item?.adjDividend?.toFixed(3)}
|
||||
</td>
|
||||
<td
|
||||
class="text-end text-sm sm:text-[1rem] whitespace-nowrap text-white border-b border-[#09090B]"
|
||||
>
|
||||
{item?.recordDate?.length !== 0
|
||||
? new Date(item?.recordDate)?.toLocaleString(
|
||||
"en-US",
|
||||
{
|
||||
month: "short",
|
||||
day: "numeric",
|
||||
year: "numeric",
|
||||
daySuffix: "2-digit",
|
||||
},
|
||||
)
|
||||
: "n/a"}
|
||||
</td>
|
||||
<td
|
||||
class="text-end text-sm sm:text-[1rem] whitespace-nowrap text-white border-b border-[#09090B]"
|
||||
>
|
||||
{item?.paymentDate?.length !== 0
|
||||
? new Date(item?.paymentDate)?.toLocaleString(
|
||||
"en-US",
|
||||
{
|
||||
month: "short",
|
||||
day: "numeric",
|
||||
year: "numeric",
|
||||
daySuffix: "2-digit",
|
||||
},
|
||||
)
|
||||
: "n/a"}
|
||||
</td>
|
||||
</tr>
|
||||
{/each}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<span class="text-gray-200 text-sm italic">
|
||||
* Dividend amounts are adjusted for stock splits when
|
||||
applicable.
|
||||
</span>
|
||||
{:else}
|
||||
<h1
|
||||
class="text-xl m-auto flex justify-center text-gray-200 mb-4 mt-10"
|
||||
>
|
||||
No history found
|
||||
</h1>
|
||||
{/if}
|
||||
{:else}
|
||||
<div class="flex justify-center items-center h-80">
|
||||
<div class="relative">
|
||||
<label
|
||||
class="bg-[#09090B] rounded-xl h-14 w-14 flex justify-center items-center absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2"
|
||||
>
|
||||
<span class="loading loading-spinner loading-md text-gray-400"
|
||||
></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<style>
|
||||
.app {
|
||||
height: 400px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
@media (max-width: 560px) {
|
||||
.app {
|
||||
width: 100%;
|
||||
height: 300px;
|
||||
}
|
||||
}
|
||||
|
||||
.chart {
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
||||
@ -46,7 +46,7 @@
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Statistics & Valuation Metrics · stocknear`}
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Statistics & Valuation Metrics · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -59,7 +59,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Statistics & Valuation Metrics · stocknear`}
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Statistics & Valuation Metrics · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -349,7 +349,7 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""}
|
||||
{$displayCompanyName} ({$stockTicker}) Number of Employees · stocknear
|
||||
{$displayCompanyName} ({$stockTicker}) Number of Employees · Stocknear
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
@ -359,7 +359,7 @@
|
||||
<!-- Other meta tags -->
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Number of Employees · stocknear`}
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Number of Employees · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -372,7 +372,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Number of Employees · stocknear`}
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Number of Employees · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -374,12 +374,12 @@
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""}
|
||||
{$displayCompanyName} ({$stockTicker}) Market Cap & Net Worth · stocknear
|
||||
{$displayCompanyName} ({$stockTicker}) Market Cap & Net Worth · Stocknear
|
||||
</title>
|
||||
<meta name="description" content={`Historical Market Cap of the company.`} />
|
||||
<meta
|
||||
property="og:title"
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Market Cap & Net Worth · stocknear`}
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Market Cap & Net Worth · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
@ -389,7 +389,7 @@
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Market Cap & Net Worth · stocknear`}
|
||||
content={`${$displayCompanyName} (${$stockTicker}) Market Cap & Net Worth · Stocknear`}
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
|
||||
@ -7,19 +7,19 @@
|
||||
<svelte:head>
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Terms
|
||||
of Use · stocknear</title
|
||||
of Use · Stocknear</title
|
||||
>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
|
||||
<!-- Other meta tags -->
|
||||
<meta property="og:title" content="Terms of Use · stocknear" />
|
||||
<meta property="og:title" content="Terms of Use · 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="Terms of Use · stocknear" />
|
||||
<meta name="twitter:title" content="Terms of Use · Stocknear" />
|
||||
<!-- Add more Twitter meta tags as needed -->
|
||||
</svelte:head>
|
||||
|
||||
|
||||
@ -138,7 +138,7 @@
|
||||
<svelte:head>
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Options
|
||||
Watchlist · stocknear</title
|
||||
Watchlist · Stocknear</title
|
||||
>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
@ -148,7 +148,7 @@
|
||||
content="A option watchlist tracker tool. Add stocks and ETFs to keep track of their performance."
|
||||
/>
|
||||
<!-- Other meta tags -->
|
||||
<meta property="og:title" content="Options Watchlist · stocknear" />
|
||||
<meta property="og:title" content="Options Watchlist · Stocknear" />
|
||||
<meta
|
||||
property="og:description"
|
||||
content="A option watchlist tracker tool. Add stocks and ETFs to keep track of their performance."
|
||||
@ -158,7 +158,7 @@
|
||||
|
||||
<!-- Twitter specific meta tags -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content="Options Watchlist · stocknear" />
|
||||
<meta name="twitter:title" content="Options Watchlist · Stocknear" />
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content="A option watchlist tracker tool. Add stocks and ETFs to keep track of their performance."
|
||||
|
||||
@ -1000,7 +1000,7 @@
|
||||
<svelte:head>
|
||||
<title>
|
||||
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Stock
|
||||
Watchlist · stocknear</title
|
||||
Watchlist · Stocknear</title
|
||||
>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
@ -1010,7 +1010,7 @@
|
||||
content="A stock watchlist tracker tool. Add stocks and ETFs to keep track of their performance."
|
||||
/>
|
||||
<!-- Other meta tags -->
|
||||
<meta property="og:title" content="Stock Watchlist · stocknear" />
|
||||
<meta property="og:title" content="Stock Watchlist · Stocknear" />
|
||||
<meta
|
||||
property="og:description"
|
||||
content="A stock watchlist tracker tool. Add stocks and ETFs to keep track of their performance."
|
||||
@ -1020,7 +1020,7 @@
|
||||
|
||||
<!-- Twitter specific meta tags -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content="Stock Watchlist · stocknear" />
|
||||
<meta name="twitter:title" content="Stock Watchlist · Stocknear" />
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content="A stock watchlist tracker tool. Add stocks and ETFs to keep track of their performance."
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user