| Mkt Cap | -${marketCap} | -Volume | -{volume} | +Mkt Cap | +${marketCap} | +Volume | +{volume} |
| Price | -${currentPrice} | -Prev. Close | -${previousClose?.toFixed(2)} | +||||
| Price | +${currentPrice} | +Prev. Close | +${previousClose} | ||||
| Alpha | -+ | Alpha | +{typeof alpha !== 'undefined' ? alpha : '-'} | -Beta | -+ | Beta | +{typeof beta !== 'undefined' && !isNaN(beta) ? beta?.toFixed(2) : '-'} |
| EPS | +{eps} | +PE | +{pe} | +
| Started | -Recovered | -Drawdown | -Days | -||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| - {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']} - | +
| Started | +Recovered | +Drawdown | +Days |
|---|
+
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' })} @@ -328,34 +341,34 @@ -| + | |||||||
|---|---|---|---|---|---|---|---|
| Metric | -+ | {$cryptoTicker} | -+ | S&P500 | |||
| + | Cumulative Return | -+ | {#if quantStats[$cryptoTicker?.toUpperCase()]["Cumulative Return %"] >=0} +{quantStats[$cryptoTicker?.toUpperCase()]["Cumulative Return %"]}% {:else} {quantStats[$cryptoTicker?.toUpperCase()]["Cumulative Return %"]}% {/if} | -+ | {#if quantStats['SPY']["Cumulative Return %"] >=0} +{quantStats['SPY']["Cumulative Return %"]}% {:else} @@ -365,17 +378,17 @@ | ||
| + | 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} @@ -385,41 +398,41 @@ | ||
| + | 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} @@ -429,87 +442,87 @@ | ||
| + | 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} @@ -537,17 +550,17 @@ | ||
| + | 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} @@ -557,17 +570,17 @@ | ||
| + | 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} @@ -577,41 +590,41 @@ | ||
| + | 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} @@ -621,17 +634,17 @@ | ||
| + | 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} @@ -642,104 +655,104 @@ | ||
| + | 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 | @@ -749,7 +762,7 @@ {quantStats[$cryptoTicker?.toUpperCase()]["MTD %"]?.toFixed(2)}% {/if} | -+ | {#if quantStats['SPY']["MTD %"] >=0} +{quantStats['SPY']["MTD %"]?.toFixed(2)}% {:else} @@ -759,17 +772,17 @@ | |||
| + | 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} @@ -779,17 +792,17 @@ | ||
| + | 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} @@ -799,17 +812,17 @@ | ||
| + | YTD | -+ | {#if quantStats[$cryptoTicker?.toUpperCase()]["YTD %"] >=0} +{quantStats[$cryptoTicker?.toUpperCase()]["YTD %"]?.toFixed(2)}% {:else} {quantStats[$cryptoTicker?.toUpperCase()]["YTD %"]?.toFixed(2)}% {/if} | -+ | {#if quantStats['SPY']["YTD %"] >=0} +{quantStats['SPY']["YTD %"]?.toFixed(2)}% {:else} @@ -819,17 +832,17 @@ | ||
| + | 1Y | -+ | {#if quantStats[$cryptoTicker?.toUpperCase()]["1Y %"] >=0} +{quantStats[$cryptoTicker?.toUpperCase()]["1Y %"]?.toFixed(2)}% {:else} {quantStats[$cryptoTicker?.toUpperCase()]["1Y %"]?.toFixed(2)}% {/if} | -+ | {#if quantStats['SPY']["1Y %"] >=0} +{quantStats['SPY']["1Y %"]?.toFixed(2)}% {:else} @@ -839,17 +852,17 @@ | ||
| + | 3Y (ann.) | -+ | {#if quantStats[$cryptoTicker?.toUpperCase()]["3Y (ann.) %"] >=0} +{quantStats[$cryptoTicker?.toUpperCase()]["3Y (ann.) %"]?.toFixed(2)}% {:else} {quantStats[$cryptoTicker?.toUpperCase()]["3Y (ann.) %"]?.toFixed(2)}% {/if} | -+ | {#if quantStats['SPY']["3Y (ann.) %"] >=0} +{quantStats['SPY']["3Y (ann.) %"]?.toFixed(2)}% {:else} @@ -859,7 +872,7 @@ | ||
| + | Best Day | @@ -869,7 +882,7 @@ {quantStats[$cryptoTicker?.toUpperCase()]["Best Day %"]?.toFixed(2)}% {/if} | -+ | {#if quantStats['SPY']["Best Day %"] >=0} +{quantStats['SPY']["Best Day %"]?.toFixed(2)}% {:else} @@ -879,17 +892,17 @@ | |||
| + | 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} @@ -899,17 +912,17 @@ | ||
| + | Best Month | -+ | {#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} @@ -919,17 +932,17 @@ | ||
| + | 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} @@ -939,17 +952,17 @@ | ||
| + | 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} @@ -959,17 +972,17 @@ | ||
| + | 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} @@ -979,7 +992,7 @@ | ||
| + | Avg. Drawdown | @@ -989,7 +1002,7 @@ {quantStats[$cryptoTicker?.toUpperCase()]["Avg. Drawdown"]?.toFixed(2)}% {/if} | -+ | {#if quantStats['SPY']["Avg. Drawdown"] >=0} +{quantStats['SPY']["Avg. Drawdown"]?.toFixed(2)}% {:else} @@ -999,44 +1012,44 @@ | |||
| + | 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 | @@ -1046,7 +1059,7 @@ {quantStats[$cryptoTicker?.toUpperCase()]["Avg. Up Month %"]?.toFixed(2)}% {/if} | -+ | {#if quantStats['SPY']["Avg. Up Month %"] >=0} +{quantStats['SPY']["Avg. Up Month %"]?.toFixed(2)}% {:else} @@ -1056,17 +1069,17 @@ | |||
| + | 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} @@ -1077,49 +1090,49 @@ | ||
| + | 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)}% |
| + 1-Day Range + | +
+
+
+
+ {dayLow}
+ {dayHigh}
+
+
+
+
+ |
+ {:else}
+ + 1-Day Range + | ++ {dayLow} + | ++ + + | ++ {dayHigh} + | + {/if} +
| + 1-Year Range + | +
+
+
+
+ {yearLow}
+ {yearHigh}
+
+
+
+
+ |
+ {:else}
+ + 1-Year Range + | ++ {yearLow} + | ++ + | ++ {yearHigh} + | + {/if} +
| 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} | +PE | +{pe} | +
| Started | +Recovered | +Drawdown | +Days | +
|---|---|---|---|
| + {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']} + | +
+ 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} + +{quantStats[$etfTicker?.toUpperCase()]["Cumulative Return %"]}% + {:else} + {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} + | +
| + YTD + | ++ {#if quantStats[$etfTicker?.toUpperCase()]["YTD %"] >=0} + +{quantStats[$etfTicker?.toUpperCase()]["YTD %"]?.toFixed(2)}% + {:else} + {quantStats[$etfTicker?.toUpperCase()]["YTD %"]?.toFixed(2)}% + {/if} + | ++ {#if quantStats['SPY']["YTD %"] >=0} + +{quantStats['SPY']["YTD %"]?.toFixed(2)}% + {:else} + {quantStats['SPY']["YTD %"]?.toFixed(2)}% + {/if} + | +
| + 1Y + | ++ {#if quantStats[$etfTicker?.toUpperCase()]["1Y %"] >=0} + +{quantStats[$etfTicker?.toUpperCase()]["1Y %"]?.toFixed(2)}% + {:else} + {quantStats[$etfTicker?.toUpperCase()]["1Y %"]?.toFixed(2)}% + {/if} + | ++ {#if quantStats['SPY']["1Y %"] >=0} + +{quantStats['SPY']["1Y %"]?.toFixed(2)}% + {:else} + {quantStats['SPY']["1Y %"]?.toFixed(2)}% + {/if} + | +
| + 3Y (ann.) + | ++ {#if quantStats[$etfTicker?.toUpperCase()]["3Y (ann.) %"] >=0} + +{quantStats[$etfTicker?.toUpperCase()]["3Y (ann.) %"]?.toFixed(2)}% + {:else} + {quantStats[$etfTicker?.toUpperCase()]["3Y (ann.) %"]?.toFixed(2)}% + {/if} + | ++ {#if quantStats['SPY']["3Y (ann.) %"] >=0} + +{quantStats['SPY']["3Y (ann.) %"]?.toFixed(2)}% + {:else} + {quantStats['SPY']["3Y (ann.) %"]?.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()]["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} + | +
| + 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)}% + | +
| Mkt Cap | -${marketCap} | -Volume | -{volume} | +Mkt Cap | +${marketCap} | +Volume | +{volume} |
| Price | -${currentPrice} | -Prev. Close | -${previousClose} | +||||
| Price | +${currentPrice} | +Prev. Close | +${previousClose} | ||||
| Alpha | -+ | Alpha | +{typeof alpha !== 'undefined' ? alpha : '-'} | -Beta | -+ | Beta | +{typeof beta !== 'undefined' && !isNaN(beta) ? beta?.toFixed(2) : '-'} |
| Started | -Recovered | -Drawdown | -Days | +Started | +Recovered | +Drawdown | +Days |
|---|---|---|---|---|---|---|---|
| + | {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']} |
| + | |||||
|---|---|---|---|---|---|
| Metric | -+ | {$stockTicker} | -+ | S&P500 | |
| + | Cumulative Return | -+ | {#if quantStats[$stockTicker?.toUpperCase()]["Cumulative Return %"] >=0} +{quantStats[$stockTicker?.toUpperCase()]["Cumulative Return %"]}% {:else} {quantStats[$stockTicker?.toUpperCase()]["Cumulative Return %"]}% {/if} | -+ | {#if quantStats['SPY']["Cumulative Return %"] >=0} +{quantStats['SPY']["Cumulative Return %"]}% {:else} @@ -378,17 +378,17 @@ updateYearRange() |
| + | Compound Annual Growth Rate (CAGR) | -+ | {#if quantStats[$stockTicker?.toUpperCase()]["CAGR %"] >=0} +{quantStats[$stockTicker?.toUpperCase()]["CAGR %"]}% {:else} {quantStats[$stockTicker?.toUpperCase()]["CAGR %"]}% {/if} | -+ | {#if quantStats['SPY']["CAGR %"] >=0} +{quantStats['SPY']["CAGR %"]}% {:else} @@ -398,41 +398,41 @@ updateYearRange() |
| + | Sharpe | -+ | {quantStats[$stockTicker?.toUpperCase()]["Sharpe"]?.toFixed(2)} | -+ | {quantStats['SPY']["Sharpe"]?.toFixed(2)} |
| + | Sortino | -+ | {quantStats[$stockTicker?.toUpperCase()]["Sortino"]?.toFixed(2)} | -+ | {quantStats['SPY']["Sortino"]?.toFixed(2)} |
| + | Max Drawdown | -+ | {#if quantStats[$stockTicker?.toUpperCase()]["Max Drawdown"] >=0} +{quantStats[$stockTicker?.toUpperCase()]["Max Drawdown"]}% {:else} {quantStats[$stockTicker?.toUpperCase()]["Max Drawdown"]}% {/if} | -+ | {#if quantStats['SPY']["Max Drawdown"] >=0} +{quantStats['SPY']["Max Drawdown"]}% {:else} @@ -442,87 +442,87 @@ updateYearRange() |
| + | Longest Drawdown Days | -+ | {quantStats[$stockTicker?.toUpperCase()]["Longest DD Days"]} | -+ | {quantStats['SPY']["Longest DD Days"]} |
| + | Volatility (ann.) | -+ | {quantStats[$stockTicker?.toUpperCase()]["Volatility (ann.) %"]}% | -+ | {quantStats['SPY']["Volatility (ann.) %"]}% |
| + | Correlation | -+ | {quantStats[$stockTicker?.toUpperCase()]["Correlation"]}% | -+ | {quantStats['SPY']["Correlation"]} |
| + | R^2 | -+ | {quantStats[$stockTicker?.toUpperCase()]["R^2"]} | -+ | {quantStats['SPY']["R^2"]} |
| + | Calmar | -+ | {quantStats[$stockTicker?.toUpperCase()]["Calmar"]} | -+ | {quantStats['SPY']["Calmar"]} |
| + | Skew | -+ | {quantStats[$stockTicker?.toUpperCase()]["Skew"]?.toFixed(2)} | -+ | {quantStats['SPY']["Skew"]?.toFixed(2)} |
| + | Kurtosis | -+ | {quantStats[$stockTicker?.toUpperCase()]["Kurtosis"]?.toFixed(2)} | -+ | {quantStats['SPY']["Kurtosis"]?.toFixed(2)} |
| + | Expected Daily | -+ | {#if quantStats[$stockTicker?.toUpperCase()]["Expected Daily %"] >=0} +{quantStats[$stockTicker?.toUpperCase()]["Expected Daily %"]}% {:else} {quantStats[$stockTicker?.toUpperCase()]["Expected Daily %"]}% {/if} | -+ | {#if quantStats['SPY']["Expected Daily %"] >=0} +{quantStats['SPY']["Expected Daily %"]}% {:else} @@ -550,17 +550,17 @@ updateYearRange() |
| + | Expected Monthly | -+ | {#if quantStats[$stockTicker?.toUpperCase()]["Expected Monthly %"] >=0} +{quantStats[$stockTicker?.toUpperCase()]["Expected Monthly %"]}% {:else} {quantStats[$stockTicker?.toUpperCase()]["Expected Monthly %"]}% {/if} | -+ | {#if quantStats['SPY']["Expected Monthly %"] >=0} +{quantStats['SPY']["Expected Monthly %"]}% {:else} @@ -570,17 +570,17 @@ updateYearRange() |
| + | Expected Yearly | -+ | {#if quantStats[$stockTicker?.toUpperCase()]["Expected Yearly %"] >=0} +{quantStats[$stockTicker?.toUpperCase()]["Expected Yearly %"]}% {:else} {quantStats[$stockTicker?.toUpperCase()]["Expected Yearly %"]}% {/if} | -+ | {#if quantStats['SPY']["Expected Yearly %"] >=0} +{quantStats['SPY']["Expected Yearly %"]}% {:else} @@ -590,41 +590,41 @@ updateYearRange() |
| + | Kelly Criterion | -+ | {quantStats[$stockTicker?.toUpperCase()]["Kelly Criterion %"]}% | -+ | {quantStats['SPY']["Kelly Criterion %"]}% |
| + | Risk of Ruin | -+ | {quantStats[$stockTicker?.toUpperCase()]["Risk of Ruin %"]}% | -+ | {quantStats['SPY']["Risk of Ruin %"]}% |
| + | Daily Value-at-Risk | -+ | {#if quantStats[$stockTicker?.toUpperCase()]["Daily Value-at-Risk %"] >=0} +{quantStats[$stockTicker?.toUpperCase()]["Daily Value-at-Risk %"]?.toFixed(2)}% {:else} {quantStats[$stockTicker?.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} @@ -634,17 +634,17 @@ updateYearRange() |
| + | Expected Shortfall (cVaR) | -+ | {#if quantStats[$stockTicker?.toUpperCase()]["Expected Shortfall (cVaR) %"] >=0} +{quantStats[$stockTicker?.toUpperCase()]["Expected Shortfall (cVaR) %"]?.toFixed(2)}% {:else} {quantStats[$stockTicker?.toUpperCase()]["Expected Shortfall (cVaR) %"]?.toFixed(2)}% {/if} | -+ | {#if quantStats['SPY']["Expected Shortfall (cVaR) %"] >=0} +{quantStats['SPY']["Expected Shortfall (cVaR) %"]?.toFixed(2)}% {:else} @@ -655,104 +655,104 @@ updateYearRange() |
| + | Max Consecutive Wins | {quantStats[$stockTicker?.toUpperCase()]["Max Consecutive Wins"]} | -+ | {quantStats['SPY']["Max Consecutive Wins"]} | |
| + | Max Consecutive Losses | {quantStats[$stockTicker?.toUpperCase()]["Max Consecutive Losses"]} | -+ | {quantStats['SPY']["Max Consecutive Losses"]} | |
| + | Gain/Pain Ratio | {quantStats[$stockTicker?.toUpperCase()]["Gain/Pain Ratio"]?.toFixed(2)} | -+ | {quantStats['SPY']["Gain/Pain Ratio"]?.toFixed(2)} | |
| + | Gain/Pain (1M) | -+ | {quantStats[$stockTicker?.toUpperCase()]["Gain/Pain (1M)"]?.toFixed(2)} | -+ | {quantStats['SPY']["Gain/Pain (1M)"]?.toFixed(2)} |
| + | Payoff Ratio | -+ | {quantStats[$stockTicker?.toUpperCase()]["Payoff Ratio"]?.toFixed(2)} | -+ | {quantStats['SPY']["Payoff Ratio"]?.toFixed(2)} |
| + | Profit Factor | -+ | {quantStats[$stockTicker?.toUpperCase()]["Profit Factor"]?.toFixed(2)} | -+ | {quantStats['SPY']["Profit Factor"]?.toFixed(2)} |
| + | Outlier Win Ratio | -+ | {quantStats[$stockTicker?.toUpperCase()]["Outlier Win Ratio"]?.toFixed(2)} | -+ | {quantStats['SPY']["Outlier Win Ratio"]?.toFixed(2)} |
| + | Outlier Loss Ratio | -+ | {quantStats[$stockTicker?.toUpperCase()]["Outlier Loss Ratio"]?.toFixed(2)} | -+ | {quantStats['SPY']["Outlier Loss Ratio"]?.toFixed(2)} |
| + | MTD | @@ -762,7 +762,7 @@ updateYearRange() {quantStats[$stockTicker?.toUpperCase()]["MTD %"]?.toFixed(2)}% {/if} | -+ | {#if quantStats['SPY']["MTD %"] >=0} +{quantStats['SPY']["MTD %"]?.toFixed(2)}% {:else} @@ -772,17 +772,17 @@ updateYearRange() | |
| + | 3M | -+ | {#if quantStats[$stockTicker?.toUpperCase()]["3M %"] >=0} +{quantStats[$stockTicker?.toUpperCase()]["3M %"]?.toFixed(2)}% {:else} {quantStats[$stockTicker?.toUpperCase()]["3M %"]?.toFixed(2)}% {/if} | -+ | {#if quantStats['SPY']["3M %"] >=0} +{quantStats['SPY']["3M %"]?.toFixed(2)}% {:else} @@ -792,17 +792,17 @@ updateYearRange() |
| + | 6M | -+ | {#if quantStats[$stockTicker?.toUpperCase()]["6M %"] >=0} +{quantStats[$stockTicker?.toUpperCase()]["6M %"]?.toFixed(2)}% {:else} {quantStats[$stockTicker?.toUpperCase()]["6M %"]?.toFixed(2)}% {/if} | -+ | {#if quantStats['SPY']["6M %"] >=0} +{quantStats['SPY']["6M %"]?.toFixed(2)}% {:else} @@ -812,17 +812,17 @@ updateYearRange() |
| + | YTD | -+ | {#if quantStats[$stockTicker?.toUpperCase()]["YTD %"] >=0} +{quantStats[$stockTicker?.toUpperCase()]["YTD %"]?.toFixed(2)}% {:else} {quantStats[$stockTicker?.toUpperCase()]["YTD %"]?.toFixed(2)}% {/if} | -+ | {#if quantStats['SPY']["YTD %"] >=0} +{quantStats['SPY']["YTD %"]?.toFixed(2)}% {:else} @@ -832,17 +832,17 @@ updateYearRange() |
| + | 1Y | -+ | {#if quantStats[$stockTicker?.toUpperCase()]["1Y %"] >=0} +{quantStats[$stockTicker?.toUpperCase()]["1Y %"]?.toFixed(2)}% {:else} {quantStats[$stockTicker?.toUpperCase()]["1Y %"]?.toFixed(2)}% {/if} | -+ | {#if quantStats['SPY']["1Y %"] >=0} +{quantStats['SPY']["1Y %"]?.toFixed(2)}% {:else} @@ -852,17 +852,17 @@ updateYearRange() |
| + | 3Y (ann.) | -+ | {#if quantStats[$stockTicker?.toUpperCase()]["3Y (ann.) %"] >=0} +{quantStats[$stockTicker?.toUpperCase()]["3Y (ann.) %"]?.toFixed(2)}% {:else} {quantStats[$stockTicker?.toUpperCase()]["3Y (ann.) %"]?.toFixed(2)}% {/if} | -+ | {#if quantStats['SPY']["3Y (ann.) %"] >=0} +{quantStats['SPY']["3Y (ann.) %"]?.toFixed(2)}% {:else} @@ -872,7 +872,7 @@ updateYearRange() |
| + | Best Day | @@ -882,7 +882,7 @@ updateYearRange() {quantStats[$stockTicker?.toUpperCase()]["Best Day %"]?.toFixed(2)}% {/if} | -+ | {#if quantStats['SPY']["Best Day %"] >=0} +{quantStats['SPY']["Best Day %"]?.toFixed(2)}% {:else} @@ -892,17 +892,17 @@ updateYearRange() | |
| + | Worst Day | -+ | {#if quantStats[$stockTicker?.toUpperCase()]["Worst Day %"] >=0} +{quantStats[$stockTicker?.toUpperCase()]["Worst Day %"]?.toFixed(2)}% {:else} {quantStats[$stockTicker?.toUpperCase()]["Worst Day %"]?.toFixed(2)}% {/if} | -+ | {#if quantStats['SPY']["Worst Day %"] >=0} +{quantStats['SPY']["Worst Day %"]?.toFixed(2)}% {:else} @@ -912,17 +912,17 @@ updateYearRange() |
| + | Best Month | -+ | {#if quantStats[$stockTicker?.toUpperCase()]["Worst Day %"] >=0} +{quantStats[$stockTicker?.toUpperCase()]["Worst Day %"]?.toFixed(2)}% {:else} {quantStats[$stockTicker?.toUpperCase()]["Worst Day %"]?.toFixed(2)}% {/if} | -+ | {#if quantStats['SPY']["Worst Day %"] >=0} +{quantStats['SPY']["Worst Day %"]?.toFixed(2)}% {:else} @@ -932,17 +932,17 @@ updateYearRange() |
| + | Worst Month | -+ | {#if quantStats[$stockTicker?.toUpperCase()]["Worst Month %"] >=0} +{quantStats[$stockTicker?.toUpperCase()]["Worst Month %"]?.toFixed(2)}% {:else} {quantStats[$stockTicker?.toUpperCase()]["Worst Month %"]?.toFixed(2)}% {/if} | -+ | {#if quantStats['SPY']["Worst Month %"] >=0} +{quantStats['SPY']["Worst Month %"]?.toFixed(2)}% {:else} @@ -952,17 +952,17 @@ updateYearRange() |
| + | Best Year | -+ | {#if quantStats[$stockTicker?.toUpperCase()]["Best Year %"] >=0} +{quantStats[$stockTicker?.toUpperCase()]["Best Year %"]?.toFixed(2)}% {:else} {quantStats[$stockTicker?.toUpperCase()]["Best Year %"]?.toFixed(2)}% {/if} | -+ | {#if quantStats['SPY']["Best Year %"] >=0} +{quantStats['SPY']["Best Year %"]?.toFixed(2)}% {:else} @@ -972,17 +972,17 @@ updateYearRange() |
| + | Worst Year | -+ | {#if quantStats[$stockTicker?.toUpperCase()]["Worst Year %"] >=0} +{quantStats[$stockTicker?.toUpperCase()]["Worst Year %"]?.toFixed(2)}% {:else} {quantStats[$stockTicker?.toUpperCase()]["Worst Year %"]?.toFixed(2)}% {/if} | -+ | {#if quantStats['SPY']["Worst Year %"] >=0} +{quantStats['SPY']["Worst Year %"]?.toFixed(2)}% {:else} @@ -992,7 +992,7 @@ updateYearRange() |
| + | Avg. Drawdown | @@ -1002,7 +1002,7 @@ updateYearRange() {quantStats[$stockTicker?.toUpperCase()]["Avg. Drawdown"]?.toFixed(2)}% {/if} | -+ | {#if quantStats['SPY']["Avg. Drawdown"] >=0} +{quantStats['SPY']["Avg. Drawdown"]?.toFixed(2)}% {:else} @@ -1012,44 +1012,44 @@ updateYearRange() | |
| + | Avg. Drawdown Days | -+ | {quantStats[$stockTicker?.toUpperCase()]["Avg. Drawdown Days"]} | -+ | {quantStats['SPY']["Avg. Drawdown Days"]} |
| + | Recovery Factor | -+ | {quantStats[$stockTicker?.toUpperCase()]["Recovery Factor"]?.toFixed(2)} | -+ | {quantStats['SPY']["Recovery Factor"]?.toFixed(2)} |
| + | Ulcer Index | -+ | {quantStats[$stockTicker?.toUpperCase()]["Ulcer Index"]?.toFixed(2)} | -+ | {quantStats['SPY']["Ulcer Index"]?.toFixed(2)} |
| + | Avg. Up Month | @@ -1059,7 +1059,7 @@ updateYearRange() {quantStats[$stockTicker?.toUpperCase()]["Avg. Up Month %"]?.toFixed(2)}% {/if} | -+ | {#if quantStats['SPY']["Avg. Up Month %"] >=0} +{quantStats['SPY']["Avg. Up Month %"]?.toFixed(2)}% {:else} @@ -1069,17 +1069,17 @@ updateYearRange() | |
| + | Avg. Down Month | -+ | {#if quantStats[$stockTicker?.toUpperCase()]["Avg. Down Month %"] >=0} +{quantStats[$stockTicker?.toUpperCase()]["Avg. Down Month %"]?.toFixed(2)}% {:else} {quantStats[$stockTicker?.toUpperCase()]["Avg. Down Month %"]?.toFixed(2)}% {/if} | -+ | {#if quantStats['SPY']["Avg. Down Month %"] >=0} +{quantStats['SPY']["Avg. Down Month %"]?.toFixed(2)}% {:else} @@ -1090,49 +1090,49 @@ updateYearRange() |
| + | Win Days | -+ | {quantStats[$stockTicker?.toUpperCase()]["Win Days %"]?.toFixed(2)}% | -+ | {quantStats['SPY']["Win Days %"]?.toFixed(2)}% |
| + | Win Month | -+ | {quantStats[$stockTicker?.toUpperCase()]["Win Month %"]?.toFixed(2)}% | -+ | {quantStats['SPY']["Win Month %"]?.toFixed(2)}% |
| + | Win Quarter | -+ | {quantStats[$stockTicker?.toUpperCase()]["Win Quarter %"]?.toFixed(2)}% | -+ | {quantStats['SPY']["Win Quarter %"]?.toFixed(2)}% |
| + | Win Year | -+ | {quantStats[$stockTicker?.toUpperCase()]["Win Year %"]?.toFixed(2)}% | -+ | {quantStats['SPY']["Win Year %"]?.toFixed(2)}% |