diff --git a/src/lib/components/AnalystEstimate.svelte b/src/lib/components/AnalystEstimate.svelte index 81e34c3d..80576b57 100644 --- a/src/lib/components/AnalystEstimate.svelte +++ b/src/lib/components/AnalystEstimate.svelte @@ -434,7 +434,7 @@ function findIndex(data) {
diff --git a/src/lib/components/BorrowedShare.svelte b/src/lib/components/BorrowedShare.svelte index ec55768c..992232b0 100644 --- a/src/lib/components/BorrowedShare.svelte +++ b/src/lib/components/BorrowedShare.svelte @@ -305,7 +305,7 @@ function findLowestAndHighestFee(data, lastDateStr) {
diff --git a/src/lib/components/ClinicalTrial.svelte b/src/lib/components/ClinicalTrial.svelte index 3f8f43aa..2f79abba 100644 --- a/src/lib/components/ClinicalTrial.svelte +++ b/src/lib/components/ClinicalTrial.svelte @@ -324,7 +324,7 @@ let charNumber = 20;
diff --git a/src/lib/components/CorporateLobbying.svelte b/src/lib/components/CorporateLobbying.svelte index eaa07abd..d24f6719 100644 --- a/src/lib/components/CorporateLobbying.svelte +++ b/src/lib/components/CorporateLobbying.svelte @@ -197,7 +197,7 @@ $: {
diff --git a/src/lib/components/Correlation.svelte b/src/lib/components/Correlation.svelte index a3fc42d2..c00d8351 100644 --- a/src/lib/components/Correlation.svelte +++ b/src/lib/components/Correlation.svelte @@ -152,7 +152,7 @@
diff --git a/src/lib/components/DCF.svelte b/src/lib/components/DCF.svelte index 81f8ddad..5a74bf8c 100644 --- a/src/lib/components/DCF.svelte +++ b/src/lib/components/DCF.svelte @@ -332,7 +332,7 @@ $: {
diff --git a/src/lib/components/DarkPool.svelte b/src/lib/components/DarkPool.svelte index 69ca4164..a8e25d59 100644 --- a/src/lib/components/DarkPool.svelte +++ b/src/lib/components/DarkPool.svelte @@ -285,7 +285,7 @@ $: {
diff --git a/src/lib/components/Enterprise.svelte b/src/lib/components/Enterprise.svelte index 2267c54f..541f2b20 100644 --- a/src/lib/components/Enterprise.svelte +++ b/src/lib/components/Enterprise.svelte @@ -235,7 +235,7 @@ $: {
diff --git a/src/lib/components/ExecutiveCard.svelte b/src/lib/components/ExecutiveCard.svelte index 8e37d208..9f3ea863 100644 --- a/src/lib/components/ExecutiveCard.svelte +++ b/src/lib/components/ExecutiveCard.svelte @@ -165,7 +165,7 @@ afterUpdate(async() => {
diff --git a/src/lib/components/FOMCImpact.svelte b/src/lib/components/FOMCImpact.svelte index 9712cd93..e5854335 100644 --- a/src/lib/components/FOMCImpact.svelte +++ b/src/lib/components/FOMCImpact.svelte @@ -188,7 +188,7 @@ $: {
- + diff --git a/src/lib/components/FailToDeliver.svelte b/src/lib/components/FailToDeliver.svelte index 5372eb23..b3a45774 100644 --- a/src/lib/components/FailToDeliver.svelte +++ b/src/lib/components/FailToDeliver.svelte @@ -307,7 +307,7 @@ function findLowestAndHighestPrice(data, lastDateStr) {
diff --git a/src/lib/components/GovernmentContract.svelte b/src/lib/components/GovernmentContract.svelte index 1e6d51d0..58bba3d1 100644 --- a/src/lib/components/GovernmentContract.svelte +++ b/src/lib/components/GovernmentContract.svelte @@ -274,7 +274,7 @@ use([BarChart, GridComponent, CanvasRenderer])
diff --git a/src/lib/components/ImpliedVolatility.svelte b/src/lib/components/ImpliedVolatility.svelte index 956eb572..f145d56c 100644 --- a/src/lib/components/ImpliedVolatility.svelte +++ b/src/lib/components/ImpliedVolatility.svelte @@ -359,7 +359,7 @@ function changeStatement(event)
diff --git a/src/lib/components/Lazy.svelte b/src/lib/components/Lazy.svelte index 5ba163fd..2a7cb344 100644 --- a/src/lib/components/Lazy.svelte +++ b/src/lib/components/Lazy.svelte @@ -22,7 +22,7 @@
diff --git a/src/lib/components/LoginPopup.svelte b/src/lib/components/LoginPopup.svelte index eb759447..df7fdab3 100644 --- a/src/lib/components/LoginPopup.svelte +++ b/src/lib/components/LoginPopup.svelte @@ -386,7 +386,7 @@ function handleHoverGithub() {
diff --git a/src/lib/components/OptionsNetFlow.svelte b/src/lib/components/OptionsNetFlow.svelte index a256f3fd..8afbc4a0 100644 --- a/src/lib/components/OptionsNetFlow.svelte +++ b/src/lib/components/OptionsNetFlow.svelte @@ -231,7 +231,7 @@
diff --git a/src/lib/components/PriceAnalysis.svelte b/src/lib/components/PriceAnalysis.svelte index d9648a02..8e9697d1 100644 --- a/src/lib/components/PriceAnalysis.svelte +++ b/src/lib/components/PriceAnalysis.svelte @@ -272,7 +272,7 @@ onMount(async () => {
diff --git a/src/lib/components/RetailVolume.svelte b/src/lib/components/RetailVolume.svelte index 5f298ceb..2ecda9b6 100644 --- a/src/lib/components/RetailVolume.svelte +++ b/src/lib/components/RetailVolume.svelte @@ -318,7 +318,7 @@ $: {
diff --git a/src/lib/components/RevenueSegmentation.svelte b/src/lib/components/RevenueSegmentation.svelte index c8e8bbb4..b6af6c27 100644 --- a/src/lib/components/RevenueSegmentation.svelte +++ b/src/lib/components/RevenueSegmentation.svelte @@ -261,7 +261,7 @@ $: charNumber = $screenWidth < 640 ? 25 :40;
diff --git a/src/lib/components/SECFilingsCard.svelte b/src/lib/components/SECFilingsCard.svelte index a8897d47..109e481e 100644 --- a/src/lib/components/SECFilingsCard.svelte +++ b/src/lib/components/SECFilingsCard.svelte @@ -219,7 +219,7 @@ $: {
diff --git a/src/lib/components/Searchbar.svelte b/src/lib/components/Searchbar.svelte index dc1e7ba7..b812d505 100644 --- a/src/lib/components/Searchbar.svelte +++ b/src/lib/components/Searchbar.svelte @@ -510,7 +510,7 @@ $: {
diff --git a/src/lib/components/ShareHolders.svelte b/src/lib/components/ShareHolders.svelte index 891a9379..10a5a9ff 100644 --- a/src/lib/components/ShareHolders.svelte +++ b/src/lib/components/ShareHolders.svelte @@ -389,7 +389,7 @@ let charNumber = 30;
diff --git a/src/lib/components/Swap.svelte b/src/lib/components/Swap.svelte index 438e1717..8a9b4e3f 100644 --- a/src/lib/components/Swap.svelte +++ b/src/lib/components/Swap.svelte @@ -258,7 +258,7 @@
diff --git a/src/lib/components/TARating.svelte b/src/lib/components/TARating.svelte index 5e57f82a..1872cd05 100644 --- a/src/lib/components/TARating.svelte +++ b/src/lib/components/TARating.svelte @@ -193,7 +193,7 @@ $: if ($assetType || $stockTicker || $etfTicker || $cryptoTicker) {
diff --git a/src/lib/components/TrendAnalysis.svelte b/src/lib/components/TrendAnalysis.svelte index f0ed0b9f..3d616364 100644 --- a/src/lib/components/TrendAnalysis.svelte +++ b/src/lib/components/TrendAnalysis.svelte @@ -208,7 +208,7 @@ $: {
@@ -218,7 +218,7 @@ $: {
diff --git a/src/lib/components/WIIM.svelte b/src/lib/components/WIIM.svelte index 41e13a10..4dc8fbda 100644 --- a/src/lib/components/WIIM.svelte +++ b/src/lib/components/WIIM.svelte @@ -130,7 +130,7 @@ $: {
diff --git a/src/routes/analysts/+page.svelte b/src/routes/analysts/+page.svelte index 2599aace..c4baa07a 100644 --- a/src/routes/analysts/+page.svelte +++ b/src/routes/analysts/+page.svelte @@ -224,7 +224,7 @@ $: {
Date Previous Forecast
- + {#each analytRatingList as item, index} - + @@ -333,7 +333,7 @@ $: {
diff --git a/src/routes/analysts/top-stocks/+page.svelte b/src/routes/analysts/top-stocks/+page.svelte index d7bd9703..2c30deec 100644 --- a/src/routes/analysts/top-stocks/+page.svelte +++ b/src/routes/analysts/top-stocks/+page.svelte @@ -218,7 +218,7 @@ $: {
{ sortBy = 'rank'; changeOrder(order); }} class="cursor-pointer text-center bg-[#09090B] text-white text-[1rem] font-semibold"> Rank @@ -260,7 +260,7 @@ $: {
{item?.rank}
- + {#each analytRatingList as item, index} - + @@ -304,7 +304,7 @@ $: {
diff --git a/src/routes/community/post/[postId]/+page.svelte b/src/routes/community/post/[postId]/+page.svelte index f53b2b84..66761667 100644 --- a/src/routes/community/post/[postId]/+page.svelte +++ b/src/routes/community/post/[postId]/+page.svelte @@ -848,7 +848,7 @@ function updateVote(postVote) {
diff --git a/src/routes/corporate-lobbying-tracker/+page.svelte b/src/routes/corporate-lobbying-tracker/+page.svelte index 3633a0f0..949215ab 100644 --- a/src/routes/corporate-lobbying-tracker/+page.svelte +++ b/src/routes/corporate-lobbying-tracker/+page.svelte @@ -180,7 +180,7 @@ $: charNumber = $screenWidth < 640 ? 15 : 20;
{ sortBy = 'rank'; changeOrder(order); }} class="cursor-pointer text-center bg-[#09090B] text-white text-[1rem] font-semibold"> Rank @@ -253,7 +253,7 @@ $: {
{item?.rank}
- + @@ -203,7 +203,7 @@ $: charNumber = $screenWidth < 640 ? 15 : 20; {#each displayList as item, index} - +
Date
@@ -250,7 +250,7 @@ $: charNumber = $screenWidth < 640 ? 15 : 20;
diff --git a/src/routes/cramer-tracker/+page.svelte b/src/routes/cramer-tracker/+page.svelte index 16e0eb82..40b0ce10 100644 --- a/src/routes/cramer-tracker/+page.svelte +++ b/src/routes/cramer-tracker/+page.svelte @@ -421,7 +421,7 @@ rawData?.forEach(item => {
- + @@ -442,7 +442,7 @@ rawData?.forEach(item => { {#each displayList as item, index} - +
Company Name
{#if index >= 5 && data?.user?.tier !== 'Pro'} @@ -518,7 +518,7 @@ rawData?.forEach(item => {
diff --git a/src/routes/crypto/[tickerID]/+page.svelte b/src/routes/crypto/[tickerID]/+page.svelte index e87b0de6..30cd1fa1 100644 --- a/src/routes/crypto/[tickerID]/+page.svelte +++ b/src/routes/crypto/[tickerID]/+page.svelte @@ -1051,7 +1051,7 @@ afterUpdate(async () => {
diff --git a/src/routes/crypto/[tickerID]/congress-trading/+page.svelte b/src/routes/crypto/[tickerID]/congress-trading/+page.svelte index 98a9f68d..4ba48087 100644 --- a/src/routes/crypto/[tickerID]/congress-trading/+page.svelte +++ b/src/routes/crypto/[tickerID]/congress-trading/+page.svelte @@ -405,7 +405,7 @@ onMount(async () => {
diff --git a/src/routes/crypto/[tickerID]/stats/+page.svelte b/src/routes/crypto/[tickerID]/stats/+page.svelte index 8aa936e5..e4c4ab79 100644 --- a/src/routes/crypto/[tickerID]/stats/+page.svelte +++ b/src/routes/crypto/[tickerID]/stats/+page.svelte @@ -1,1113 +1,916 @@ - - - - - - - - {$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ''} {$displayCompanyName} ({$cryptoTicker}) Statistics & Valuation Metrics · stocknear - - - - - - - - - - - - - - - - - - - -
-
-
-

- Fundamental Data -

- -
- - Get detailed Fundamental insights of {$displayCompanyName} and compare it to the S&P500. -
- - {#if Object?.keys(quantStats)?.length !== 0} - - - -
-
- -
-
- YTD Return -
-
- {$cryptoTicker} - - {#if quantStats[$cryptoTicker?.toUpperCase()]["YTD %"] >=0} - +{quantStats[$cryptoTicker?.toUpperCase()]["YTD %"]?.toFixed(2)}% - {:else} - {quantStats[$cryptoTicker?.toUpperCase()]["YTD %"]?.toFixed(2)}% - {/if} - -
-
- vs. -
-
- SPY - - {#if quantStats['SPY']["YTD %"] >=0} - +{quantStats['SPY']["YTD %"]?.toFixed(2)}% - {:else} - {quantStats['SPY']["YTD %"]?.toFixed(2)}% - {/if} - -
-
-
-
- - + + + + /* +updateDayRange() +updateYearRange() +*/ + + + + + + + {$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} + {$displayCompanyName} ({$cryptoTicker}) Statistics & Valuation Metrics · stocknear + + + + + + + + + + + + + + + + +
+
+
+

Fundamental Data

+ +
+ + Get detailed Fundamental insights of {$displayCompanyName} and compare it to the S&P500. +
+ + {#if Object?.keys(quantStats)?.length !== 0} + +
+
- 1-Year Return -
-
- {$cryptoTicker} - - {#if quantStats[$cryptoTicker?.toUpperCase()]["1Y %"] >=0} - +{quantStats[$cryptoTicker?.toUpperCase()]["1Y %"]?.toFixed(2)}% - {:else} - {quantStats[$cryptoTicker?.toUpperCase()]["1Y %"]?.toFixed(2)}% - {/if} - -
-
- vs. -
-
- SPY - - {#if quantStats['SPY']["1Y %"] >=0} - +{quantStats['SPY']["1Y %"]?.toFixed(2)}% - {:else} - {quantStats['SPY']["1Y %"]?.toFixed(2)}% - {/if} - -
+ YTD Return +
+
+ {$cryptoTicker} + + {#if quantStats[$cryptoTicker?.toUpperCase()]["YTD %"] >= 0} + +{quantStats[$cryptoTicker?.toUpperCase()]["YTD %"]?.toFixed(2)}% + {:else} + {quantStats[$cryptoTicker?.toUpperCase()]["YTD %"]?.toFixed(2)}% + {/if} +
+
vs.
+
+ SPY + + {#if quantStats["SPY"]["YTD %"] >= 0} + +{quantStats["SPY"]["YTD %"]?.toFixed(2)}% + {:else} + {quantStats["SPY"]["YTD %"]?.toFixed(2)}% + {/if} + +
+
-
- - -
-
+
+ +
+
+ 1-Year Return +
+
+ {$cryptoTicker} + + {#if quantStats[$cryptoTicker?.toUpperCase()]["1Y %"] >= 0} + +{quantStats[$cryptoTicker?.toUpperCase()]["1Y %"]?.toFixed(2)}% + {:else} + {quantStats[$cryptoTicker?.toUpperCase()]["1Y %"]?.toFixed(2)}% + {/if} + +
+
vs.
+
+ SPY + + {#if quantStats["SPY"]["1Y %"] >= 0} + +{quantStats["SPY"]["1Y %"]?.toFixed(2)}% + {:else} + {quantStats["SPY"]["1Y %"]?.toFixed(2)}% + {/if} + +
+
+
+
+ +
+
3-Year Return
-
- {$cryptoTicker} - - {#if quantStats[$cryptoTicker?.toUpperCase()]["3Y (ann.) %"] >=0} - +{quantStats[$cryptoTicker?.toUpperCase()]["3Y (ann.) %"]?.toFixed(2)}% - {:else} - {quantStats[$cryptoTicker?.toUpperCase()]["3Y (ann.) %"]?.toFixed(2)}% - {/if} - -
-
- vs. -
-
- SPY - - {#if quantStats['SPY']["3Y (ann.) %"] >=0} - +{quantStats['SPY']["3Y (ann.) %"]?.toFixed(2)}% - {:else} - {quantStats['SPY']["3Y (ann.) %"]?.toFixed(2)}% - {/if} - -
+
+ {$cryptoTicker} + + {#if quantStats[$cryptoTicker?.toUpperCase()]["3Y (ann.) %"] >= 0} + +{quantStats[$cryptoTicker?.toUpperCase()]["3Y (ann.) %"]?.toFixed(2)}% + {:else} + {quantStats[$cryptoTicker?.toUpperCase()]["3Y (ann.) %"]?.toFixed(2)}% + {/if} + +
+
vs.
+
+ SPY + + {#if quantStats["SPY"]["3Y (ann.) %"] >= 0} + +{quantStats["SPY"]["3Y (ann.) %"]?.toFixed(2)}% + {:else} + {quantStats["SPY"]["3Y (ann.) %"]?.toFixed(2)}% + {/if} + +
+
-
- - -
- + - - -
- - - - - -

- Company Stats -

- + + + +
-
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Mkt Cap ${marketCap}Volume{volume}
Price${currentPrice}Prev. Close${previousClose}
Alpha - {typeof alpha !== 'undefined' ? alpha : '-'} - Beta - {typeof beta !== 'undefined' && !isNaN(beta) ? beta?.toFixed(2) : '-'} -
-
- - - - {#if $cryptoTicker in quantStats && Object.keys(quantStats[$cryptoTicker]).length > 0} - -

- Worst 10 Drawdowns of {$cryptoTicker} -

-
- - - - - - - - - - - {#each quantStats[$cryptoTicker?.toUpperCase()]['Worst 10 Drawdowns'] as item} - - - - - - - {/each} - -
StartedRecoveredDrawdownDays
- {new Date(item['Started']).toLocaleString('en-US', { month: 'short', day: 'numeric', year: 'numeric', daySuffix: '2-digit' })} - - {#if ongoingDD(item['Recovered']) === true} - continuing - {:else} - {new Date(item['Recovered']).toLocaleString('en-US', { month: 'short', day: 'numeric', year: 'numeric', daySuffix: '2-digit' })} - {/if} - - {item['Drawdown']?.toFixed(2)}% - - {item['Days']} -
-
- - -

- {$cryptoTicker} vs. - S&P500 -

- -

- Comparison of company stats against the S&P500 Index. -

- - - Time Period between {new Date(quantStats[$cryptoTicker?.toUpperCase()]["Start Period"]).toLocaleString('en-US', { month: 'long', day: 'numeric', year: 'numeric', daySuffix: '2-digit' })} - - - {new Date(quantStats[$cryptoTicker?.toUpperCase()]["End Period"]).toLocaleString('en-US', { month: 'long', day: 'numeric', year: 'numeric', daySuffix: '2-digit' })} - - - - - - - -
- - - - - - - - - - - - + + + + {/each} + +
- Metric - - {$cryptoTicker} - - S&P500 -
- Cumulative Return - - {#if quantStats[$cryptoTicker?.toUpperCase()]["Cumulative Return %"] >=0} - +{abbreviateNumber(quantStats[$cryptoTicker?.toUpperCase()]["Cumulative Return %"])}% + + {#if $cryptoTicker in quantStats && Object.keys(quantStats[$cryptoTicker]).length > 0} +

+ Worst 10 Drawdowns of {$cryptoTicker} +

+
+ + + + + + + + + + + {#each quantStats[$cryptoTicker?.toUpperCase()]["Worst 10 Drawdowns"] as item} + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
StartedRecoveredDrawdownDays
+ {new Date(item["Started"]).toLocaleString("en-US", { month: "short", day: "numeric", year: "numeric", daySuffix: "2-digit" })} + + {#if ongoingDD(item["Recovered"]) === true} + continuing {:else} - {abbreviateNumber(quantStats[$cryptoTicker?.toUpperCase()]["Cumulative Return %"])}% + {new Date(item["Recovered"]).toLocaleString("en-US", { month: "short", day: "numeric", year: "numeric", daySuffix: "2-digit" })} {/if} - - {#if quantStats['SPY']["Cumulative Return %"] >=0} - +{quantStats['SPY']["Cumulative Return %"]}% - {:else} - {quantStats['SPY']["Cumulative Return %"]}% - {/if} -
- Compound Annual Growth Rate (CAGR) - - {#if quantStats[$cryptoTicker?.toUpperCase()]["CAGR %"] >=0} - +{quantStats[$cryptoTicker?.toUpperCase()]["CAGR %"]}% - {:else} - {quantStats[$cryptoTicker?.toUpperCase()]["CAGR %"]}% - {/if} - - {#if quantStats['SPY']["CAGR %"] >=0} - +{quantStats['SPY']["CAGR %"]}% - {:else} - {quantStats['SPY']["CAGR %"]}% - {/if} -
- Sharpe - - {quantStats[$cryptoTicker?.toUpperCase()]["Sharpe"]?.toFixed(2)} - - {quantStats['SPY']["Sharpe"]?.toFixed(2)} -
- Sortino - - {quantStats[$cryptoTicker?.toUpperCase()]["Sortino"]?.toFixed(2)} - - {quantStats['SPY']["Sortino"]?.toFixed(2)} -
- Max Drawdown - - {#if quantStats[$cryptoTicker?.toUpperCase()]["Max Drawdown"] >=0} - +{quantStats[$cryptoTicker?.toUpperCase()]["Max Drawdown"]}% - {:else} - {quantStats[$cryptoTicker?.toUpperCase()]["Max Drawdown"]}% - {/if} - - {#if quantStats['SPY']["Max Drawdown"] >=0} - +{quantStats['SPY']["Max Drawdown"]}% - {:else} - {quantStats['SPY']["Max Drawdown"]}% - {/if} -
- Longest Drawdown Days - - {quantStats[$cryptoTicker?.toUpperCase()]["Longest DD Days"]} - - {quantStats['SPY']["Longest DD Days"]} -
- Volatility (ann.) - - {quantStats[$cryptoTicker?.toUpperCase()]["Volatility (ann.) %"]}% - - {quantStats['SPY']["Volatility (ann.) %"]}% -
- Correlation - - {quantStats[$cryptoTicker?.toUpperCase()]["Correlation"]}% - - {quantStats['SPY']["Correlation"]} -
- R^2 - - {quantStats[$cryptoTicker?.toUpperCase()]["R^2"]} - - {quantStats['SPY']["R^2"]} -
- Calmar - - {quantStats[$cryptoTicker?.toUpperCase()]["Calmar"]} - - {quantStats['SPY']["Calmar"]} -
- Skew - - {quantStats[$cryptoTicker?.toUpperCase()]["Skew"]?.toFixed(2)} - - {quantStats['SPY']["Skew"]?.toFixed(2)} -
- Kurtosis - - {quantStats[$cryptoTicker?.toUpperCase()]["Kurtosis"]?.toFixed(2)} - - {quantStats['SPY']["Kurtosis"]?.toFixed(2)} -
- Expected Daily - - {#if quantStats[$cryptoTicker?.toUpperCase()]["Expected Daily %"] >=0} - +{quantStats[$cryptoTicker?.toUpperCase()]["Expected Daily %"]}% - {:else} - {quantStats[$cryptoTicker?.toUpperCase()]["Expected Daily %"]}% - {/if} - - {#if quantStats['SPY']["Expected Daily %"] >=0} - +{quantStats['SPY']["Expected Daily %"]}% - {:else} - {quantStats['SPY']["Expected Daily %"]}% - {/if} -
- Expected Monthly - - {#if quantStats[$cryptoTicker?.toUpperCase()]["Expected Monthly %"] >=0} - +{quantStats[$cryptoTicker?.toUpperCase()]["Expected Monthly %"]}% - {:else} - {quantStats[$cryptoTicker?.toUpperCase()]["Expected Monthly %"]}% - {/if} - - {#if quantStats['SPY']["Expected Monthly %"] >=0} - +{quantStats['SPY']["Expected Monthly %"]}% - {:else} - {quantStats['SPY']["Expected Monthly %"]}% - {/if} -
- Expected Yearly - - {#if quantStats[$cryptoTicker?.toUpperCase()]["Expected Yearly %"] >=0} - +{quantStats[$cryptoTicker?.toUpperCase()]["Expected Yearly %"]}% - {:else} - {quantStats[$cryptoTicker?.toUpperCase()]["Expected Yearly %"]}% - {/if} - - {#if quantStats['SPY']["Expected Yearly %"] >=0} - +{quantStats['SPY']["Expected Yearly %"]}% - {:else} - {quantStats['SPY']["Expected Yearly %"]}% - {/if} -
- Kelly Criterion - - {quantStats[$cryptoTicker?.toUpperCase()]["Kelly Criterion %"]}% - - {quantStats['SPY']["Kelly Criterion %"]}% -
- Risk of Ruin - - {quantStats[$cryptoTicker?.toUpperCase()]["Risk of Ruin %"]}% - - {quantStats['SPY']["Risk of Ruin %"]}% -
- Daily Value-at-Risk - - {#if quantStats[$cryptoTicker?.toUpperCase()]["Daily Value-at-Risk %"] >=0} - +{quantStats[$cryptoTicker?.toUpperCase()]["Daily Value-at-Risk %"]?.toFixed(2)}% - {:else} - {quantStats[$cryptoTicker?.toUpperCase()]["Daily Value-at-Risk %"]?.toFixed(2)}% - {/if} - - {#if quantStats['SPY']["Daily Value-at-Risk %"] >=0} - +{quantStats['SPY']["Daily Value-at-Risk %"]?.toFixed(2)}% - {:else} - {quantStats['SPY']["Daily Value-at-Risk %"]?.toFixed(2)}% - {/if} -
- Expected Shortfall (cVaR) - - {#if quantStats[$cryptoTicker?.toUpperCase()]["Expected Shortfall (cVaR) %"] >=0} - +{quantStats[$cryptoTicker?.toUpperCase()]["Expected Shortfall (cVaR) %"]?.toFixed(2)}% - {:else} - {quantStats[$cryptoTicker?.toUpperCase()]["Expected Shortfall (cVaR) %"]?.toFixed(2)}% - {/if} - - {#if quantStats['SPY']["Expected Shortfall (cVaR) %"] >=0} - +{quantStats['SPY']["Expected Shortfall (cVaR) %"]?.toFixed(2)}% - {:else} - {quantStats['SPY']["Expected Shortfall (cVaR) %"]?.toFixed(2)}% - {/if} -
- Max Consecutive Wins - - {quantStats[$cryptoTicker?.toUpperCase()]["Max Consecutive Wins"]} - - {quantStats['SPY']["Max Consecutive Wins"]} -
- Max Consecutive Losses - - {quantStats[$cryptoTicker?.toUpperCase()]["Max Consecutive Losses"]} - - {quantStats['SPY']["Max Consecutive Losses"]} -
- Gain/Pain Ratio - - {quantStats[$cryptoTicker?.toUpperCase()]["Gain/Pain Ratio"]?.toFixed(2)} - - {quantStats['SPY']["Gain/Pain Ratio"]?.toFixed(2)} -
- Gain/Pain (1M) - - {quantStats[$cryptoTicker?.toUpperCase()]["Gain/Pain (1M)"]?.toFixed(2)} - - {quantStats['SPY']["Gain/Pain (1M)"]?.toFixed(2)} -
- Payoff Ratio - - {quantStats[$cryptoTicker?.toUpperCase()]["Payoff Ratio"]?.toFixed(2)} - - {quantStats['SPY']["Payoff Ratio"]?.toFixed(2)} -
- Profit Factor - - {quantStats[$cryptoTicker?.toUpperCase()]["Profit Factor"]?.toFixed(2)} - - {quantStats['SPY']["Profit Factor"]?.toFixed(2)} -
- Outlier Win Ratio - - {quantStats[$cryptoTicker?.toUpperCase()]["Outlier Win Ratio"]?.toFixed(2)} - - {quantStats['SPY']["Outlier Win Ratio"]?.toFixed(2)} -
- Outlier Loss Ratio - - {quantStats[$cryptoTicker?.toUpperCase()]["Outlier Loss Ratio"]?.toFixed(2)} - - {quantStats['SPY']["Outlier Loss Ratio"]?.toFixed(2)} -
- MTD - - {#if quantStats[$cryptoTicker?.toUpperCase()]["MTD %"] >=0} - +{quantStats[$cryptoTicker?.toUpperCase()]["MTD %"]?.toFixed(2)}% - {:else} - {quantStats[$cryptoTicker?.toUpperCase()]["MTD %"]?.toFixed(2)}% - {/if} - - {#if quantStats['SPY']["MTD %"] >=0} - +{quantStats['SPY']["MTD %"]?.toFixed(2)}% - {:else} - {quantStats['SPY']["MTD %"]?.toFixed(2)}% - {/if} -
- 3M - - {#if quantStats[$cryptoTicker?.toUpperCase()]["3M %"] >=0} - +{quantStats[$cryptoTicker?.toUpperCase()]["3M %"]?.toFixed(2)}% - {:else} - {quantStats[$cryptoTicker?.toUpperCase()]["3M %"]?.toFixed(2)}% - {/if} - - {#if quantStats['SPY']["3M %"] >=0} - +{quantStats['SPY']["3M %"]?.toFixed(2)}% - {:else} - {quantStats['SPY']["3M %"]?.toFixed(2)}% - {/if} -
- 6M - - {#if quantStats[$cryptoTicker?.toUpperCase()]["6M %"] >=0} - +{quantStats[$cryptoTicker?.toUpperCase()]["6M %"]?.toFixed(2)}% - {:else} - {quantStats[$cryptoTicker?.toUpperCase()]["6M %"]?.toFixed(2)}% - {/if} - - {#if quantStats['SPY']["6M %"] >=0} - +{quantStats['SPY']["6M %"]?.toFixed(2)}% - {:else} - {quantStats['SPY']["6M %"]?.toFixed(2)}% - {/if} -
- Best Day - - {#if quantStats[$cryptoTicker?.toUpperCase()]["Best Day %"] >=0} - +{quantStats[$cryptoTicker?.toUpperCase()]["Best Day %"]?.toFixed(2)}% - {:else} - {quantStats[$cryptoTicker?.toUpperCase()]["Best Day %"]?.toFixed(2)}% - {/if} - - {#if quantStats['SPY']["Best Day %"] >=0} - +{quantStats['SPY']["Best Day %"]?.toFixed(2)}% - {:else} - {quantStats['SPY']["Best Day %"]?.toFixed(2)}% - {/if} -
- Worst Day - - {#if quantStats[$cryptoTicker?.toUpperCase()]["Worst Day %"] >=0} - +{quantStats[$cryptoTicker?.toUpperCase()]["Worst Day %"]?.toFixed(2)}% - {:else} - {quantStats[$cryptoTicker?.toUpperCase()]["Worst Day %"]?.toFixed(2)}% - {/if} - - {#if quantStats['SPY']["Worst Day %"] >=0} - +{quantStats['SPY']["Worst Day %"]?.toFixed(2)}% - {:else} - {quantStats['SPY']["Worst Day %"]?.toFixed(2)}% - {/if} -
- Best Month - - {#if quantStats[$cryptoTicker?.toUpperCase()]["Best Month %"] >=0} - +{quantStats[$cryptoTicker?.toUpperCase()]["Best Month %"]?.toFixed(2)}% - {:else} - {quantStats[$cryptoTicker?.toUpperCase()]["Best Month %"]?.toFixed(2)}% - {/if} - - {#if quantStats['SPY']["Best Month %"] >=0} - +{quantStats['SPY']["Best Month %"]?.toFixed(2)}% - {:else} - {quantStats['SPY']["Best Month %"]?.toFixed(2)}% - {/if} -
- Worst Month - - {#if quantStats[$cryptoTicker?.toUpperCase()]["Worst Month %"] >=0} - +{quantStats[$cryptoTicker?.toUpperCase()]["Worst Month %"]?.toFixed(2)}% - {:else} - {quantStats[$cryptoTicker?.toUpperCase()]["Worst Month %"]?.toFixed(2)}% - {/if} - - {#if quantStats['SPY']["Worst Month %"] >=0} - +{quantStats['SPY']["Worst Month %"]?.toFixed(2)}% - {:else} - {quantStats['SPY']["Worst Month %"]?.toFixed(2)}% - {/if} -
- Best Year - - {#if quantStats[$cryptoTicker?.toUpperCase()]["Best Year %"] >=0} - +{quantStats[$cryptoTicker?.toUpperCase()]["Best Year %"]?.toFixed(2)}% - {:else} - {quantStats[$cryptoTicker?.toUpperCase()]["Best Year %"]?.toFixed(2)}% - {/if} - - {#if quantStats['SPY']["Best Year %"] >=0} - +{quantStats['SPY']["Best Year %"]?.toFixed(2)}% - {:else} - {quantStats['SPY']["Best Year %"]?.toFixed(2)}% - {/if} -
- Worst Year - - {#if quantStats[$cryptoTicker?.toUpperCase()]["Worst Year %"] >=0} - +{quantStats[$cryptoTicker?.toUpperCase()]["Worst Year %"]?.toFixed(2)}% - {:else} - {quantStats[$cryptoTicker?.toUpperCase()]["Worst Year %"]?.toFixed(2)}% - {/if} - - {#if quantStats['SPY']["Worst Year %"] >=0} - +{quantStats['SPY']["Worst Year %"]?.toFixed(2)}% - {:else} - {quantStats['SPY']["Worst Year %"]?.toFixed(2)}% - {/if} -
- Avg. Drawdown - - {#if quantStats[$cryptoTicker?.toUpperCase()]["Avg. Drawdown"] >=0} - +{quantStats[$cryptoTicker?.toUpperCase()]["Avg. Drawdown"]?.toFixed(2)}% - {:else} - {quantStats[$cryptoTicker?.toUpperCase()]["Avg. Drawdown"]?.toFixed(2)}% - {/if} - - {#if quantStats['SPY']["Avg. Drawdown"] >=0} - +{quantStats['SPY']["Avg. Drawdown"]?.toFixed(2)}% - {:else} - {quantStats['SPY']["Avg. Drawdown"]?.toFixed(2)}% - {/if} -
- Avg. Drawdown Days - - {quantStats[$cryptoTicker?.toUpperCase()]["Avg. Drawdown Days"]} - - {quantStats['SPY']["Avg. Drawdown Days"]} -
- Recovery Factor - - {quantStats[$cryptoTicker?.toUpperCase()]["Recovery Factor"]?.toFixed(2)} - - {quantStats['SPY']["Recovery Factor"]?.toFixed(2)} -
- Ulcer Index - - {quantStats[$cryptoTicker?.toUpperCase()]["Ulcer Index"]?.toFixed(2)} - - {quantStats['SPY']["Ulcer Index"]?.toFixed(2)} -
- Avg. Up Month - - {#if quantStats[$cryptoTicker?.toUpperCase()]["Avg. Up Month %"] >=0} - +{quantStats[$cryptoTicker?.toUpperCase()]["Avg. Up Month %"]?.toFixed(2)}% - {:else} - {quantStats[$cryptoTicker?.toUpperCase()]["Avg. Up Month %"]?.toFixed(2)}% - {/if} - - {#if quantStats['SPY']["Avg. Up Month %"] >=0} - +{quantStats['SPY']["Avg. Up Month %"]?.toFixed(2)}% - {:else} - {quantStats['SPY']["Avg. Up Month %"]?.toFixed(2)}% - {/if} -
- Avg. Down Month - - {#if quantStats[$cryptoTicker?.toUpperCase()]["Avg. Down Month %"] >=0} - +{quantStats[$cryptoTicker?.toUpperCase()]["Avg. Down Month %"]?.toFixed(2)}% - {:else} - {quantStats[$cryptoTicker?.toUpperCase()]["Avg. Down Month %"]?.toFixed(2)}% - {/if} - - {#if quantStats['SPY']["Avg. Down Month %"] >=0} - +{quantStats['SPY']["Avg. Down Month %"]?.toFixed(2)}% - {:else} - {quantStats['SPY']["Avg. Down Month %"]?.toFixed(2)}% - {/if} -
- Win Days - - {quantStats[$cryptoTicker?.toUpperCase()]["Win Days %"]?.toFixed(2)}% - - {quantStats['SPY']["Win Days %"]?.toFixed(2)}% -
- Win Month - - {quantStats[$cryptoTicker?.toUpperCase()]["Win Month %"]?.toFixed(2)}% - - {quantStats['SPY']["Win Month %"]?.toFixed(2)}% -
- Win Quarter - - {quantStats[$cryptoTicker?.toUpperCase()]["Win Quarter %"]?.toFixed(2)}% - - {quantStats['SPY']["Win Quarter %"]?.toFixed(2)}% -
- Win Year - - {quantStats[$cryptoTicker?.toUpperCase()]["Win Year %"]?.toFixed(2)}% - - {quantStats['SPY']["Win Year %"]?.toFixed(2)}% -
- -
- - - {:else} - -

- -

- {/if} - - - +
+ {item["Drawdown"]?.toFixed(2)}% + + {item["Days"]} +
+
+ +

+ {$cryptoTicker} vs. S&P500 +

+ +

Comparison of company stats against the S&P500 Index.

+ + + Time Period between {new Date(quantStats[$cryptoTicker?.toUpperCase()]["Start Period"]).toLocaleString("en-US", { month: "long", day: "numeric", year: "numeric", daySuffix: "2-digit" })} + - + {new Date(quantStats[$cryptoTicker?.toUpperCase()]["End Period"]).toLocaleString("en-US", { month: "long", day: "numeric", year: "numeric", daySuffix: "2-digit" })} + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Metric + {$cryptoTicker} + S&P500
Cumulative Return + {#if quantStats[$cryptoTicker?.toUpperCase()]["Cumulative Return %"] >= 0} + +{abbreviateNumber(quantStats[$cryptoTicker?.toUpperCase()]["Cumulative Return %"])}% + {:else} + {abbreviateNumber(quantStats[$cryptoTicker?.toUpperCase()]["Cumulative Return %"])}% + {/if} + + {#if quantStats["SPY"]["Cumulative Return %"] >= 0} + +{quantStats["SPY"]["Cumulative Return %"]}% + {:else} + {quantStats["SPY"]["Cumulative Return %"]}% + {/if} +
Compound Annual Growth Rate (CAGR) + {#if quantStats[$cryptoTicker?.toUpperCase()]["CAGR %"] >= 0} + +{quantStats[$cryptoTicker?.toUpperCase()]["CAGR %"]}% + {:else} + {quantStats[$cryptoTicker?.toUpperCase()]["CAGR %"]}% + {/if} + + {#if quantStats["SPY"]["CAGR %"] >= 0} + +{quantStats["SPY"]["CAGR %"]}% + {:else} + {quantStats["SPY"]["CAGR %"]}% + {/if} +
Sharpe + {quantStats[$cryptoTicker?.toUpperCase()]["Sharpe"]?.toFixed(2)} + + {quantStats["SPY"]["Sharpe"]?.toFixed(2)} +
Sortino + {quantStats[$cryptoTicker?.toUpperCase()]["Sortino"]?.toFixed(2)} + + {quantStats["SPY"]["Sortino"]?.toFixed(2)} +
Max Drawdown + {#if quantStats[$cryptoTicker?.toUpperCase()]["Max Drawdown"] >= 0} + +{quantStats[$cryptoTicker?.toUpperCase()]["Max Drawdown"]}% + {:else} + {quantStats[$cryptoTicker?.toUpperCase()]["Max Drawdown"]}% + {/if} + + {#if quantStats["SPY"]["Max Drawdown"] >= 0} + +{quantStats["SPY"]["Max Drawdown"]}% + {:else} + {quantStats["SPY"]["Max Drawdown"]}% + {/if} +
Longest Drawdown Days + {quantStats[$cryptoTicker?.toUpperCase()]["Longest DD Days"]} + + {quantStats["SPY"]["Longest DD Days"]} +
Volatility (ann.) + {quantStats[$cryptoTicker?.toUpperCase()]["Volatility (ann.) %"]}% + + {quantStats["SPY"]["Volatility (ann.) %"]}% +
Correlation + {quantStats[$cryptoTicker?.toUpperCase()]["Correlation"]}% + + {quantStats["SPY"]["Correlation"]} +
R^2 + {quantStats[$cryptoTicker?.toUpperCase()]["R^2"]} + + {quantStats["SPY"]["R^2"]} +
Calmar + {quantStats[$cryptoTicker?.toUpperCase()]["Calmar"]} + + {quantStats["SPY"]["Calmar"]} +
Skew + {quantStats[$cryptoTicker?.toUpperCase()]["Skew"]?.toFixed(2)} + + {quantStats["SPY"]["Skew"]?.toFixed(2)} +
Kurtosis + {quantStats[$cryptoTicker?.toUpperCase()]["Kurtosis"]?.toFixed(2)} + + {quantStats["SPY"]["Kurtosis"]?.toFixed(2)} +
Expected Daily + {#if quantStats[$cryptoTicker?.toUpperCase()]["Expected Daily %"] >= 0} + +{quantStats[$cryptoTicker?.toUpperCase()]["Expected Daily %"]}% + {:else} + {quantStats[$cryptoTicker?.toUpperCase()]["Expected Daily %"]}% + {/if} + + {#if quantStats["SPY"]["Expected Daily %"] >= 0} + +{quantStats["SPY"]["Expected Daily %"]}% + {:else} + {quantStats["SPY"]["Expected Daily %"]}% + {/if} +
Expected Monthly + {#if quantStats[$cryptoTicker?.toUpperCase()]["Expected Monthly %"] >= 0} + +{quantStats[$cryptoTicker?.toUpperCase()]["Expected Monthly %"]}% + {:else} + {quantStats[$cryptoTicker?.toUpperCase()]["Expected Monthly %"]}% + {/if} + + {#if quantStats["SPY"]["Expected Monthly %"] >= 0} + +{quantStats["SPY"]["Expected Monthly %"]}% + {:else} + {quantStats["SPY"]["Expected Monthly %"]}% + {/if} +
Expected Yearly + {#if quantStats[$cryptoTicker?.toUpperCase()]["Expected Yearly %"] >= 0} + +{quantStats[$cryptoTicker?.toUpperCase()]["Expected Yearly %"]}% + {:else} + {quantStats[$cryptoTicker?.toUpperCase()]["Expected Yearly %"]}% + {/if} + + {#if quantStats["SPY"]["Expected Yearly %"] >= 0} + +{quantStats["SPY"]["Expected Yearly %"]}% + {:else} + {quantStats["SPY"]["Expected Yearly %"]}% + {/if} +
Kelly Criterion + {quantStats[$cryptoTicker?.toUpperCase()]["Kelly Criterion %"]}% + + {quantStats["SPY"]["Kelly Criterion %"]}% +
Risk of Ruin + {quantStats[$cryptoTicker?.toUpperCase()]["Risk of Ruin %"]}% + + {quantStats["SPY"]["Risk of Ruin %"]}% +
Daily Value-at-Risk + {#if quantStats[$cryptoTicker?.toUpperCase()]["Daily Value-at-Risk %"] >= 0} + +{quantStats[$cryptoTicker?.toUpperCase()]["Daily Value-at-Risk %"]?.toFixed(2)}% + {:else} + {quantStats[$cryptoTicker?.toUpperCase()]["Daily Value-at-Risk %"]?.toFixed(2)}% + {/if} + + {#if quantStats["SPY"]["Daily Value-at-Risk %"] >= 0} + +{quantStats["SPY"]["Daily Value-at-Risk %"]?.toFixed(2)}% + {:else} + {quantStats["SPY"]["Daily Value-at-Risk %"]?.toFixed(2)}% + {/if} +
Expected Shortfall (cVaR) + {#if quantStats[$cryptoTicker?.toUpperCase()]["Expected Shortfall (cVaR) %"] >= 0} + +{quantStats[$cryptoTicker?.toUpperCase()]["Expected Shortfall (cVaR) %"]?.toFixed(2)}% + {:else} + {quantStats[$cryptoTicker?.toUpperCase()]["Expected Shortfall (cVaR) %"]?.toFixed(2)}% + {/if} + + {#if quantStats["SPY"]["Expected Shortfall (cVaR) %"] >= 0} + +{quantStats["SPY"]["Expected Shortfall (cVaR) %"]?.toFixed(2)}% + {:else} + {quantStats["SPY"]["Expected Shortfall (cVaR) %"]?.toFixed(2)}% + {/if} +
Max Consecutive Wins + {quantStats[$cryptoTicker?.toUpperCase()]["Max Consecutive Wins"]} + + {quantStats["SPY"]["Max Consecutive Wins"]} +
Max Consecutive Losses + {quantStats[$cryptoTicker?.toUpperCase()]["Max Consecutive Losses"]} + + {quantStats["SPY"]["Max Consecutive Losses"]} +
Gain/Pain Ratio + {quantStats[$cryptoTicker?.toUpperCase()]["Gain/Pain Ratio"]?.toFixed(2)} + + {quantStats["SPY"]["Gain/Pain Ratio"]?.toFixed(2)} +
Gain/Pain (1M) + {quantStats[$cryptoTicker?.toUpperCase()]["Gain/Pain (1M)"]?.toFixed(2)} + + {quantStats["SPY"]["Gain/Pain (1M)"]?.toFixed(2)} +
Payoff Ratio + {quantStats[$cryptoTicker?.toUpperCase()]["Payoff Ratio"]?.toFixed(2)} + + {quantStats["SPY"]["Payoff Ratio"]?.toFixed(2)} +
Profit Factor + {quantStats[$cryptoTicker?.toUpperCase()]["Profit Factor"]?.toFixed(2)} + + {quantStats["SPY"]["Profit Factor"]?.toFixed(2)} +
Outlier Win Ratio + {quantStats[$cryptoTicker?.toUpperCase()]["Outlier Win Ratio"]?.toFixed(2)} + + {quantStats["SPY"]["Outlier Win Ratio"]?.toFixed(2)} +
Outlier Loss Ratio + {quantStats[$cryptoTicker?.toUpperCase()]["Outlier Loss Ratio"]?.toFixed(2)} + + {quantStats["SPY"]["Outlier Loss Ratio"]?.toFixed(2)} +
MTD + {#if quantStats[$cryptoTicker?.toUpperCase()]["MTD %"] >= 0} + +{quantStats[$cryptoTicker?.toUpperCase()]["MTD %"]?.toFixed(2)}% + {:else} + {quantStats[$cryptoTicker?.toUpperCase()]["MTD %"]?.toFixed(2)}% + {/if} + + {#if quantStats["SPY"]["MTD %"] >= 0} + +{quantStats["SPY"]["MTD %"]?.toFixed(2)}% + {:else} + {quantStats["SPY"]["MTD %"]?.toFixed(2)}% + {/if} +
3M + {#if quantStats[$cryptoTicker?.toUpperCase()]["3M %"] >= 0} + +{quantStats[$cryptoTicker?.toUpperCase()]["3M %"]?.toFixed(2)}% + {:else} + {quantStats[$cryptoTicker?.toUpperCase()]["3M %"]?.toFixed(2)}% + {/if} + + {#if quantStats["SPY"]["3M %"] >= 0} + +{quantStats["SPY"]["3M %"]?.toFixed(2)}% + {:else} + {quantStats["SPY"]["3M %"]?.toFixed(2)}% + {/if} +
6M + {#if quantStats[$cryptoTicker?.toUpperCase()]["6M %"] >= 0} + +{quantStats[$cryptoTicker?.toUpperCase()]["6M %"]?.toFixed(2)}% + {:else} + {quantStats[$cryptoTicker?.toUpperCase()]["6M %"]?.toFixed(2)}% + {/if} + + {#if quantStats["SPY"]["6M %"] >= 0} + +{quantStats["SPY"]["6M %"]?.toFixed(2)}% + {:else} + {quantStats["SPY"]["6M %"]?.toFixed(2)}% + {/if} +
Best Day + {#if quantStats[$cryptoTicker?.toUpperCase()]["Best Day %"] >= 0} + +{quantStats[$cryptoTicker?.toUpperCase()]["Best Day %"]?.toFixed(2)}% + {:else} + {quantStats[$cryptoTicker?.toUpperCase()]["Best Day %"]?.toFixed(2)}% + {/if} + + {#if quantStats["SPY"]["Best Day %"] >= 0} + +{quantStats["SPY"]["Best Day %"]?.toFixed(2)}% + {:else} + {quantStats["SPY"]["Best Day %"]?.toFixed(2)}% + {/if} +
Worst Day + {#if quantStats[$cryptoTicker?.toUpperCase()]["Worst Day %"] >= 0} + +{quantStats[$cryptoTicker?.toUpperCase()]["Worst Day %"]?.toFixed(2)}% + {:else} + {quantStats[$cryptoTicker?.toUpperCase()]["Worst Day %"]?.toFixed(2)}% + {/if} + + {#if quantStats["SPY"]["Worst Day %"] >= 0} + +{quantStats["SPY"]["Worst Day %"]?.toFixed(2)}% + {:else} + {quantStats["SPY"]["Worst Day %"]?.toFixed(2)}% + {/if} +
Best Month + {#if quantStats[$cryptoTicker?.toUpperCase()]["Best Month %"] >= 0} + +{quantStats[$cryptoTicker?.toUpperCase()]["Best Month %"]?.toFixed(2)}% + {:else} + {quantStats[$cryptoTicker?.toUpperCase()]["Best Month %"]?.toFixed(2)}% + {/if} + + {#if quantStats["SPY"]["Best Month %"] >= 0} + +{quantStats["SPY"]["Best Month %"]?.toFixed(2)}% + {:else} + {quantStats["SPY"]["Best Month %"]?.toFixed(2)}% + {/if} +
Worst Month + {#if quantStats[$cryptoTicker?.toUpperCase()]["Worst Month %"] >= 0} + +{quantStats[$cryptoTicker?.toUpperCase()]["Worst Month %"]?.toFixed(2)}% + {:else} + {quantStats[$cryptoTicker?.toUpperCase()]["Worst Month %"]?.toFixed(2)}% + {/if} + + {#if quantStats["SPY"]["Worst Month %"] >= 0} + +{quantStats["SPY"]["Worst Month %"]?.toFixed(2)}% + {:else} + {quantStats["SPY"]["Worst Month %"]?.toFixed(2)}% + {/if} +
Best Year + {#if quantStats[$cryptoTicker?.toUpperCase()]["Best Year %"] >= 0} + +{quantStats[$cryptoTicker?.toUpperCase()]["Best Year %"]?.toFixed(2)}% + {:else} + {quantStats[$cryptoTicker?.toUpperCase()]["Best Year %"]?.toFixed(2)}% + {/if} + + {#if quantStats["SPY"]["Best Year %"] >= 0} + +{quantStats["SPY"]["Best Year %"]?.toFixed(2)}% + {:else} + {quantStats["SPY"]["Best Year %"]?.toFixed(2)}% + {/if} +
Worst Year + {#if quantStats[$cryptoTicker?.toUpperCase()]["Worst Year %"] >= 0} + +{quantStats[$cryptoTicker?.toUpperCase()]["Worst Year %"]?.toFixed(2)}% + {:else} + {quantStats[$cryptoTicker?.toUpperCase()]["Worst Year %"]?.toFixed(2)}% + {/if} + + {#if quantStats["SPY"]["Worst Year %"] >= 0} + +{quantStats["SPY"]["Worst Year %"]?.toFixed(2)}% + {:else} + {quantStats["SPY"]["Worst Year %"]?.toFixed(2)}% + {/if} +
Avg. Drawdown + {#if quantStats[$cryptoTicker?.toUpperCase()]["Avg. Drawdown"] >= 0} + +{quantStats[$cryptoTicker?.toUpperCase()]["Avg. Drawdown"]?.toFixed(2)}% + {:else} + {quantStats[$cryptoTicker?.toUpperCase()]["Avg. Drawdown"]?.toFixed(2)}% + {/if} + + {#if quantStats["SPY"]["Avg. Drawdown"] >= 0} + +{quantStats["SPY"]["Avg. Drawdown"]?.toFixed(2)}% + {:else} + {quantStats["SPY"]["Avg. Drawdown"]?.toFixed(2)}% + {/if} +
Avg. Drawdown Days + {quantStats[$cryptoTicker?.toUpperCase()]["Avg. Drawdown Days"]} + + {quantStats["SPY"]["Avg. Drawdown Days"]} +
Recovery Factor + {quantStats[$cryptoTicker?.toUpperCase()]["Recovery Factor"]?.toFixed(2)} + + {quantStats["SPY"]["Recovery Factor"]?.toFixed(2)} +
Ulcer Index + {quantStats[$cryptoTicker?.toUpperCase()]["Ulcer Index"]?.toFixed(2)} + + {quantStats["SPY"]["Ulcer Index"]?.toFixed(2)} +
Avg. Up Month + {#if quantStats[$cryptoTicker?.toUpperCase()]["Avg. Up Month %"] >= 0} + +{quantStats[$cryptoTicker?.toUpperCase()]["Avg. Up Month %"]?.toFixed(2)}% + {:else} + {quantStats[$cryptoTicker?.toUpperCase()]["Avg. Up Month %"]?.toFixed(2)}% + {/if} + + {#if quantStats["SPY"]["Avg. Up Month %"] >= 0} + +{quantStats["SPY"]["Avg. Up Month %"]?.toFixed(2)}% + {:else} + {quantStats["SPY"]["Avg. Up Month %"]?.toFixed(2)}% + {/if} +
Avg. Down Month + {#if quantStats[$cryptoTicker?.toUpperCase()]["Avg. Down Month %"] >= 0} + +{quantStats[$cryptoTicker?.toUpperCase()]["Avg. Down Month %"]?.toFixed(2)}% + {:else} + {quantStats[$cryptoTicker?.toUpperCase()]["Avg. Down Month %"]?.toFixed(2)}% + {/if} + + {#if quantStats["SPY"]["Avg. Down Month %"] >= 0} + +{quantStats["SPY"]["Avg. Down Month %"]?.toFixed(2)}% + {:else} + {quantStats["SPY"]["Avg. Down Month %"]?.toFixed(2)}% + {/if} +
Win Days + {quantStats[$cryptoTicker?.toUpperCase()]["Win Days %"]?.toFixed(2)}% + + {quantStats["SPY"]["Win Days %"]?.toFixed(2)}% +
Win Month + {quantStats[$cryptoTicker?.toUpperCase()]["Win Month %"]?.toFixed(2)}% + + {quantStats["SPY"]["Win Month %"]?.toFixed(2)}% +
Win Quarter + {quantStats[$cryptoTicker?.toUpperCase()]["Win Quarter %"]?.toFixed(2)}% + + {quantStats["SPY"]["Win Quarter %"]?.toFixed(2)}% +
Win Year + {quantStats[$cryptoTicker?.toUpperCase()]["Win Year %"]?.toFixed(2)}% + + {quantStats["SPY"]["Win Year %"]?.toFixed(2)}% +
+
{:else} -

- No data available -

+

+ +

{/if} -
-
\ No newline at end of file + {:else} +

No data available

+ {/if} +
+
+
diff --git a/src/routes/dividends-calendar/+page.svelte b/src/routes/dividends-calendar/+page.svelte index 6affda69..b962e818 100644 --- a/src/routes/dividends-calendar/+page.svelte +++ b/src/routes/dividends-calendar/+page.svelte @@ -365,7 +365,7 @@ $: {
- + diff --git a/src/routes/economic-indicator/+page.svelte b/src/routes/economic-indicator/+page.svelte index f7948041..9a349bb7 100644 --- a/src/routes/economic-indicator/+page.svelte +++ b/src/routes/economic-indicator/+page.svelte @@ -780,7 +780,7 @@ onMount(async () => {
diff --git a/src/routes/etf/[tickerID]/+page.svelte b/src/routes/etf/[tickerID]/+page.svelte index bc50a26c..970cc4c8 100644 --- a/src/routes/etf/[tickerID]/+page.svelte +++ b/src/routes/etf/[tickerID]/+page.svelte @@ -1200,7 +1200,7 @@ async function exportData() {
diff --git a/src/routes/etf/[tickerID]/congress-trading/+page.svelte b/src/routes/etf/[tickerID]/congress-trading/+page.svelte index 367be8d3..808dd8ea 100644 --- a/src/routes/etf/[tickerID]/congress-trading/+page.svelte +++ b/src/routes/etf/[tickerID]/congress-trading/+page.svelte @@ -405,7 +405,7 @@ onMount(async () => {
diff --git a/src/routes/etf/[tickerID]/dividends/+page.svelte b/src/routes/etf/[tickerID]/dividends/+page.svelte index 41050440..042f6e71 100644 --- a/src/routes/etf/[tickerID]/dividends/+page.svelte +++ b/src/routes/etf/[tickerID]/dividends/+page.svelte @@ -307,7 +307,7 @@
diff --git a/src/routes/etf/[tickerID]/options/+page.svelte b/src/routes/etf/[tickerID]/options/+page.svelte index 670a1b3b..6d243e08 100644 --- a/src/routes/etf/[tickerID]/options/+page.svelte +++ b/src/routes/etf/[tickerID]/options/+page.svelte @@ -1062,7 +1062,7 @@ $: {
diff --git a/src/routes/etf/[tickerID]/stats/+page.svelte b/src/routes/etf/[tickerID]/stats/+page.svelte index a81b91b1..e341d0db 100644 --- a/src/routes/etf/[tickerID]/stats/+page.svelte +++ b/src/routes/etf/[tickerID]/stats/+page.svelte @@ -1,1131 +1,915 @@ - - - - - - - - {$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ''} {$displayCompanyName} ({$etfTicker}) Statistics & Valuation Metrics · stocknear - - - - - - - - - - - - - - - - - - - -
-
-
-

- Fundamental Data -

- -
- - Get detailed Fundamental insights of {$displayCompanyName} and compare it to the S&P500. -
- - {#if Object?.keys(quantStats)?.length !== 0} - - - -
-
- -
-
- YTD Return -
-
- {$etfTicker} - - {#if quantStats[$etfTicker?.toUpperCase()]["YTD %"] >=0} - +{quantStats[$etfTicker?.toUpperCase()]["YTD %"]?.toFixed(2)}% - {:else} - {quantStats[$etfTicker?.toUpperCase()]["YTD %"]?.toFixed(2)}% - {/if} - -
-
- vs. -
-
- SPY - - {#if quantStats['SPY']["YTD %"] >=0} - +{quantStats['SPY']["YTD %"]?.toFixed(2)}% - {:else} - {quantStats['SPY']["YTD %"]?.toFixed(2)}% - {/if} - -
-
-
-
- - +updateDayRange() +updateYearRange() +*/ + + + + + + + {$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} + {$displayCompanyName} ({$etfTicker}) Statistics & Valuation Metrics · stocknear + + + + + + + + + + + + + + + + +
+
+
+

Fundamental Data

+ +
+ + Get detailed Fundamental insights of {$displayCompanyName} and compare it to the S&P500. +
+ + {#if Object?.keys(quantStats)?.length !== 0} + +
+
- 1-Year Return -
-
- {$etfTicker} - - {#if quantStats[$etfTicker?.toUpperCase()]["1Y %"] >=0} - +{quantStats[$etfTicker?.toUpperCase()]["1Y %"]?.toFixed(2)}% - {:else} - {quantStats[$etfTicker?.toUpperCase()]["1Y %"]?.toFixed(2)}% - {/if} - -
-
- vs. -
-
- SPY - - {#if quantStats['SPY']["1Y %"] >=0} - +{quantStats['SPY']["1Y %"]?.toFixed(2)}% - {:else} - {quantStats['SPY']["1Y %"]?.toFixed(2)}% - {/if} - -
+ YTD Return +
+
+ {$etfTicker} + + {#if quantStats[$etfTicker?.toUpperCase()]["YTD %"] >= 0} + +{quantStats[$etfTicker?.toUpperCase()]["YTD %"]?.toFixed(2)}% + {:else} + {quantStats[$etfTicker?.toUpperCase()]["YTD %"]?.toFixed(2)}% + {/if} +
+
vs.
+
+ SPY + + {#if quantStats["SPY"]["YTD %"] >= 0} + +{quantStats["SPY"]["YTD %"]?.toFixed(2)}% + {:else} + {quantStats["SPY"]["YTD %"]?.toFixed(2)}% + {/if} + +
+
-
- - -
-
+
+ +
+
+ 1-Year Return +
+
+ {$etfTicker} + + {#if quantStats[$etfTicker?.toUpperCase()]["1Y %"] >= 0} + +{quantStats[$etfTicker?.toUpperCase()]["1Y %"]?.toFixed(2)}% + {:else} + {quantStats[$etfTicker?.toUpperCase()]["1Y %"]?.toFixed(2)}% + {/if} + +
+
vs.
+
+ SPY + + {#if quantStats["SPY"]["1Y %"] >= 0} + +{quantStats["SPY"]["1Y %"]?.toFixed(2)}% + {:else} + {quantStats["SPY"]["1Y %"]?.toFixed(2)}% + {/if} + +
+
+
+
+ +
+
3-Year Return
-
- {$etfTicker} - - {#if quantStats[$etfTicker?.toUpperCase()]["3Y (ann.) %"] >=0} - +{quantStats[$etfTicker?.toUpperCase()]["3Y (ann.) %"]?.toFixed(2)}% - {:else} - {quantStats[$etfTicker?.toUpperCase()]["3Y (ann.) %"]?.toFixed(2)}% - {/if} - -
-
- vs. -
-
- SPY - - {#if quantStats['SPY']["3Y (ann.) %"] >=0} - +{quantStats['SPY']["3Y (ann.) %"]?.toFixed(2)}% - {:else} - {quantStats['SPY']["3Y (ann.) %"]?.toFixed(2)}% - {/if} - -
+
+ {$etfTicker} + + {#if quantStats[$etfTicker?.toUpperCase()]["3Y (ann.) %"] >= 0} + +{quantStats[$etfTicker?.toUpperCase()]["3Y (ann.) %"]?.toFixed(2)}% + {:else} + {quantStats[$etfTicker?.toUpperCase()]["3Y (ann.) %"]?.toFixed(2)}% + {/if} + +
+
vs.
+
+ SPY + + {#if quantStats["SPY"]["3Y (ann.) %"] >= 0} + +{quantStats["SPY"]["3Y (ann.) %"]?.toFixed(2)}% + {:else} + {quantStats["SPY"]["3Y (ann.) %"]?.toFixed(2)}% + {/if} + +
+
-
- - -
- + - - -
- - - - - -

- Company Stats -

- + + +
-
-
Symbol Company Name Market Cap
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Mkt Cap ${marketCap}Volume{volume}
Price${currentPrice}Prev. Close${previousClose}
Alpha - {typeof alpha !== 'undefined' ? alpha : '-'} - Beta - {typeof beta !== 'undefined' && !isNaN(beta) ? beta?.toFixed(2) : '-'} -
EPS{eps?.toFixed(2)}PE{pe}
-
- - - - {#if $etfTicker in quantStats && Object.keys(quantStats[$etfTicker]).length > 0} - -

- Worst 10 Drawdowns of {$etfTicker} -

-
- - - - - - - - - - - {#each quantStats[$etfTicker?.toUpperCase()]['Worst 10 Drawdowns'] as item} - - - - - - - {/each} - -
StartedRecoveredDrawdownDays
- {new Date(item['Started']).toLocaleString('en-US', { month: 'short', day: 'numeric', year: 'numeric', daySuffix: '2-digit' })} - - {#if ongoingDD(item['Recovered']) === true} - continuing - {:else} - {new Date(item['Recovered']).toLocaleString('en-US', { month: 'short', day: 'numeric', year: 'numeric', daySuffix: '2-digit' })} - {/if} - - {item['Drawdown']?.toFixed(2)}% - - {item['Days']} -
-
- - -

- {$etfTicker} vs. - S&P500 -

- -

- Comparison of company stats against the S&P500 Index. -

- - - Time Period between {new Date(quantStats[$etfTicker?.toUpperCase()]["Start Period"]).toLocaleString('en-US', { month: 'long', day: 'numeric', year: 'numeric', daySuffix: '2-digit' })} - - - {new Date(quantStats[$etfTicker?.toUpperCase()]["End Period"]).toLocaleString('en-US', { month: 'long', day: 'numeric', year: 'numeric', daySuffix: '2-digit' })} - - - - - - - -
- - - - - - - - - - - - + + + + {/each} + +
- Metric - - {$etfTicker} - - S&P500 -
- Cumulative Return - - {#if quantStats[$etfTicker?.toUpperCase()]["Cumulative Return %"] >=0} - +{abbreviateNumber(quantStats[$etfTicker?.toUpperCase()]["Cumulative Return %"])}% + + {#if $etfTicker in quantStats && Object.keys(quantStats[$etfTicker]).length > 0} +

+ Worst 10 Drawdowns of {$etfTicker} +

+
+ + + + + + + + + + + {#each quantStats[$etfTicker?.toUpperCase()]["Worst 10 Drawdowns"] as item} + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
StartedRecoveredDrawdownDays
+ {new Date(item["Started"]).toLocaleString("en-US", { month: "short", day: "numeric", year: "numeric", daySuffix: "2-digit" })} + + {#if ongoingDD(item["Recovered"]) === true} + continuing {:else} - {abbreviateNumber(quantStats[$etfTicker?.toUpperCase()]["Cumulative Return %"])}% + {new Date(item["Recovered"]).toLocaleString("en-US", { month: "short", day: "numeric", year: "numeric", daySuffix: "2-digit" })} {/if} - - {#if quantStats['SPY']["Cumulative Return %"] >=0} - +{quantStats['SPY']["Cumulative Return %"]}% - {:else} - {quantStats['SPY']["Cumulative Return %"]}% - {/if} -
- Compound Annual Growth Rate (CAGR) - - {#if quantStats[$etfTicker?.toUpperCase()]["CAGR %"] >=0} - +{quantStats[$etfTicker?.toUpperCase()]["CAGR %"]}% - {:else} - {quantStats[$etfTicker?.toUpperCase()]["CAGR %"]}% - {/if} - - {#if quantStats['SPY']["CAGR %"] >=0} - +{quantStats['SPY']["CAGR %"]}% - {:else} - {quantStats['SPY']["CAGR %"]}% - {/if} -
- Sharpe - - {quantStats[$etfTicker?.toUpperCase()]["Sharpe"]?.toFixed(2)} - - {quantStats['SPY']["Sharpe"]?.toFixed(2)} -
- Sortino - - {quantStats[$etfTicker?.toUpperCase()]["Sortino"]?.toFixed(2)} - - {quantStats['SPY']["Sortino"]?.toFixed(2)} -
- Max Drawdown - - {#if quantStats[$etfTicker?.toUpperCase()]["Max Drawdown"] >=0} - +{quantStats[$etfTicker?.toUpperCase()]["Max Drawdown"]}% - {:else} - {quantStats[$etfTicker?.toUpperCase()]["Max Drawdown"]}% - {/if} - - {#if quantStats['SPY']["Max Drawdown"] >=0} - +{quantStats['SPY']["Max Drawdown"]}% - {:else} - {quantStats['SPY']["Max Drawdown"]}% - {/if} -
- Longest Drawdown Days - - {quantStats[$etfTicker?.toUpperCase()]["Longest DD Days"]} - - {quantStats['SPY']["Longest DD Days"]} -
- Volatility (ann.) - - {quantStats[$etfTicker?.toUpperCase()]["Volatility (ann.) %"]}% - - {quantStats['SPY']["Volatility (ann.) %"]}% -
- Correlation - - {quantStats[$etfTicker?.toUpperCase()]["Correlation"]}% - - {quantStats['SPY']["Correlation"]} -
- R^2 - - {quantStats[$etfTicker?.toUpperCase()]["R^2"]} - - {quantStats['SPY']["R^2"]} -
- Calmar - - {quantStats[$etfTicker?.toUpperCase()]["Calmar"]} - - {quantStats['SPY']["Calmar"]} -
- Skew - - {quantStats[$etfTicker?.toUpperCase()]["Skew"]?.toFixed(2)} - - {quantStats['SPY']["Skew"]?.toFixed(2)} -
- Kurtosis - - {quantStats[$etfTicker?.toUpperCase()]["Kurtosis"]?.toFixed(2)} - - {quantStats['SPY']["Kurtosis"]?.toFixed(2)} -
- Expected Daily - - {#if quantStats[$etfTicker?.toUpperCase()]["Expected Daily %"] >=0} - +{quantStats[$etfTicker?.toUpperCase()]["Expected Daily %"]}% - {:else} - {quantStats[$etfTicker?.toUpperCase()]["Expected Daily %"]}% - {/if} - - {#if quantStats['SPY']["Expected Daily %"] >=0} - +{quantStats['SPY']["Expected Daily %"]}% - {:else} - {quantStats['SPY']["Expected Daily %"]}% - {/if} -
- Expected Monthly - - {#if quantStats[$etfTicker?.toUpperCase()]["Expected Monthly %"] >=0} - +{quantStats[$etfTicker?.toUpperCase()]["Expected Monthly %"]}% - {:else} - {quantStats[$etfTicker?.toUpperCase()]["Expected Monthly %"]}% - {/if} - - {#if quantStats['SPY']["Expected Monthly %"] >=0} - +{quantStats['SPY']["Expected Monthly %"]}% - {:else} - {quantStats['SPY']["Expected Monthly %"]}% - {/if} -
- Expected Yearly - - {#if quantStats[$etfTicker?.toUpperCase()]["Expected Yearly %"] >=0} - +{quantStats[$etfTicker?.toUpperCase()]["Expected Yearly %"]}% - {:else} - {quantStats[$etfTicker?.toUpperCase()]["Expected Yearly %"]}% - {/if} - - {#if quantStats['SPY']["Expected Yearly %"] >=0} - +{quantStats['SPY']["Expected Yearly %"]}% - {:else} - {quantStats['SPY']["Expected Yearly %"]}% - {/if} -
- Kelly Criterion - - {quantStats[$etfTicker?.toUpperCase()]["Kelly Criterion %"]}% - - {quantStats['SPY']["Kelly Criterion %"]}% -
- Risk of Ruin - - {quantStats[$etfTicker?.toUpperCase()]["Risk of Ruin %"]}% - - {quantStats['SPY']["Risk of Ruin %"]}% -
- Daily Value-at-Risk - - {#if quantStats[$etfTicker?.toUpperCase()]["Daily Value-at-Risk %"] >=0} - +{quantStats[$etfTicker?.toUpperCase()]["Daily Value-at-Risk %"]?.toFixed(2)}% - {:else} - {quantStats[$etfTicker?.toUpperCase()]["Daily Value-at-Risk %"]?.toFixed(2)}% - {/if} - - {#if quantStats['SPY']["Daily Value-at-Risk %"] >=0} - +{quantStats['SPY']["Daily Value-at-Risk %"]?.toFixed(2)}% - {:else} - {quantStats['SPY']["Daily Value-at-Risk %"]?.toFixed(2)}% - {/if} -
- Expected Shortfall (cVaR) - - {#if quantStats[$etfTicker?.toUpperCase()]["Expected Shortfall (cVaR) %"] >=0} - +{quantStats[$etfTicker?.toUpperCase()]["Expected Shortfall (cVaR) %"]?.toFixed(2)}% - {:else} - {quantStats[$etfTicker?.toUpperCase()]["Expected Shortfall (cVaR) %"]?.toFixed(2)}% - {/if} - - {#if quantStats['SPY']["Expected Shortfall (cVaR) %"] >=0} - +{quantStats['SPY']["Expected Shortfall (cVaR) %"]?.toFixed(2)}% - {:else} - {quantStats['SPY']["Expected Shortfall (cVaR) %"]?.toFixed(2)}% - {/if} -
- Max Consecutive Wins - - {quantStats[$etfTicker?.toUpperCase()]["Max Consecutive Wins"]} - - {quantStats['SPY']["Max Consecutive Wins"]} -
- Max Consecutive Losses - - {quantStats[$etfTicker?.toUpperCase()]["Max Consecutive Losses"]} - - {quantStats['SPY']["Max Consecutive Losses"]} -
- Gain/Pain Ratio - - {quantStats[$etfTicker?.toUpperCase()]["Gain/Pain Ratio"]?.toFixed(2)} - - {quantStats['SPY']["Gain/Pain Ratio"]?.toFixed(2)} -
- Gain/Pain (1M) - - {quantStats[$etfTicker?.toUpperCase()]["Gain/Pain (1M)"]?.toFixed(2)} - - {quantStats['SPY']["Gain/Pain (1M)"]?.toFixed(2)} -
- Payoff Ratio - - {quantStats[$etfTicker?.toUpperCase()]["Payoff Ratio"]?.toFixed(2)} - - {quantStats['SPY']["Payoff Ratio"]?.toFixed(2)} -
- Profit Factor - - {quantStats[$etfTicker?.toUpperCase()]["Profit Factor"]?.toFixed(2)} - - {quantStats['SPY']["Profit Factor"]?.toFixed(2)} -
- Outlier Win Ratio - - {quantStats[$etfTicker?.toUpperCase()]["Outlier Win Ratio"]?.toFixed(2)} - - {quantStats['SPY']["Outlier Win Ratio"]?.toFixed(2)} -
- Outlier Loss Ratio - - {quantStats[$etfTicker?.toUpperCase()]["Outlier Loss Ratio"]?.toFixed(2)} - - {quantStats['SPY']["Outlier Loss Ratio"]?.toFixed(2)} -
- MTD - - {#if quantStats[$etfTicker?.toUpperCase()]["MTD %"] >=0} - +{quantStats[$etfTicker?.toUpperCase()]["MTD %"]?.toFixed(2)}% - {:else} - {quantStats[$etfTicker?.toUpperCase()]["MTD %"]?.toFixed(2)}% - {/if} - - {#if quantStats['SPY']["MTD %"] >=0} - +{quantStats['SPY']["MTD %"]?.toFixed(2)}% - {:else} - {quantStats['SPY']["MTD %"]?.toFixed(2)}% - {/if} -
- 3M - - {#if quantStats[$etfTicker?.toUpperCase()]["3M %"] >=0} - +{quantStats[$etfTicker?.toUpperCase()]["3M %"]?.toFixed(2)}% - {:else} - {quantStats[$etfTicker?.toUpperCase()]["3M %"]?.toFixed(2)}% - {/if} - - {#if quantStats['SPY']["3M %"] >=0} - +{quantStats['SPY']["3M %"]?.toFixed(2)}% - {:else} - {quantStats['SPY']["3M %"]?.toFixed(2)}% - {/if} -
- 6M - - {#if quantStats[$etfTicker?.toUpperCase()]["6M %"] >=0} - +{quantStats[$etfTicker?.toUpperCase()]["6M %"]?.toFixed(2)}% - {:else} - {quantStats[$etfTicker?.toUpperCase()]["6M %"]?.toFixed(2)}% - {/if} - - {#if quantStats['SPY']["6M %"] >=0} - +{quantStats['SPY']["6M %"]?.toFixed(2)}% - {:else} - {quantStats['SPY']["6M %"]?.toFixed(2)}% - {/if} -
- Best Day - - {#if quantStats[$etfTicker?.toUpperCase()]["Best Day %"] >=0} - +{quantStats[$etfTicker?.toUpperCase()]["Best Day %"]?.toFixed(2)}% - {:else} - {quantStats[$etfTicker?.toUpperCase()]["Best Day %"]?.toFixed(2)}% - {/if} - - {#if quantStats['SPY']["Best Day %"] >=0} - +{quantStats['SPY']["Best Day %"]?.toFixed(2)}% - {:else} - {quantStats['SPY']["Best Day %"]?.toFixed(2)}% - {/if} -
- Worst Day - - {#if quantStats[$etfTicker?.toUpperCase()]["Worst Day %"] >=0} - +{quantStats[$etfTicker?.toUpperCase()]["Worst Day %"]?.toFixed(2)}% - {:else} - {quantStats[$etfTicker?.toUpperCase()]["Worst Day %"]?.toFixed(2)}% - {/if} - - {#if quantStats['SPY']["Worst Day %"] >=0} - +{quantStats['SPY']["Worst Day %"]?.toFixed(2)}% - {:else} - {quantStats['SPY']["Worst Day %"]?.toFixed(2)}% - {/if} -
- Best Month - - {#if quantStats[$etfTicker?.toUpperCase()]["Best Month %"] >=0} - +{quantStats[$etfTicker?.toUpperCase()]["Best Month %"]?.toFixed(2)}% - {:else} - {quantStats[$etfTicker?.toUpperCase()]["Best Month %"]?.toFixed(2)}% - {/if} - - {#if quantStats['SPY']["Best Month %"] >=0} - +{quantStats['SPY']["Best Month %"]?.toFixed(2)}% - {:else} - {quantStats['SPY']["Best Month %"]?.toFixed(2)}% - {/if} -
- Worst Month - - {#if quantStats[$etfTicker?.toUpperCase()]["Worst Month %"] >=0} - +{quantStats[$etfTicker?.toUpperCase()]["Worst Month %"]?.toFixed(2)}% - {:else} - {quantStats[$etfTicker?.toUpperCase()]["Worst Month %"]?.toFixed(2)}% - {/if} - - {#if quantStats['SPY']["Worst Month %"] >=0} - +{quantStats['SPY']["Worst Month %"]?.toFixed(2)}% - {:else} - {quantStats['SPY']["Worst Month %"]?.toFixed(2)}% - {/if} -
- Best Year - - {#if quantStats[$etfTicker?.toUpperCase()]["Best Year %"] >=0} - +{quantStats[$etfTicker?.toUpperCase()]["Best Year %"]?.toFixed(2)}% - {:else} - {quantStats[$etfTicker?.toUpperCase()]["Best Year %"]?.toFixed(2)}% - {/if} - - {#if quantStats['SPY']["Best Year %"] >=0} - +{quantStats['SPY']["Best Year %"]?.toFixed(2)}% - {:else} - {quantStats['SPY']["Best Year %"]?.toFixed(2)}% - {/if} -
- Worst Year - - {#if quantStats[$etfTicker?.toUpperCase()]["Worst Year %"] >=0} - +{quantStats[$etfTicker?.toUpperCase()]["Worst Year %"]?.toFixed(2)}% - {:else} - {quantStats[$etfTicker?.toUpperCase()]["Worst Year %"]?.toFixed(2)}% - {/if} - - {#if quantStats['SPY']["Worst Year %"] >=0} - +{quantStats['SPY']["Worst Year %"]?.toFixed(2)}% - {:else} - {quantStats['SPY']["Worst Year %"]?.toFixed(2)}% - {/if} -
- Avg. Drawdown - - {#if quantStats[$etfTicker?.toUpperCase()]["Avg. Drawdown"] >=0} - +{quantStats[$etfTicker?.toUpperCase()]["Avg. Drawdown"]?.toFixed(2)}% - {:else} - {quantStats[$etfTicker?.toUpperCase()]["Avg. Drawdown"]?.toFixed(2)}% - {/if} - - {#if quantStats['SPY']["Avg. Drawdown"] >=0} - +{quantStats['SPY']["Avg. Drawdown"]?.toFixed(2)}% - {:else} - {quantStats['SPY']["Avg. Drawdown"]?.toFixed(2)}% - {/if} -
- Avg. Drawdown Days - - {quantStats[$etfTicker?.toUpperCase()]["Avg. Drawdown Days"]} - - {quantStats['SPY']["Avg. Drawdown Days"]} -
- Recovery Factor - - {quantStats[$etfTicker?.toUpperCase()]["Recovery Factor"]?.toFixed(2)} - - {quantStats['SPY']["Recovery Factor"]?.toFixed(2)} -
- Ulcer Index - - {quantStats[$etfTicker?.toUpperCase()]["Ulcer Index"]?.toFixed(2)} - - {quantStats['SPY']["Ulcer Index"]?.toFixed(2)} -
- Avg. Up Month - - {#if quantStats[$etfTicker?.toUpperCase()]["Avg. Up Month %"] >=0} - +{quantStats[$etfTicker?.toUpperCase()]["Avg. Up Month %"]?.toFixed(2)}% - {:else} - {quantStats[$etfTicker?.toUpperCase()]["Avg. Up Month %"]?.toFixed(2)}% - {/if} - - {#if quantStats['SPY']["Avg. Up Month %"] >=0} - +{quantStats['SPY']["Avg. Up Month %"]?.toFixed(2)}% - {:else} - {quantStats['SPY']["Avg. Up Month %"]?.toFixed(2)}% - {/if} -
- Avg. Down Month - - {#if quantStats[$etfTicker?.toUpperCase()]["Avg. Down Month %"] >=0} - +{quantStats[$etfTicker?.toUpperCase()]["Avg. Down Month %"]?.toFixed(2)}% - {:else} - {quantStats[$etfTicker?.toUpperCase()]["Avg. Down Month %"]?.toFixed(2)}% - {/if} - - {#if quantStats['SPY']["Avg. Down Month %"] >=0} - +{quantStats['SPY']["Avg. Down Month %"]?.toFixed(2)}% - {:else} - {quantStats['SPY']["Avg. Down Month %"]?.toFixed(2)}% - {/if} -
- Win Days - - {quantStats[$etfTicker?.toUpperCase()]["Win Days %"]?.toFixed(2)}% - - {quantStats['SPY']["Win Days %"]?.toFixed(2)}% -
- Win Month - - {quantStats[$etfTicker?.toUpperCase()]["Win Month %"]?.toFixed(2)}% - - {quantStats['SPY']["Win Month %"]?.toFixed(2)}% -
- Win Quarter - - {quantStats[$etfTicker?.toUpperCase()]["Win Quarter %"]?.toFixed(2)}% - - {quantStats['SPY']["Win Quarter %"]?.toFixed(2)}% -
- Win Year - - {quantStats[$etfTicker?.toUpperCase()]["Win Year %"]?.toFixed(2)}% - - {quantStats['SPY']["Win Year %"]?.toFixed(2)}% -
- -
- - - {:else} - -

- -

- {/if} - - - +
+ {item["Drawdown"]?.toFixed(2)}% + + {item["Days"]} +
+
+ +

+ {$etfTicker} vs. S&P500 +

+ +

Comparison of company stats against the S&P500 Index.

+ + + Time Period between {new Date(quantStats[$etfTicker?.toUpperCase()]["Start Period"]).toLocaleString("en-US", { month: "long", day: "numeric", year: "numeric", daySuffix: "2-digit" })} + - + {new Date(quantStats[$etfTicker?.toUpperCase()]["End Period"]).toLocaleString("en-US", { month: "long", day: "numeric", year: "numeric", daySuffix: "2-digit" })} + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Metric + {$etfTicker} + S&P500
Cumulative Return + {#if quantStats[$etfTicker?.toUpperCase()]["Cumulative Return %"] >= 0} + +{abbreviateNumber(quantStats[$etfTicker?.toUpperCase()]["Cumulative Return %"])}% + {:else} + {abbreviateNumber(quantStats[$etfTicker?.toUpperCase()]["Cumulative Return %"])}% + {/if} + + {#if quantStats["SPY"]["Cumulative Return %"] >= 0} + +{quantStats["SPY"]["Cumulative Return %"]}% + {:else} + {quantStats["SPY"]["Cumulative Return %"]}% + {/if} +
Compound Annual Growth Rate (CAGR) + {#if quantStats[$etfTicker?.toUpperCase()]["CAGR %"] >= 0} + +{quantStats[$etfTicker?.toUpperCase()]["CAGR %"]}% + {:else} + {quantStats[$etfTicker?.toUpperCase()]["CAGR %"]}% + {/if} + + {#if quantStats["SPY"]["CAGR %"] >= 0} + +{quantStats["SPY"]["CAGR %"]}% + {:else} + {quantStats["SPY"]["CAGR %"]}% + {/if} +
Sharpe + {quantStats[$etfTicker?.toUpperCase()]["Sharpe"]?.toFixed(2)} + + {quantStats["SPY"]["Sharpe"]?.toFixed(2)} +
Sortino + {quantStats[$etfTicker?.toUpperCase()]["Sortino"]?.toFixed(2)} + + {quantStats["SPY"]["Sortino"]?.toFixed(2)} +
Max Drawdown + {#if quantStats[$etfTicker?.toUpperCase()]["Max Drawdown"] >= 0} + +{quantStats[$etfTicker?.toUpperCase()]["Max Drawdown"]}% + {:else} + {quantStats[$etfTicker?.toUpperCase()]["Max Drawdown"]}% + {/if} + + {#if quantStats["SPY"]["Max Drawdown"] >= 0} + +{quantStats["SPY"]["Max Drawdown"]}% + {:else} + {quantStats["SPY"]["Max Drawdown"]}% + {/if} +
Longest Drawdown Days + {quantStats[$etfTicker?.toUpperCase()]["Longest DD Days"]} + + {quantStats["SPY"]["Longest DD Days"]} +
Volatility (ann.) + {quantStats[$etfTicker?.toUpperCase()]["Volatility (ann.) %"]}% + + {quantStats["SPY"]["Volatility (ann.) %"]}% +
Correlation + {quantStats[$etfTicker?.toUpperCase()]["Correlation"]}% + + {quantStats["SPY"]["Correlation"]} +
R^2 + {quantStats[$etfTicker?.toUpperCase()]["R^2"]} + + {quantStats["SPY"]["R^2"]} +
Calmar + {quantStats[$etfTicker?.toUpperCase()]["Calmar"]} + + {quantStats["SPY"]["Calmar"]} +
Skew + {quantStats[$etfTicker?.toUpperCase()]["Skew"]?.toFixed(2)} + + {quantStats["SPY"]["Skew"]?.toFixed(2)} +
Kurtosis + {quantStats[$etfTicker?.toUpperCase()]["Kurtosis"]?.toFixed(2)} + + {quantStats["SPY"]["Kurtosis"]?.toFixed(2)} +
Expected Daily + {#if quantStats[$etfTicker?.toUpperCase()]["Expected Daily %"] >= 0} + +{quantStats[$etfTicker?.toUpperCase()]["Expected Daily %"]}% + {:else} + {quantStats[$etfTicker?.toUpperCase()]["Expected Daily %"]}% + {/if} + + {#if quantStats["SPY"]["Expected Daily %"] >= 0} + +{quantStats["SPY"]["Expected Daily %"]}% + {:else} + {quantStats["SPY"]["Expected Daily %"]}% + {/if} +
Expected Monthly + {#if quantStats[$etfTicker?.toUpperCase()]["Expected Monthly %"] >= 0} + +{quantStats[$etfTicker?.toUpperCase()]["Expected Monthly %"]}% + {:else} + {quantStats[$etfTicker?.toUpperCase()]["Expected Monthly %"]}% + {/if} + + {#if quantStats["SPY"]["Expected Monthly %"] >= 0} + +{quantStats["SPY"]["Expected Monthly %"]}% + {:else} + {quantStats["SPY"]["Expected Monthly %"]}% + {/if} +
Expected Yearly + {#if quantStats[$etfTicker?.toUpperCase()]["Expected Yearly %"] >= 0} + +{quantStats[$etfTicker?.toUpperCase()]["Expected Yearly %"]}% + {:else} + {quantStats[$etfTicker?.toUpperCase()]["Expected Yearly %"]}% + {/if} + + {#if quantStats["SPY"]["Expected Yearly %"] >= 0} + +{quantStats["SPY"]["Expected Yearly %"]}% + {:else} + {quantStats["SPY"]["Expected Yearly %"]}% + {/if} +
Kelly Criterion + {quantStats[$etfTicker?.toUpperCase()]["Kelly Criterion %"]}% + + {quantStats["SPY"]["Kelly Criterion %"]}% +
Risk of Ruin + {quantStats[$etfTicker?.toUpperCase()]["Risk of Ruin %"]}% + + {quantStats["SPY"]["Risk of Ruin %"]}% +
Daily Value-at-Risk + {#if quantStats[$etfTicker?.toUpperCase()]["Daily Value-at-Risk %"] >= 0} + +{quantStats[$etfTicker?.toUpperCase()]["Daily Value-at-Risk %"]?.toFixed(2)}% + {:else} + {quantStats[$etfTicker?.toUpperCase()]["Daily Value-at-Risk %"]?.toFixed(2)}% + {/if} + + {#if quantStats["SPY"]["Daily Value-at-Risk %"] >= 0} + +{quantStats["SPY"]["Daily Value-at-Risk %"]?.toFixed(2)}% + {:else} + {quantStats["SPY"]["Daily Value-at-Risk %"]?.toFixed(2)}% + {/if} +
Expected Shortfall (cVaR) + {#if quantStats[$etfTicker?.toUpperCase()]["Expected Shortfall (cVaR) %"] >= 0} + +{quantStats[$etfTicker?.toUpperCase()]["Expected Shortfall (cVaR) %"]?.toFixed(2)}% + {:else} + {quantStats[$etfTicker?.toUpperCase()]["Expected Shortfall (cVaR) %"]?.toFixed(2)}% + {/if} + + {#if quantStats["SPY"]["Expected Shortfall (cVaR) %"] >= 0} + +{quantStats["SPY"]["Expected Shortfall (cVaR) %"]?.toFixed(2)}% + {:else} + {quantStats["SPY"]["Expected Shortfall (cVaR) %"]?.toFixed(2)}% + {/if} +
Max Consecutive Wins + {quantStats[$etfTicker?.toUpperCase()]["Max Consecutive Wins"]} + + {quantStats["SPY"]["Max Consecutive Wins"]} +
Max Consecutive Losses + {quantStats[$etfTicker?.toUpperCase()]["Max Consecutive Losses"]} + + {quantStats["SPY"]["Max Consecutive Losses"]} +
Gain/Pain Ratio + {quantStats[$etfTicker?.toUpperCase()]["Gain/Pain Ratio"]?.toFixed(2)} + + {quantStats["SPY"]["Gain/Pain Ratio"]?.toFixed(2)} +
Gain/Pain (1M) + {quantStats[$etfTicker?.toUpperCase()]["Gain/Pain (1M)"]?.toFixed(2)} + + {quantStats["SPY"]["Gain/Pain (1M)"]?.toFixed(2)} +
Payoff Ratio + {quantStats[$etfTicker?.toUpperCase()]["Payoff Ratio"]?.toFixed(2)} + + {quantStats["SPY"]["Payoff Ratio"]?.toFixed(2)} +
Profit Factor + {quantStats[$etfTicker?.toUpperCase()]["Profit Factor"]?.toFixed(2)} + + {quantStats["SPY"]["Profit Factor"]?.toFixed(2)} +
Outlier Win Ratio + {quantStats[$etfTicker?.toUpperCase()]["Outlier Win Ratio"]?.toFixed(2)} + + {quantStats["SPY"]["Outlier Win Ratio"]?.toFixed(2)} +
Outlier Loss Ratio + {quantStats[$etfTicker?.toUpperCase()]["Outlier Loss Ratio"]?.toFixed(2)} + + {quantStats["SPY"]["Outlier Loss Ratio"]?.toFixed(2)} +
MTD + {#if quantStats[$etfTicker?.toUpperCase()]["MTD %"] >= 0} + +{quantStats[$etfTicker?.toUpperCase()]["MTD %"]?.toFixed(2)}% + {:else} + {quantStats[$etfTicker?.toUpperCase()]["MTD %"]?.toFixed(2)}% + {/if} + + {#if quantStats["SPY"]["MTD %"] >= 0} + +{quantStats["SPY"]["MTD %"]?.toFixed(2)}% + {:else} + {quantStats["SPY"]["MTD %"]?.toFixed(2)}% + {/if} +
3M + {#if quantStats[$etfTicker?.toUpperCase()]["3M %"] >= 0} + +{quantStats[$etfTicker?.toUpperCase()]["3M %"]?.toFixed(2)}% + {:else} + {quantStats[$etfTicker?.toUpperCase()]["3M %"]?.toFixed(2)}% + {/if} + + {#if quantStats["SPY"]["3M %"] >= 0} + +{quantStats["SPY"]["3M %"]?.toFixed(2)}% + {:else} + {quantStats["SPY"]["3M %"]?.toFixed(2)}% + {/if} +
6M + {#if quantStats[$etfTicker?.toUpperCase()]["6M %"] >= 0} + +{quantStats[$etfTicker?.toUpperCase()]["6M %"]?.toFixed(2)}% + {:else} + {quantStats[$etfTicker?.toUpperCase()]["6M %"]?.toFixed(2)}% + {/if} + + {#if quantStats["SPY"]["6M %"] >= 0} + +{quantStats["SPY"]["6M %"]?.toFixed(2)}% + {:else} + {quantStats["SPY"]["6M %"]?.toFixed(2)}% + {/if} +
Best Day + {#if quantStats[$etfTicker?.toUpperCase()]["Best Day %"] >= 0} + +{quantStats[$etfTicker?.toUpperCase()]["Best Day %"]?.toFixed(2)}% + {:else} + {quantStats[$etfTicker?.toUpperCase()]["Best Day %"]?.toFixed(2)}% + {/if} + + {#if quantStats["SPY"]["Best Day %"] >= 0} + +{quantStats["SPY"]["Best Day %"]?.toFixed(2)}% + {:else} + {quantStats["SPY"]["Best Day %"]?.toFixed(2)}% + {/if} +
Worst Day + {#if quantStats[$etfTicker?.toUpperCase()]["Worst Day %"] >= 0} + +{quantStats[$etfTicker?.toUpperCase()]["Worst Day %"]?.toFixed(2)}% + {:else} + {quantStats[$etfTicker?.toUpperCase()]["Worst Day %"]?.toFixed(2)}% + {/if} + + {#if quantStats["SPY"]["Worst Day %"] >= 0} + +{quantStats["SPY"]["Worst Day %"]?.toFixed(2)}% + {:else} + {quantStats["SPY"]["Worst Day %"]?.toFixed(2)}% + {/if} +
Best Month + {#if quantStats[$etfTicker?.toUpperCase()]["Best Month %"] >= 0} + +{quantStats[$etfTicker?.toUpperCase()]["Best Month %"]?.toFixed(2)}% + {:else} + {quantStats[$etfTicker?.toUpperCase()]["Best Month %"]?.toFixed(2)}% + {/if} + + {#if quantStats["SPY"]["Best Month %"] >= 0} + +{quantStats["SPY"]["Best Month %"]?.toFixed(2)}% + {:else} + {quantStats["SPY"]["Best Month %"]?.toFixed(2)}% + {/if} +
Worst Month + {#if quantStats[$etfTicker?.toUpperCase()]["Worst Month %"] >= 0} + +{quantStats[$etfTicker?.toUpperCase()]["Worst Month %"]?.toFixed(2)}% + {:else} + {quantStats[$etfTicker?.toUpperCase()]["Worst Month %"]?.toFixed(2)}% + {/if} + + {#if quantStats["SPY"]["Worst Month %"] >= 0} + +{quantStats["SPY"]["Worst Month %"]?.toFixed(2)}% + {:else} + {quantStats["SPY"]["Worst Month %"]?.toFixed(2)}% + {/if} +
Best Year + {#if quantStats[$etfTicker?.toUpperCase()]["Best Year %"] >= 0} + +{quantStats[$etfTicker?.toUpperCase()]["Best Year %"]?.toFixed(2)}% + {:else} + {quantStats[$etfTicker?.toUpperCase()]["Best Year %"]?.toFixed(2)}% + {/if} + + {#if quantStats["SPY"]["Best Year %"] >= 0} + +{quantStats["SPY"]["Best Year %"]?.toFixed(2)}% + {:else} + {quantStats["SPY"]["Best Year %"]?.toFixed(2)}% + {/if} +
Worst Year + {#if quantStats[$etfTicker?.toUpperCase()]["Worst Year %"] >= 0} + +{quantStats[$etfTicker?.toUpperCase()]["Worst Year %"]?.toFixed(2)}% + {:else} + {quantStats[$etfTicker?.toUpperCase()]["Worst Year %"]?.toFixed(2)}% + {/if} + + {#if quantStats["SPY"]["Worst Year %"] >= 0} + +{quantStats["SPY"]["Worst Year %"]?.toFixed(2)}% + {:else} + {quantStats["SPY"]["Worst Year %"]?.toFixed(2)}% + {/if} +
Avg. Drawdown + {#if quantStats[$etfTicker?.toUpperCase()]["Avg. Drawdown"] >= 0} + +{quantStats[$etfTicker?.toUpperCase()]["Avg. Drawdown"]?.toFixed(2)}% + {:else} + {quantStats[$etfTicker?.toUpperCase()]["Avg. Drawdown"]?.toFixed(2)}% + {/if} + + {#if quantStats["SPY"]["Avg. Drawdown"] >= 0} + +{quantStats["SPY"]["Avg. Drawdown"]?.toFixed(2)}% + {:else} + {quantStats["SPY"]["Avg. Drawdown"]?.toFixed(2)}% + {/if} +
Avg. Drawdown Days + {quantStats[$etfTicker?.toUpperCase()]["Avg. Drawdown Days"]} + + {quantStats["SPY"]["Avg. Drawdown Days"]} +
Recovery Factor + {quantStats[$etfTicker?.toUpperCase()]["Recovery Factor"]?.toFixed(2)} + + {quantStats["SPY"]["Recovery Factor"]?.toFixed(2)} +
Ulcer Index + {quantStats[$etfTicker?.toUpperCase()]["Ulcer Index"]?.toFixed(2)} + + {quantStats["SPY"]["Ulcer Index"]?.toFixed(2)} +
Avg. Up Month + {#if quantStats[$etfTicker?.toUpperCase()]["Avg. Up Month %"] >= 0} + +{quantStats[$etfTicker?.toUpperCase()]["Avg. Up Month %"]?.toFixed(2)}% + {:else} + {quantStats[$etfTicker?.toUpperCase()]["Avg. Up Month %"]?.toFixed(2)}% + {/if} + + {#if quantStats["SPY"]["Avg. Up Month %"] >= 0} + +{quantStats["SPY"]["Avg. Up Month %"]?.toFixed(2)}% + {:else} + {quantStats["SPY"]["Avg. Up Month %"]?.toFixed(2)}% + {/if} +
Avg. Down Month + {#if quantStats[$etfTicker?.toUpperCase()]["Avg. Down Month %"] >= 0} + +{quantStats[$etfTicker?.toUpperCase()]["Avg. Down Month %"]?.toFixed(2)}% + {:else} + {quantStats[$etfTicker?.toUpperCase()]["Avg. Down Month %"]?.toFixed(2)}% + {/if} + + {#if quantStats["SPY"]["Avg. Down Month %"] >= 0} + +{quantStats["SPY"]["Avg. Down Month %"]?.toFixed(2)}% + {:else} + {quantStats["SPY"]["Avg. Down Month %"]?.toFixed(2)}% + {/if} +
Win Days + {quantStats[$etfTicker?.toUpperCase()]["Win Days %"]?.toFixed(2)}% + + {quantStats["SPY"]["Win Days %"]?.toFixed(2)}% +
Win Month + {quantStats[$etfTicker?.toUpperCase()]["Win Month %"]?.toFixed(2)}% + + {quantStats["SPY"]["Win Month %"]?.toFixed(2)}% +
Win Quarter + {quantStats[$etfTicker?.toUpperCase()]["Win Quarter %"]?.toFixed(2)}% + + {quantStats["SPY"]["Win Quarter %"]?.toFixed(2)}% +
Win Year + {quantStats[$etfTicker?.toUpperCase()]["Win Year %"]?.toFixed(2)}% + + {quantStats["SPY"]["Win Year %"]?.toFixed(2)}% +
+
{:else} -

- Sorry for this ETF no data is available -

+

+ +

{/if} - - \ No newline at end of file + {:else} +

No data available

+ {/if} + + + diff --git a/src/routes/etf/new-launches/+page.svelte b/src/routes/etf/new-launches/+page.svelte index 988385e1..23d6599b 100644 --- a/src/routes/etf/new-launches/+page.svelte +++ b/src/routes/etf/new-launches/+page.svelte @@ -124,7 +124,7 @@ $: charNumber = $screenWidth < 640 ? 30 : 40
- + diff --git a/src/routes/fda-calendar/+page.svelte b/src/routes/fda-calendar/+page.svelte index 947b6862..86243080 100644 --- a/src/routes/fda-calendar/+page.svelte +++ b/src/routes/fda-calendar/+page.svelte @@ -234,7 +234,7 @@
diff --git a/src/routes/heatmaps/+page.svelte b/src/routes/heatmaps/+page.svelte index fdd8627b..798505ee 100644 --- a/src/routes/heatmaps/+page.svelte +++ b/src/routes/heatmaps/+page.svelte @@ -430,7 +430,7 @@ $: {
diff --git a/src/routes/hedge-funds/+page.svelte b/src/routes/hedge-funds/+page.svelte index cd5d3e91..8947b919 100644 --- a/src/routes/hedge-funds/+page.svelte +++ b/src/routes/hedge-funds/+page.svelte @@ -251,7 +251,7 @@ async function handleInput(event) {
diff --git a/src/routes/ipos/+page.svelte b/src/routes/ipos/+page.svelte index 46962e9c..dbfd5f83 100644 --- a/src/routes/ipos/+page.svelte +++ b/src/routes/ipos/+page.svelte @@ -140,7 +140,7 @@
diff --git a/src/routes/ipos/[slug]/+page.svelte b/src/routes/ipos/[slug]/+page.svelte index 79fe74c9..cd5ba699 100644 --- a/src/routes/ipos/[slug]/+page.svelte +++ b/src/routes/ipos/[slug]/+page.svelte @@ -141,7 +141,7 @@ $: {
Inception Symbol Fund Name
- + @@ -216,7 +216,7 @@ $: {
diff --git a/src/routes/list/basic-materials-sector/+page.svelte b/src/routes/list/basic-materials-sector/+page.svelte index af8ccd9d..fe5fc281 100644 --- a/src/routes/list/basic-materials-sector/+page.svelte +++ b/src/routes/list/basic-materials-sector/+page.svelte @@ -239,7 +239,7 @@ function getPlotOptions() {
diff --git a/src/routes/list/communication-services-sector/+page.svelte b/src/routes/list/communication-services-sector/+page.svelte index 5d5e4f28..148359c4 100644 --- a/src/routes/list/communication-services-sector/+page.svelte +++ b/src/routes/list/communication-services-sector/+page.svelte @@ -239,7 +239,7 @@ function getPlotOptions() {
diff --git a/src/routes/list/consumer-cyclical-sector/+page.svelte b/src/routes/list/consumer-cyclical-sector/+page.svelte index a84dc3af..0fbf9534 100644 --- a/src/routes/list/consumer-cyclical-sector/+page.svelte +++ b/src/routes/list/consumer-cyclical-sector/+page.svelte @@ -239,7 +239,7 @@ function getPlotOptions() {
diff --git a/src/routes/list/consumer-defensive-sector/+page.svelte b/src/routes/list/consumer-defensive-sector/+page.svelte index 7c45b158..9ff066ba 100644 --- a/src/routes/list/consumer-defensive-sector/+page.svelte +++ b/src/routes/list/consumer-defensive-sector/+page.svelte @@ -239,7 +239,7 @@ function getPlotOptions() {
diff --git a/src/routes/list/energy-sector/+page.svelte b/src/routes/list/energy-sector/+page.svelte index 027eb77a..a01daef1 100644 --- a/src/routes/list/energy-sector/+page.svelte +++ b/src/routes/list/energy-sector/+page.svelte @@ -239,7 +239,7 @@ function getPlotOptions() {
diff --git a/src/routes/list/financial-sector/+page.svelte b/src/routes/list/financial-sector/+page.svelte index a3646ed2..031123a3 100644 --- a/src/routes/list/financial-sector/+page.svelte +++ b/src/routes/list/financial-sector/+page.svelte @@ -241,7 +241,7 @@ function getPlotOptions() {
diff --git a/src/routes/list/healthcare-sector/+page.svelte b/src/routes/list/healthcare-sector/+page.svelte index 203b86dd..4c48bd65 100644 --- a/src/routes/list/healthcare-sector/+page.svelte +++ b/src/routes/list/healthcare-sector/+page.svelte @@ -239,7 +239,7 @@ function getPlotOptions() {
diff --git a/src/routes/list/industrials-sector/+page.svelte b/src/routes/list/industrials-sector/+page.svelte index 6784ea8c..630f2edf 100644 --- a/src/routes/list/industrials-sector/+page.svelte +++ b/src/routes/list/industrials-sector/+page.svelte @@ -239,7 +239,7 @@ function getPlotOptions() {
diff --git a/src/routes/list/industry/[slug]/+page.svelte b/src/routes/list/industry/[slug]/+page.svelte index 249eec52..c9102083 100644 --- a/src/routes/list/industry/[slug]/+page.svelte +++ b/src/routes/list/industry/[slug]/+page.svelte @@ -150,7 +150,7 @@ function getPlotOptions() {
diff --git a/src/routes/list/real-estate-sector/+page.svelte b/src/routes/list/real-estate-sector/+page.svelte index 3067b999..09ca0a35 100644 --- a/src/routes/list/real-estate-sector/+page.svelte +++ b/src/routes/list/real-estate-sector/+page.svelte @@ -239,7 +239,7 @@ function getPlotOptions() {
diff --git a/src/routes/list/technology-sector/+page.svelte b/src/routes/list/technology-sector/+page.svelte index 20059daf..f1746355 100644 --- a/src/routes/list/technology-sector/+page.svelte +++ b/src/routes/list/technology-sector/+page.svelte @@ -239,7 +239,7 @@ function getPlotOptions() {
diff --git a/src/routes/list/utilities-sector/+page.svelte b/src/routes/list/utilities-sector/+page.svelte index 84e73a72..599468cd 100644 --- a/src/routes/list/utilities-sector/+page.svelte +++ b/src/routes/list/utilities-sector/+page.svelte @@ -239,7 +239,7 @@ function getPlotOptions() {
diff --git a/src/routes/login/+page.svelte b/src/routes/login/+page.svelte index 77032d23..55a32805 100644 --- a/src/routes/login/+page.svelte +++ b/src/routes/login/+page.svelte @@ -216,7 +216,7 @@
diff --git a/src/routes/market-mover/+page.svelte b/src/routes/market-mover/+page.svelte index 9679d012..fe25e08e 100644 --- a/src/routes/market-mover/+page.svelte +++ b/src/routes/market-mover/+page.svelte @@ -376,7 +376,7 @@ $: charNumber = $screenWidth < 640 ? 20 : 30;
IPO Date Symbol Name
- + {#each gainerLoserActive as item, index} - goto("/stocks/"+item?.symbol)} class="sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-[#27272A] cursor-pointer"> + goto("/stocks/"+item?.symbol)} class="border-b border-[#27272A] sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-[#27272A] cursor-pointer">
Symbol Name { sortBy = 'change'; changeOrder(order); }} class="whitespace-nowrap cursor-pointer text-white font-semibold text-[1rem] text-end"> @@ -399,7 +399,7 @@ $: charNumber = $screenWidth < 640 ? 20 : 30;
@@ -449,7 +449,7 @@ $: charNumber = $screenWidth < 640 ? 20 : 30;
diff --git a/src/routes/most-retail-volume/+page.svelte b/src/routes/most-retail-volume/+page.svelte index 4b112eaa..5db60cb5 100644 --- a/src/routes/most-retail-volume/+page.svelte +++ b/src/routes/most-retail-volume/+page.svelte @@ -152,7 +152,7 @@ async function handleScroll() {
- + @@ -178,7 +178,7 @@ async function handleScroll() { {#each stockList as item, index} - + @@ -221,7 +221,7 @@ async function handleScroll() {
diff --git a/src/routes/most-shorted-stocks/+page.svelte b/src/routes/most-shorted-stocks/+page.svelte index 83845423..ac7e4071 100644 --- a/src/routes/most-shorted-stocks/+page.svelte +++ b/src/routes/most-shorted-stocks/+page.svelte @@ -137,7 +137,7 @@ async function handleScroll() {
#
{index+1}
- + @@ -165,7 +165,7 @@ async function handleScroll() { {#each stockList as item, index} - goto(`/stocks/${item?.symbol}`)} class="sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-[#27272A] {index+1 === stockList?.length && data?.user?.tier !== 'Pro' ? 'opacity-[0.1]' : ''}"> + goto(`/stocks/${item?.symbol}`)} class="border-b border-[#27272A] sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-[#27272A] {index+1 === stockList?.length && data?.user?.tier !== 'Pro' ? 'opacity-[0.1]' : ''}"> @@ -212,7 +212,7 @@ async function handleScroll() {
diff --git a/src/routes/notifications/+page.svelte b/src/routes/notifications/+page.svelte index 6faace09..5101eaff 100644 --- a/src/routes/notifications/+page.svelte +++ b/src/routes/notifications/+page.svelte @@ -226,7 +226,7 @@ onMount(async () => {
diff --git a/src/routes/options-flow/+page.svelte b/src/routes/options-flow/+page.svelte index 0f69adec..6a3e52b7 100644 --- a/src/routes/options-flow/+page.svelte +++ b/src/routes/options-flow/+page.svelte @@ -1386,7 +1386,7 @@ $: {
diff --git a/src/routes/politicians/+page.svelte b/src/routes/politicians/+page.svelte index 6b6abae9..ab4c8128 100644 --- a/src/routes/politicians/+page.svelte +++ b/src/routes/politicians/+page.svelte @@ -299,7 +299,7 @@ onMount(async () => {
diff --git a/src/routes/politicians/flow-data/+page.svelte b/src/routes/politicians/flow-data/+page.svelte index e1911a14..2710d04e 100644 --- a/src/routes/politicians/flow-data/+page.svelte +++ b/src/routes/politicians/flow-data/+page.svelte @@ -432,7 +432,7 @@
#
{index+1}
- + @@ -514,7 +514,7 @@
diff --git a/src/routes/price-alert/+page.svelte b/src/routes/price-alert/+page.svelte index 73e81e5e..ffb476a1 100644 --- a/src/routes/price-alert/+page.svelte +++ b/src/routes/price-alert/+page.svelte @@ -395,7 +395,7 @@ $: charNumber = $screenWidth < 640 ? 15 : 40;
diff --git a/src/routes/reddit-tracker/+page.svelte b/src/routes/reddit-tracker/+page.svelte index decd45e5..6c5a9930 100644 --- a/src/routes/reddit-tracker/+page.svelte +++ b/src/routes/reddit-tracker/+page.svelte @@ -525,7 +525,7 @@ const optionCompanySpread = {
diff --git a/src/routes/register/+page.svelte b/src/routes/register/+page.svelte index 97a93b49..6288a7f0 100644 --- a/src/routes/register/+page.svelte +++ b/src/routes/register/+page.svelte @@ -242,7 +242,7 @@
diff --git a/src/routes/sentiment-tracker/+page.svelte b/src/routes/sentiment-tracker/+page.svelte index cf7a02cf..430fbda0 100644 --- a/src/routes/sentiment-tracker/+page.svelte +++ b/src/routes/sentiment-tracker/+page.svelte @@ -200,7 +200,7 @@ async function handleScroll() {
Person
- + @@ -230,7 +230,7 @@ async function handleScroll() { {#each stockList as item, index} - + @@ -279,7 +279,7 @@ async function handleScroll() {
diff --git a/src/routes/stock-screener/+page.svelte b/src/routes/stock-screener/+page.svelte index be27c816..2e757e1a 100644 --- a/src/routes/stock-screener/+page.svelte +++ b/src/routes/stock-screener/+page.svelte @@ -1145,7 +1145,7 @@ function handleInput(event) {
@@ -1456,7 +1456,7 @@ function handleInput(event) {
diff --git a/src/routes/stocks/[tickerID]/+page.svelte b/src/routes/stocks/[tickerID]/+page.svelte index 8019fe7b..1b0cd20f 100644 --- a/src/routes/stocks/[tickerID]/+page.svelte +++ b/src/routes/stocks/[tickerID]/+page.svelte @@ -955,7 +955,7 @@ async function exportData() {
diff --git a/src/routes/stocks/[tickerID]/dividends/+page.svelte b/src/routes/stocks/[tickerID]/dividends/+page.svelte index 370de083..5e668aac 100644 --- a/src/routes/stocks/[tickerID]/dividends/+page.svelte +++ b/src/routes/stocks/[tickerID]/dividends/+page.svelte @@ -307,7 +307,7 @@
diff --git a/src/routes/stocks/[tickerID]/forecast/analyst/+page.svelte b/src/routes/stocks/[tickerID]/forecast/analyst/+page.svelte index 35c10844..66e63489 100644 --- a/src/routes/stocks/[tickerID]/forecast/analyst/+page.svelte +++ b/src/routes/stocks/[tickerID]/forecast/analyst/+page.svelte @@ -241,7 +241,7 @@ changeTab(0)
#
{item?.rank}
- + diff --git a/src/routes/stocks/[tickerID]/insider/+page.svelte b/src/routes/stocks/[tickerID]/insider/+page.svelte index d69b9054..365784f6 100644 --- a/src/routes/stocks/[tickerID]/insider/+page.svelte +++ b/src/routes/stocks/[tickerID]/insider/+page.svelte @@ -358,7 +358,7 @@ const transactionStyles = {
diff --git a/src/routes/stocks/[tickerID]/insider/congress-trading/+page.svelte b/src/routes/stocks/[tickerID]/insider/congress-trading/+page.svelte index 4c11966d..116650c5 100644 --- a/src/routes/stocks/[tickerID]/insider/congress-trading/+page.svelte +++ b/src/routes/stocks/[tickerID]/insider/congress-trading/+page.svelte @@ -200,7 +200,7 @@ onMount(async () => {
Analyst Rating Date
- + @@ -277,7 +277,7 @@ onMount(async () => {
diff --git a/src/routes/stocks/[tickerID]/insider/transcripts/+page.svelte b/src/routes/stocks/[tickerID]/insider/transcripts/+page.svelte index b9f12704..28b0542b 100644 --- a/src/routes/stocks/[tickerID]/insider/transcripts/+page.svelte +++ b/src/routes/stocks/[tickerID]/insider/transcripts/+page.svelte @@ -202,7 +202,7 @@
diff --git a/src/routes/stocks/[tickerID]/options/+page.svelte b/src/routes/stocks/[tickerID]/options/+page.svelte index 0393a0c4..8ec18dbf 100644 --- a/src/routes/stocks/[tickerID]/options/+page.svelte +++ b/src/routes/stocks/[tickerID]/options/+page.svelte @@ -724,7 +724,7 @@ $: { {#if activeIdx === 0}
Person
- + @@ -1062,7 +1062,7 @@ $: {
diff --git a/src/routes/stocks/[tickerID]/stats/+page.svelte b/src/routes/stocks/[tickerID]/stats/+page.svelte index fa8ac2ac..1c89bf1e 100644 --- a/src/routes/stocks/[tickerID]/stats/+page.svelte +++ b/src/routes/stocks/[tickerID]/stats/+page.svelte @@ -273,7 +273,7 @@ updateYearRange()
Date % Change P/C
- + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +
Metric {$stockTicker} @@ -282,7 +282,7 @@ updateYearRange()
Cumulative Return {#if quantStats[$stockTicker?.toUpperCase()]["Cumulative Return %"] >= 0} @@ -300,7 +300,7 @@ updateYearRange()
Compound Annual Growth Rate (CAGR) {#if quantStats[$stockTicker?.toUpperCase()]["CAGR %"] >= 0} @@ -318,7 +318,7 @@ updateYearRange()
Sharpe {quantStats[$stockTicker?.toUpperCase()]["Sharpe"]?.toFixed(2)} @@ -328,7 +328,7 @@ updateYearRange()
Sortino {quantStats[$stockTicker?.toUpperCase()]["Sortino"]?.toFixed(2)} @@ -338,7 +338,7 @@ updateYearRange()
Max Drawdown {#if quantStats[$stockTicker?.toUpperCase()]["Max Drawdown"] >= 0} @@ -356,7 +356,7 @@ updateYearRange()
Longest Drawdown Days {quantStats[$stockTicker?.toUpperCase()]["Longest DD Days"]} @@ -366,7 +366,7 @@ updateYearRange()
Volatility (ann.) {quantStats[$stockTicker?.toUpperCase()]["Volatility (ann.) %"]}% @@ -376,7 +376,7 @@ updateYearRange()
Correlation {quantStats[$stockTicker?.toUpperCase()]["Correlation"]}% @@ -386,7 +386,7 @@ updateYearRange()
R^2 {quantStats[$stockTicker?.toUpperCase()]["R^2"]} @@ -396,7 +396,7 @@ updateYearRange()
Calmar {quantStats[$stockTicker?.toUpperCase()]["Calmar"]} @@ -406,7 +406,7 @@ updateYearRange()
Skew {quantStats[$stockTicker?.toUpperCase()]["Skew"]?.toFixed(2)} @@ -416,7 +416,7 @@ updateYearRange()
Kurtosis {quantStats[$stockTicker?.toUpperCase()]["Kurtosis"]?.toFixed(2)} @@ -426,7 +426,7 @@ updateYearRange()
Expected Daily {#if quantStats[$stockTicker?.toUpperCase()]["Expected Daily %"] >= 0} @@ -444,7 +444,7 @@ updateYearRange()
Expected Monthly {#if quantStats[$stockTicker?.toUpperCase()]["Expected Monthly %"] >= 0} @@ -462,7 +462,7 @@ updateYearRange()
Expected Yearly {#if quantStats[$stockTicker?.toUpperCase()]["Expected Yearly %"] >= 0} @@ -480,7 +480,7 @@ updateYearRange()
Kelly Criterion {quantStats[$stockTicker?.toUpperCase()]["Kelly Criterion %"]}% @@ -490,7 +490,7 @@ updateYearRange()
Risk of Ruin {quantStats[$stockTicker?.toUpperCase()]["Risk of Ruin %"]}% @@ -500,7 +500,7 @@ updateYearRange()
Daily Value-at-Risk {#if quantStats[$stockTicker?.toUpperCase()]["Daily Value-at-Risk %"] >= 0} @@ -518,7 +518,7 @@ updateYearRange()
Expected Shortfall (cVaR) {#if quantStats[$stockTicker?.toUpperCase()]["Expected Shortfall (cVaR) %"] >= 0} @@ -536,7 +536,7 @@ updateYearRange()
Max Consecutive Wins {quantStats[$stockTicker?.toUpperCase()]["Max Consecutive Wins"]} @@ -546,7 +546,7 @@ updateYearRange()
Max Consecutive Losses {quantStats[$stockTicker?.toUpperCase()]["Max Consecutive Losses"]} @@ -556,7 +556,7 @@ updateYearRange()
Gain/Pain Ratio {quantStats[$stockTicker?.toUpperCase()]["Gain/Pain Ratio"]?.toFixed(2)} @@ -566,7 +566,7 @@ updateYearRange()
Gain/Pain (1M) {quantStats[$stockTicker?.toUpperCase()]["Gain/Pain (1M)"]?.toFixed(2)} @@ -576,7 +576,7 @@ updateYearRange()
Payoff Ratio {quantStats[$stockTicker?.toUpperCase()]["Payoff Ratio"]?.toFixed(2)} @@ -586,7 +586,7 @@ updateYearRange()
Profit Factor {quantStats[$stockTicker?.toUpperCase()]["Profit Factor"]?.toFixed(2)} @@ -596,7 +596,7 @@ updateYearRange()
Outlier Win Ratio {quantStats[$stockTicker?.toUpperCase()]["Outlier Win Ratio"]?.toFixed(2)} @@ -606,7 +606,7 @@ updateYearRange()
Outlier Loss Ratio {quantStats[$stockTicker?.toUpperCase()]["Outlier Loss Ratio"]?.toFixed(2)} @@ -616,7 +616,7 @@ updateYearRange()
MTD {#if quantStats[$stockTicker?.toUpperCase()]["MTD %"] >= 0} @@ -634,7 +634,7 @@ updateYearRange()
3M {#if quantStats[$stockTicker?.toUpperCase()]["3M %"] >= 0} @@ -652,7 +652,7 @@ updateYearRange()
6M {#if quantStats[$stockTicker?.toUpperCase()]["6M %"] >= 0} @@ -670,7 +670,7 @@ updateYearRange()
Best Day {#if quantStats[$stockTicker?.toUpperCase()]["Best Day %"] >= 0} @@ -688,7 +688,7 @@ updateYearRange()
Worst Day {#if quantStats[$stockTicker?.toUpperCase()]["Worst Day %"] >= 0} @@ -706,7 +706,7 @@ updateYearRange()
Best Month {#if quantStats[$stockTicker?.toUpperCase()]["Best Month %"] >= 0} @@ -724,7 +724,7 @@ updateYearRange()
Worst Month {#if quantStats[$stockTicker?.toUpperCase()]["Worst Month %"] >= 0} @@ -742,7 +742,7 @@ updateYearRange()
Best Year {#if quantStats[$stockTicker?.toUpperCase()]["Best Year %"] >= 0} @@ -760,7 +760,7 @@ updateYearRange()
Worst Year {#if quantStats[$stockTicker?.toUpperCase()]["Worst Year %"] >= 0} @@ -778,7 +778,7 @@ updateYearRange()
Avg. Drawdown {#if quantStats[$stockTicker?.toUpperCase()]["Avg. Drawdown"] >= 0} @@ -796,7 +796,7 @@ updateYearRange()
Avg. Drawdown Days {quantStats[$stockTicker?.toUpperCase()]["Avg. Drawdown Days"]} @@ -806,7 +806,7 @@ updateYearRange()
Recovery Factor {quantStats[$stockTicker?.toUpperCase()]["Recovery Factor"]?.toFixed(2)} @@ -816,7 +816,7 @@ updateYearRange()
Ulcer Index {quantStats[$stockTicker?.toUpperCase()]["Ulcer Index"]?.toFixed(2)} @@ -826,7 +826,7 @@ updateYearRange()
Avg. Up Month {#if quantStats[$stockTicker?.toUpperCase()]["Avg. Up Month %"] >= 0} @@ -844,7 +844,7 @@ updateYearRange()
Avg. Down Month {#if quantStats[$stockTicker?.toUpperCase()]["Avg. Down Month %"] >= 0} @@ -862,7 +862,7 @@ updateYearRange()
Win Days {quantStats[$stockTicker?.toUpperCase()]["Win Days %"]?.toFixed(2)}% @@ -872,7 +872,7 @@ updateYearRange()
Win Month {quantStats[$stockTicker?.toUpperCase()]["Win Month %"]?.toFixed(2)}% @@ -882,7 +882,7 @@ updateYearRange()
Win Quarter {quantStats[$stockTicker?.toUpperCase()]["Win Quarter %"]?.toFixed(2)}% @@ -892,7 +892,7 @@ updateYearRange()
Win Year {quantStats[$stockTicker?.toUpperCase()]["Win Year %"]?.toFixed(2)}% diff --git a/src/routes/stocks/[tickerID]/stats/income/+page.svelte b/src/routes/stocks/[tickerID]/stats/income/+page.svelte index 30ac5b94..aefd8dfd 100644 --- a/src/routes/stocks/[tickerID]/stats/income/+page.svelte +++ b/src/routes/stocks/[tickerID]/stats/income/+page.svelte @@ -661,7 +661,7 @@ $: {
diff --git a/src/routes/stocks/[tickerID]/stats/market-cap/+page.svelte b/src/routes/stocks/[tickerID]/stats/market-cap/+page.svelte index 0fc12910..98b032a1 100644 --- a/src/routes/stocks/[tickerID]/stats/market-cap/+page.svelte +++ b/src/routes/stocks/[tickerID]/stats/market-cap/+page.svelte @@ -430,7 +430,7 @@ async function plotData()
diff --git a/src/routes/watchlist/options/+page.svelte b/src/routes/watchlist/options/+page.svelte index 6f61346b..5eb2c0d5 100644 --- a/src/routes/watchlist/options/+page.svelte +++ b/src/routes/watchlist/options/+page.svelte @@ -364,7 +364,7 @@ onMount(async () => {
diff --git a/src/routes/watchlist/stocks/+page.svelte b/src/routes/watchlist/stocks/+page.svelte index 45f836bd..f548d838 100644 --- a/src/routes/watchlist/stocks/+page.svelte +++ b/src/routes/watchlist/stocks/+page.svelte @@ -472,7 +472,7 @@ onDestroy( () => {