Market Calls
Quarterly investment theses tracked from the day you made the call
showForm = !showForm}> {showForm ? 'Cancel' : 'οΌ New Call'}
{#if showForm}
New Market Call
{ e.preventDefault(); submit(); }}>
Title
Quarter
Date
Thesis
Tickers to track
Comma or space separated. Current prices will be snapshot automatically.
{#if formError}
β {formError}
{/if}
{#if saving}
Snapshotting pricesβ¦
{:else} Save Call {/if}
{/if} {#if (data.events ?? []).length > 0}
π Upcoming Events
{upcoming.length} upcoming
{#if past.length > 0}
{past.length} recent
{/if}
{#each upcoming as ev}
{ev.date}
{ev.ticker}
{eventIcon(ev.type)} {ev.label} {#if ev.detail}
Β· {ev.detail}
{/if}
{#if ev.epsEstimate != null}
EPS est. ${ev.epsEstimate?.toFixed(2)} Β· Rev est. {fmtMoney(ev.revEstimate)}
{/if}
{/each} {#if past.length > 0}
β Past β
{#each past as ev}
{ev.date}
{ev.ticker}
{eventIcon(ev.type)} {ev.label}
{/each} {/if}
{/if} {#if data.error}
β {data.error}
{:else if data.calls.length === 0}
No market calls yet. Create your first one to start tracking.
{:else} {#each data.calls as call}
{call.title}
{call.quarter}
{call.date}
{call.tickers.length} tickers
remove(call.id)}>β
{call.thesis}
{#if Object.keys(call.snapshot ?? {}).length}
{#each call.tickers as ticker} {@const snap = call.snapshot[ticker]} {#if snap}
{ticker}
${snap.price?.toFixed(2) ?? 'β'}
{snap.signal?.replace(/[β β‘β οΈπβ]/u, '').trim() ?? 'β'}
{/if} {/each}
View performance β
{/if}
{/each} {/if}