Skip to content
{{ searchSuggestLabel }}
Type any company or ticker to add one from the wider market.
{{ r.head }}
This account is scheduled for deletion on {{ delDateLabel }}. Nothing has been deleted yet.

Learn how to reason about a company, one layer at a time.

NVIDIA NVIDIA Corporation NASDAQ: NVDA · Report in review
Reported financial statements
Why · quality
Why is this a business worth owning?
Quality and moat
Returns on capital, moat evidence
What · value
What do we think this business is worth?
Estimated value and range
Cash flows, debt and share count
When · timing
When is the timing in our favour?
Timing signals
Price trend and relative strength
How · thesis
How would we know our thesis is wrong?
Eight tests on the thesis
Latest filings and annual report
Synthesis How the findings fit together

Four questions. One disciplined execution model.

WHY01
Why is this a business worth owning?

We score five parts of the business: its economic moat, business quality, management, competitive position, and industry and macro backdrop. Judgment calls are scored across bear, base and bull cases so the conditions behind the view stay visible.

Reads
Returns on capital, moat evidence
Produces
A moat rating
WHAT02
What do we think this business is worth?

We screen up to ten valuation lenses, keep the ones that suit the business and weight them by how tight their ranges are.

Reads
Cash flows, debt and share count
Produces
A value range, never a point estimate
WHEN03
When is the timing in our favour?

We first check if the price sits near support and momentum has turned. We then check whether the company is outperforming both the market and its sector, and whether the price offers a margin of safety.

Reads
Price trend and relative strength
Produces
A timing label
HOW04
How would we know our thesis is wrong?

The thesis is tested against the latest filings in eight areas from demand and moat to management response. Each test returns Pass, Watch or Fail, and together they give the verdict on the thesis.

Reads
Latest filings and annual report
Produces
A verdict on the thesis

Analysis integrated with education.

01

Clarity over Clutter

Read the high-level investment thesis first, then unfold the deep dive to inspect the underlying quantitative models.

02

Context over Jargon

Hover over any unfamiliar financial metric to view an instant, plain-English definition without losing your place in the analysis.

03

Consensus over Exactness

View corporate valuations through multiple distinct analytical lenses rather than a single price target, mapping out clear structural ranges of uncertainty.

Pricing

Scale your coverage, not your education.

Your plan
Basic
S$0
Free, forever
3 companies, for life
They stay for the lifetime of your account. Companies can't be removed or swapped.
✓ Full-depth reports on your 3 companies
✓ Beginner / Deep-Dive disclosure
✓ Methodology & in-text definitions
— Brief & Dossier downloads
— Watchlist cross-compare
Your plan
Student ProBest valueNot open yet
{{ lpPlusPrice }}/mo
{{ lpPlusYear }}
{{ lpPlusYear }}
{{ lpPlusHeadline }}
✓ Everything in Basic
✓ Socratic thesis coach
✓ Agentic Debate chamber
Requires a verified school email
Your plan
ProNot open yet
{{ lpProPrice }}/mo
{{ lpProYear }}
{{ lpProYear }}
Open every report in the library
✓ Everything in Student Pro, no school email needed
✓ Digest of what changed between reports
✓ Candidate Discovery & Theme Explorer
The teaching desk

Read a company the way a professional does: why, what, when and how.

{{ authTitle }}

{{ authSub }}

{{ authNoticeTitle }}
{{ authNotice }}
I am 18 or older and agree to the Terms of Service and Privacy Policy.
or

Aperto never uses your email for marketing, nor shares it with third parties.

Two-step verification

Your positions and locked theses live here.

Signing you in…

One moment while we check this browser.

✉

Check your email

We sent a six-digit code to {{ otpEmailMasked }}. It expires in 10 minutes.

We sent a six-digit code to the email address on your account. It expires in 10 minutes.

{{ otpErrorText }}

Generating · {{ activeTicker }}

Producing a fresh report for {{ activeName }}.

This ticker is cold, so the engine is reading the filings and running all four layers. It's added to the shared library once complete, usually a few minutes. You'll see each layer land below as it finishes.

{{ genStage }} {{ genPctStr }}%
{{ g.mark }} {{ g.k }}
While you wait · how to read this

{{ genLessonT }}

{{ genLessonB }}

✦
Not covered yet

This company is not covered yet.

{{ activeName }} is not in the shared library. Requests show us which companies readers want. New reports are added by hand during the beta.

{{ gateVoteCount }}

Requests show us which companies readers want. They don’t start a report, and nothing is charged.

{{ activeName }}

{{ lockedLogoEl }}

{{ lockedName }}

{{ activeTicker }}
{{ lockedPrice }} {{ lockedChg }} {{ lockedChg }}
{{ lockedCap }}

{{ lockedClosedNote }}

{{ hdrLogoEl }}

{{ hdrName }}

{{ headerAsOfLine }}{{ hdrSub }}
Scored on {{ svDate }}. Prices quoted in the written analysis are as of {{ svProseDate }}.
Scored on {{ svDate }}.
This report for {{ svTicker }} was scored using an earlier version of the methodology.
AI-generated content may contain inaccuracies.
Updated report generating

{{ structBannerText }} {{ structFilingLabel }}

Hidden from readers. Only admins can see this report until it is approved.

This report is no longer maintained

It has been removed from the active library and will not be refreshed. It was last produced {{ withdrawnSince }}.

This report is no longer maintained

It has been removed from the active library and will not be refreshed.

{{ repStatusMsg }}
Business model
{{ bm.label }}: {{ bm.text }}
{{ bm.figClaim }}
Source · {{ bm.figSource }}
Commit your thesis before you read

What do you think, before the engine tells you?

Commit to your thesis before the data does. Aperto locks and timestamps your logic, then runs the critique.

Your stance
Conviction {{ thesisConv }} / 5
In one line, why?
Pre-mortem: what would prove you wrong? (optional)
Falsification parametersAI generated content may contain inaccuracies.

The engine read these testable conditions in your thesis. Confirm or adjust the thresholds. Each one is re-checked each weekday against the newest quarterly statements, and a breach lands on your Falsification Feed.

{{ tt.label }} {{ tt.dirWord }} {{ tt.unit }}
“{{ tt.condition }}” ➔ {{ tt.impact }}
Checked in filings, not automatically
“{{ tm.condition }}” ➔ {{ tm.impact }}
Thesis drift
{{ reportDriftTitle }}
{{ reportDriftDetail }}
Your locked thesis
Locked {{ committedDateStr }}

“{{ committedText }}”

Falsified if: {{ committedPre }}

{{ thesisValLine }}

{{ committedThesisLine }}
Executive summary

{{ execHeadline }}

{{ b.text }}
Catalysts
{{ c.n }}{{ c.text }}
Key risks
{{ c.n }}{{ c.text }}
Since last quarter {{ qdSpan }} {{ qdChangedNote }}
{{ qr.label }} {{ qr.from }} {{ qr.to }} {{ qr.chip }}

{{ whyExplainShort }}

Every layer reads the same as it did on the prior filing. The business reported, and nothing in the assessment moved.

Thesis-invalidation tests that flipped
{{ qf.no }} {{ qf.name }} {{ qf.from }} {{ qf.to }}

The rest of this page is still rendering the earlier filing. A refresh has not yet picked up the newer quarter. The comparison above reads the newest assessment on record.

Compared between filings, not between refreshes: the assessment is only re-read when the company reports, so this is what the new filing changed. Price and margin of safety move daily and are deliberately excluded.

Since last quarter First quarter on record ({{ qdCurrentLabel }}). The comparison appears once this company reports again.
WHY Why is this a business worth owning? {{ whyBandStr }} {{ whyRankLabel }} Not scored
This report has no quality score

{{ whyRefusalReason }}

{{ whyCoverageStr }}

This is a limit of the analysis, not a judgment about the company.

{{ np.t }}

What lifts it
{{ d.name }}{{ d.scoreStr }}
{{ d.note }}
Read the reasoning
What holds it back
{{ d.name }}{{ d.scoreStr }}
{{ d.note }}
Read the reasoning

Measured within this report only. Each figure is how far the WHY score would move if that one measure changed by one notch.

Scenario weighting · how the score is built 40 / 40 / 20 · Bear / Base / Bull
{{ v.label }} {{ v.scoreStr }}{{ v.w }}
Scenario spread {{ stab.text }}

{{ whyExplainLong }}

The composite ({{ whyCompositeStr }}) is a probability-weighted blend, deliberately downside-heavy (40% Bear). A wide Bull−Bear spread means the number leans on which scenario plays out, so read it as a range, not a point.

How the three scenarios branch
Composite
{{ whyCompositeStr }}
prob-weighted
{{ b.label }}
{{ b.w }} wt
{{ b.score }}

{{ b.line }}

{{ s.name }} {{ s.tierLabel }} wt {{ s.weightStr }} Source strength{{ s.scoreStr }}

{{ s.srcNote }}

{{ s.srcDiverge }}

{{ s.moatLabel }}

{{ s.moatLead }}

Excess return by fiscal year
{{ s.moatChartEl }}
{{ s.moatChartCaption }}
Where the advantage comes from
{{ ms.name }}
{{ ms.proseEl }}

{{ s.moatNoSourceNote }}

{{ bp.t }}

{{ s.figClaim }}
Source · {{ s.figSrc }}
The checks behind the number
{{ c.caret }} {{ c.label }} {{ c.valStr }}
{{ c.bandTier }}
{{ c.awardedHead }}
{{ c.awardedTxt }}
{{ c.betweenNote }}
Why this company scored here
{{ c.proseEl }}
{{ c.nextHead }}
{{ c.nextTxt }}
{{ c.anchorTxt }}
Bulls say
+{{ b.t }}
Bears say
−{{ b.t }}
{{ s.rating }}Source · {{ s.src }}
Watch variable {{ s.watchName }}
{{ wr.k }} {{ wr.v }}

{{ s.verdict }}

Earnings diagnostic {{ edQuarter }} {{ edAsOf }}
1 · Topline vs expectations
{{ fr.name }} {{ fr.actual }} {{ fr.est }} {{ fr.chip }} {{ fr.yoy }}

The market prices the deviation from consensus, not the absolute print.

2 · Core engine
{{ edCatSegment }}
{{ edCatStated }}

“{{ edCatQuote }}”

No segment figure available. The call transcript is not covered for this name, or management stated none.

3 · Operating pressure
{{ pw.k }} {{ pw.v }} {{ pw.sub }}
{{ pf.label }}
4 · Forward pipe
{{ fw.k }} {{ fw.v }}
Management guidance
•{{ gd.k }}: {{ gd.v }}
•{{ edBacklogK }}: {{ edBacklogV }}

{{ edFwdNote }}

Consensus figures via FMP. Segment and guidance figures as stated by management on the call.
Earnings-call review {{ earnRevTitle }} {{ earnRevDate }}
What management said
•{{ eh.t }}
How it bears on the thesis
{{ th.name }} {{ th.pillar }} {{ th.verdict }}

{{ th.ev }}

Bull read

{{ th.bull }}

Bear read

{{ th.bear }}

Call verdict {{ earnRevOvVerdict }} {{ earnRevOvNote }}

{{ ep.t }}

Summarised from the public earnings call. For research and education only, not advice.

This company's latest earnings call is not covered by our current transcript source, so there is no call review to show. Covered names surface management's own figures here alongside a read on how the call bears on the thesis.

WHAT What do we think this business is worth?
Frontier Speculative · no valuation anchor
Why there is no fair-value number here

{{ frStatement }}

{{ a.input }} {{ a.blocks }}
{{ r.t }}
Cash runway · what is measurable
Runway
{{ frRunwayStr }}
Cash + ST investments
{{ frCashStr }}
Total burn
{{ frBurnTotalStr }}
Operating · CapEx
{{ frBurnStr }}
{{ frCapexStr }}
{{ frRunwaySub }}.
{{ b.lab }}
Operating cash flow by fiscal year · bar height is magnitude, colour is sign
Dilution · diluted share count, year over year
{{ d.lab }} {{ d.val }}
What today's price assumes
Enterprise value
{{ frEvStr }}
Market cap
{{ frMcapStr }}
Net debt
{{ frNetDebtStr }}

The market is already paying this enterprise value for a business with no commercial revenue. That number is what today's price assumes the milestone map below will deliver. It is not a target, and Aperto does not counter it with one.

Milestone map · the company's own words
{{ m.cat }} {{ m.title }} {{ m.tf }}

“{{ m.quote }}”

Quoted verbatim from the 10-K filed {{ frFilingDate }}. Aperto extracts, it does not editorialise.

{{ frScenarioNote }}

{{ whatOverview }}

No published value The lenses disagree too widely for one figure

{{ whatRefusalReason }}

Primary lens · one disagreeing view, not an answer
{{ whatPrimaryLensIvStr }}
{{ whatPrimaryLensName }}
Full lens range
{{ whatRangeStr }}
span across every lens in the cluster below
Valuation lenses
{{ l.mathHead }}

{{ l.mathIntro }}

Growth fade · per year
{{ g.year }} {{ g.mu }}
{{ row.label }} {{ row.note }} {{ row.value }}
{{ l.mathFormula }}
{{ anchorRowLabel }} {{ anchorIvStr }} {{ cvNote }}
{{ whatRfStr }}
Where each lens lands
{{ l.model }}{{ l.tierLabel }} · {{ l.role }} {{ l.ivStr }}
{{ ffAxis0 }} {{ ffAxis1 }} {{ ffAxis2 }} {{ ffAxis3 }} {{ ffAxis4 }}
Reverse DCF

Solved backwards from today's price, the market is implying about {{ revMarketStr }} annual free-cash-flow growth. The forward growth reference sits near {{ revBaseStr }}. The gap is the judgement you're handed: is the market too cautious, or the forward view too generous?

0% market {{ revMarketStr }} {{ revBaseShort }} {{ revBaseStr }} {{ revScaleMaxStr }}
Market-implied growth
{{ revMarketStr }}
{{ revBaseLabel }}
{{ revBaseStr }}
Custom Valuation

Pick a method, edit the inputs, and formulate your valuation. {{ valAsOfStr }}

{{ m.label }} {{ m.reason }}
{{ valMethodLabel }} Bear Base Bull
{{ r.label }} {{ r.hint }} {{ c.unit }} {{ c.loStr }}{{ c.hiStr }} {{ c.engineStr }}
{{ o.label }}
{{ o.valueStr }}
{{ o.upsideStr }}
{{ o.upsideStr }}
{{ o.badMsg }}
Fix the inputs first Lock a thesis first Use these in my thesis · Pro {{ valThesisProReason }}

{{ valThesisMsg }}

{{ e.msg }}

{{ valReadLine }}

{{ valEngineLine }}

{{ valEngineNote }}

{{ valStandingNote }} Saved to your account. Saved in this browser only. Could not save to your account, kept in this browser.

Valuation inputs load with the full report.

Sampling around your base-column inputs across {{ mcN }} runs, today's price of {{ mcPriceStr }} sits at roughly the {{ mcPricePctileStr }} percentile of modelled intrinsic values{{ mcPriceSide }}. The spread is the uncertainty the single number hides.

Sampling around your base-column inputs across {{ mcN }} runs gives the spread below. There is no current price to place on it. The spread is the uncertainty the single number hides.

No run gave a usable value, so there is no distribution to show. Check the base column above.

{{ mcAxisLoStr }} price median {{ mcAxisHiStr }}
{{ mcCounterStr }}
10th pct (bear)
{{ mcP10Str }}
Median
{{ mcP50Str }}
90th pct (bull)
{{ mcP90Str }}

{{ mcSetAsideStr }}

Your inputs have changed since this run. Run again to update it.

Bars inside the 10th–90th percentile are highlighted. Each run puts your base-column inputs through the same cash flow model as the column above, with growth, discount rate, terminal growth and starting cash flow drawn around your figures. Net debt and share count stay as you entered them.
Simulations per run{{ mcSimsStr }}
500 · fast20,000 · smooth

More simulations smooth the distribution at the cost of speed. Adjust, then re-run.

Run a Monte Carlo simulation to see the full distribution of intrinsic values around your base-column inputs above. Not one number, but the whole range of outcomes and where today's price falls within it.

Simulations{{ mcSimsStr }}
500 · fast20,000 · smooth

{{ mcNoSeedsMsg }}

Intrinsic value at every pairing of discount rate and terminal growth, holding growth and margin at base. Green sits above today's price, red below. The bordered cell is the published base case. Two assumptions, the whole answer space.

{{ c }} {{ r.label }} {{ c.ivStr }}
rows = WACC · cols = terminal growth below priceabove price

Macro reaches a valuation through two doors: the discount rate (Fed policy, risk appetite, credit conditions) and the cash flows (demand, margins). The first three sliders recompose WACC from the engine's own decomposition. The fourth shocks the cash-flow path. Terminal growth stays untouched: that lever is in the table above, not this dial.

{{ d.label }}{{ d.absStr }}
{{ d.valStr }}
Published model: {{ whatRfStr }}
Macro-adjusted intrinsic value
{{ macroIvStr }}
{{ macroDeltaPubStr }}
Discount rate
{{ macroWaccBaseStr }} → {{ macroWaccNewStr }}
{{ macroDWaccStr }}
vs today's price
{{ macroUpsideStr }}
{{ macroCfStr }}
Scenario arithmetic on the published model, read off the engine's own sensitivity grid. Not a forecast.
✦

Custom valuation is a paid feature

Upgrade to run your own bear, base and bull cases across six valuation methods, with sliders seeded from the engine's own numbers, and the DCF distribution, sensitivity matrix and Macro Dial beside them.

Paid plans include running your own bear, base and bull cases across six valuation methods, with sliders seeded from the engine's own numbers, and the DCF distribution, sensitivity matrix and Macro Dial beside them.

{{ upgradeClosedNote }}

Every figure above, as a live spreadsheet

Earnings

Next earnings {{ ecsNextDate }} {{ ecsNextTag }} Consensus EPS {{ ecsNextEps }} Consensus revenue {{ ecsNextRev }}

No upcoming earnings date on file.

{{ c.title }}

{{ ecsCredit }}

WHEN When is the timing in our favour? {{ railWhenLine }}
Timing verdict
{{ railWhenLine }}

{{ whenVerdictRead }}

This is a flag, not a ranking. It marks a cohort. It does not order the names outside it.

Relative strength
{{ g.label }} {{ g.sub }} {{ g.value }} {{ g.note }} {{ g.ptsStr }}
What else the layer looked at
{{ w.mark }} {{ w.label }} {{ w.purpose }} {{ w.reading }} {{ w.block }}
{{ f.label }} {{ f.sub }}
{{ f.value }}
{{ f.label }} {{ f.sub }}
{{ f.value }}

{{ whenChecksLine }} The verdict above does not come from this count.

HOW How would we know our thesis is wrong? {{ railHow }}

{{ howNarr }}

{{ howReviewLine }}
{{ howReviewLine }}
{{ h.n }} {{ h.name }} {{ h.verdict }}

{{ h.note }}

Thesis triggers {{ trigAsOf }}
{{ tg.chip }}
{{ tg.label }} Current: {{ tg.now }}  |  {{ tg.thrLabel }}: {{ tg.thr }}
➔ {{ tg.impact }}
{{ tg.t }}
Filing-review items, not statement-checkable
{{ tm.src }} {{ tm.c }} ➔ {{ tm.im }}
•{{ tm.t }}

Checked against the latest filings when this report was built.

Educational reference points, not advice.

SynthesisAI generated content may contain inaccuracies.

How the findings fit together

{{ np.t }}

Price Chart
Chart unavailable. TradingView could not be reached.

Chart data by TradingView. Quotes may be delayed.

Loading price history…
Price history unavailable.

{{ historyStampV }}

Figures as reported by TradingView

{{ a.sev }} {{ a.test }}
{{ a.headline }}
{{ a.meta }}

{{ a.rationale }}

Automated news matching against this company's falsification tests. Verify against the primary source and the test's criterion yourself. This is a pointer, not advice.

Every figure in this report is traceable to a primary filing. This is sourced evidence for you to interpret, not advice.

{{ p.label }} {{ p.source }} {{ p.date }}
FORUM What are other readers saying?
Your stance
Conviction {{ discConvictionVal }} / 5

{{ discFromThesisText }}

{{ discComposerError }}

These posts are reader opinion, not Aperto's analysis. Each one is timestamped against the share price at the time it was posted.

Loading posts…

Could not load posts.

{{ discEmptyText }}

{{ post.author }} {{ post.stanceLabel }} · {{ post.convictionStr }} {{ post.createdStr }} edited {{ post.priceStr }}

{{ post.tombstoneText }}

{{ post.editError }}

{{ post.bodyText }}

Delete this post?

{{ post.replyError }}

{{ r.author }} {{ r.createdStr }} edited {{ r.priceStr }}

{{ r.tombstoneText }}

{{ r.editError }}

{{ r.bodyText }}

Delete?
Watchlist

Active Coverage

{{ systemDateStr }} · {{ utcClockStr }}
⠿Hold a row to reorder. Quotes may be delayed.
US market {{ marketStatusStr }}
{{ marketVerbStr }}
{{ marketCountdownStr }}
{{ marketNoteStr }}
{{ slotMeterLabel }} {{ tierLabel }}
{{ slotUsedNum }} / {{ slotTotalStr }}
{{ upgradeClosedNote }}
Company Price Why Moat Intrinsic Value
(Range)
When How Synthesis
{{ r.logoEl }} {{ r.name }} {{ r.identSub }} {{ r.price }} {{ r.chg }} {{ r.whyBand }}{{ r.why }} {{ r.quality }} {{ r.iv }} {{ r.mos }} {{ r.ivRange }} {{ r.whenWord }} {{ r.how }}{{ r.how }} {{ r.synth }}
⠿ {{ r.logoEl }} {{ r.name }} {{ r.identSub }} Not filed
Funds
⠿ {{ f.logoEl }} {{ f.name }} {{ f.sub }} Not filed
Exchange-Traded Fund Price Why Quality Value When How Synthesis
{{ f.logoEl }} {{ f.name }} {{ f.sub }} {{ f.price }}{{ f.chg }} {{ f.why }}{{ f.whyMax }} {{ f.quality }} {{ f.iv }} {{ f.whenWord }} {{ f.how }}{{ f.how }} {{ f.synth }}

{{ watchFooterStr }}

This week in your watchlist
{{ digestWeekLabel }}
Your watchlist is empty. Follow a company to track what changes in its quality, valuation, timing and thesis checks week over week.
Comparing your watchlist with last week…
{{ d.tag }}
{{ d.head }}
{{ d.body }}

{{ whyExplainShort }}

A factual diff between each company’s latest report and its report from at least five days earlier: evidence to interpret, not alerts to act on.

✓
Nothing to compare this week. A company appears here once it has a report. If a scoring update came between its latest report and the one before it, the comparison waits until both use the same scoring.
✦
The weekly digest is a Pro feature

Pro compares each company you follow with its report from at least five days earlier and lists what moved in quality, valuation, timing and the thesis checks, as evidence to interpret rather than alerts to act on.

When paid plans open, Pro will compare each company you follow with its report from at least five days earlier and list what moved in quality, valuation, timing and the thesis checks, as evidence to interpret rather than alerts to act on.

{{ upgradeClosedNote }}

Earnings calendar

{{ ecalMonthLabel }}

{{ ecalIcsMsg }}

Loading earnings dates.

{{ ecalNoCompaniesMsg }}

{{ ecalFundsMsg }}

{{ ecalPartialMsg }}
Dashed ring: date is expected Dotted ring: awaiting results Solid ring: results are out
{{ dw.label }}
{{ lg.el }} {{ c.moreStr }}

{{ ecalAgendaTitle }}

{{ ecalUpEmptyMsg }}

{{ ecalDateEmptyMsg }}

{{ ecalEmptyMsg }}

{{ ecalNextHint }}

{{ ecalRepTitle }}

{{ ecalRepEmptyMsg }}

{{ ecalNoDataMsg }}

{{ ecalCredit }}

{{ heatTitle }}

{{ heatZoomHint }}

{{ heatUpdatedPrefix }}{{ heatCountdownBody }}{{ heatUpdatedSuffix }}

{{ heatCoverageStr }}

Economic calendar

Data by TradingView.

Market regime
{{ regimeRiskLabel }} {{ regimeTrendLabel }} {{ regimeConfirmLabel }}
Reading the engine’s latest snapshot…
The regime snapshot is temporarily unavailable.

{{ regimeLineRecession }} {{ regimeLineRecessionNote }} · {{ regimeLineFroth }} {{ regimeLineFrothNote }} · {{ regimeLineTrend }}

{{ regimeSummary }}

{{ ln.title }} {{ ln.band }} {{ ln.bandNote }}
{{ ind.label }} {{ ind.detail }} {{ ind.valueStr }}
{{ w.title }}

{{ w.body }}

Where the numbers come from
Reading Indicator Source
{{ src.reading }} {{ src.indicator }} {{ src.source }}

{{ regimeSourceNote }}

{{ regimeFootnote }}

Market moves

We only surface major moves:

a) Broad market: flagged when the day move of the SPY is ≥ 1.5%. SPY's typical day is ~0.8%, and 1.5% is roughly two standard deviations from this mean. Only ~5% of days exhibit such a move.

b) A watchlist stock: flagged when the move exceeds 2× its own 20-day average daily range, with a floor of 4%. A relative approach is adopted to account for the differing volatilities of each stock.

Checking the market and your watchlist…
No major moves in the broad market or your watchlist today.
Live market data is temporarily unavailable. We couldn't reach the data source.
{{ m.label }} {{ m.name }}
{{ m.pctLabel }}
AI generated content may contain inaccuracies.
•{{ drv }}
{{ m.disclaimer }}
Decision journal

Judge the decision, not the result.

Every thesis you lock before reading a report lands here. The point isn't whether the trade worked. It's whether your process was sound. Strong process with a poor outcome is just variance. Thin process with a good outcome is luck you can't repeat.

Process × outcome
Weak outcome · strong outcome →
Lucky Earned Deserved loss Unlucky {{ e.ticker }}
← thin process rigorous process →
Logged
{{ journalCountStr }}
Average process score {{ journalAvgStr }}
How to read it

Your decisions sit on the horizontal axis the moment you lock them. That's process, fully in your control. They rise or fall vertically only as outcomes resolve over time.

your locked decision
illustrative example
Logged decisions
{{ e.name }} {{ e.exchange }}: {{ e.ticker }} {{ e.stanceLabel }} · {{ e.convStr }}
Locked {{ e.dateStr }}

“{{ e.text }}”

Falsified if: {{ e.pre }}

Process {{ e.procLabel }}
Outcome
mock · demo
Thesis health {{ e.healthLabel }} {{ e.healthSummary }}
Your falsification condition: {{ e.preStatus }}
Locked parameters
“{{ jp.condition }}” {{ jp.word }}
{{ jp.meta }}
Calibration · conviction vs outcome

Over time this plots how confident you were against how the decision actually resolved. Well-calibrated investors sit near the diagonal: high conviction earning strong outcomes, low conviction on the ones that didn't work. Your decisions appear on the conviction axis the moment you lock them and rise or fall as outcomes resolve.

poor outcome · strong outcome →
well-calibrated → {{ p.ticker }}
← low convictionhigh conviction →
Concepts you've met
{{ conceptsMetCount }} / {{ conceptsTotal }} framework terms encountered as you read
{{ cm.t }}

Hover any dagger-marked term in a report to add it here. This is a quiet map of the vocabulary you've built. No streaks, no points, just coverage.

✎

No decisions logged yet.

Open any company, switch to Deep Dive, and lock your thesis before the analysis reveals. Each locked thesis becomes a journal entry here, scored on process, tracked on outcome.

Falsification feed

The evidence against you, on purpose.

Once a thesis is locked, confirmation bias does the rest. This feed inverts it: every locked parameter that can be measured is re-checked each weekday against the newest quarterly statements, and library watchdog headlines that press on a thesis land here too. Nothing on this page validates you.

{{ feedSummary }}

Aperto
Re-checking your locked parametersSweeping fresh statements for breachesCollecting watchdog headlines
{{ fa.sevLabel }} {{ fa.testName }} AI generated content may contain inaccuracies.
{{ fa.dateStr }}
{{ fa.title }}
{{ fa.detail }}
Read the source ↗
{{ fa.resLabel }}
⊘

Nothing challenging your theses yet.

Lock a thesis with falsification parameters and each weekday the sweep checks the measurable ones against the newest quarterly statements. A quiet feed means no threshold has been crossed.

Portfolio

What you actually hold.

Positions weight the loop by real exposure. Each tile is sized by market value and coloured by thesis health: your locked conviction, blended with the engine's margin of safety and timing read. A drift badge means the Falsification Feed has evidence against a position you still hold.

{{ portSummary }}

Add or update a position

A repeat entry for the same ticker replaces the holding. Averaging across lots is your arithmetic, not ours. Leave shares and cost blank to record a thesis-only holding. The heatmap will still colour it by conviction, just without a dollar value.

Import from a brokerage CSV

Paste an exported positions CSV (Fidelity, Schwab, Robinhood, IBKR, or any export with a symbol, quantity and cost column). Columns are matched by header keyword, not exact name. The header row is required.

{{ portImportSummary }}

{{ portImportSkippedStr }}

Aperto
Fetching your positionsPricing each holding liveWeighing thesis health
Thesis Heatmap area = market value · colour = conviction + margin of safety + timing · ⚠ = active drift

Grey tiles have no locked thesis or library report to read health from. Positions without a live quote are sized at cost basis. Thesis-only positions (no shares recorded) get a flat placeholder area. They carry no market value to size a tile by.

PositionSharesAvg costPriceMarket valueP&L
{{ pr.entryStr }} {{ pr.sharesStr }} {{ pr.costStr }} {{ pr.priceStr }} {{ pr.valueStr }} {{ pr.pnlStr }}
Total {{ portTotalValue }} {{ portTotalPnl }}

Prices via the live quote proxy. May be delayed. Educational reference only, never advice. Positions are your own assertions and never leave your account.

▦

No positions recorded yet.

Add what you hold and the Thesis Heatmap will weight every locked thesis, margin of safety and drift alert by your real exposure.

Candidate Discovery

Screen the market in plain language.

Describe what you are looking for. Aperto reads the request into explicit filters and shows them back to you, then runs them over the covered library where the engine has real scores, and over the wider market where it does not. No score is ever invented for a company without a report.

◎

Discovery is a Pro tool.

Natural-language screening over the covered library and the wider market, with the parsed filters and data provenance shown on every result.

{{ upgradeClosedNote }}

Try
Or build a screen directly, no language model involved
Cap Moat
Sector
Aperto
Reading your request into filtersScreening the covered libraryScanning the wider market
{{ discErrorMsg }}
How your request was readAI generated content may contain inaccuracies.

{{ discExplain }}

{{ ch.label }}

{{ whyExplainShort }}

In the covered library {{ discCovSummary }}
CompanySectorCapPriceMoatMOSWHENHOW
{{ cr.name }} {{ cr.sector }} {{ cr.capStr }} {{ cr.priceStr }} {{ cr.moatStr }} {{ cr.mosStr }} {{ cr.whenStr }} {{ cr.howStr }}

Margin of safety is re-derived from the live price against each report's intrinsic value. Sorted by margin of safety.

No covered company matches every filter. The engine never relaxes a filter silently. Loosen the request, or request a report for one of the candidates below.
Data trace: {{ discTraceTicker }}
{{ tg.source }}{{ tg.asOf }}

{{ tg.note }}

{{ tf.k }} {{ tf.v }}
Beyond the library
CompanySector · IndustryCapPriceBeta
{{ dr.ticker }}{{ dr.name }} {{ dr.sectorInd }} {{ dr.capStr }} {{ dr.priceStr }} {{ dr.betaStr }}

{{ discCandNote }}

Educational reference only, never advice. Screening data by FMP. Quotes may be delayed.

Theme Explorer

Start from an idea, not a ticker.

Describe a trend or a structural thesis in plain language. Aperto breaks it into an upstream, midstream and downstream value chain, then grounds every company against a live profile and the scores the engine has already earned. Any name it cannot verify is dropped, never invented.

Try
Conversational dissection is a Plus feature. Browse the curated themes below, or upgrade to start from any idea you can put into words. Conversational dissection is a Plus feature. Browse the curated themes below.{{ upgradeClosedNote }}
Aperto
Reading the thesisMapping the value chainGrounding every name against live profiles
{{ exploreErrorMsg }}
Conversational dissection is a Plus feature. {{ upgradeClosedNote }}
How Aperto read it

{{ exRestated }}

{{ c.t }}
Aggregate MOS
{{ exMosStr }}
Theme pure-play
{{ exPpStr }}
WHY score
{{ exWhyStr }}
{{ exWhyNote }}
Timing (WHEN)
{{ exWhenStr }}

{{ exCovStr }}

{{ ln.label }}
{{ g.role }}
Chokepoints · structural
{{ cp.title }}
{{ cp.reason }}

Flagged by arithmetic alone: a link that grounds to two or fewer verifiable public companies, or where one name carries at least 65% of the link's market value.

Harvest phase · monetizers
{{ exMonetizers }}
CapEx phase · builders
{{ exBuilders }}
Devil's advocate
{{ d.risk }}
{{ d.detail }}
Systemic risk · falsification hooks
{{ sr.head }}
{{ sr.detail }}

{{ exSystemicNote }}

{{ exDeferredNote }}

Educational reference only, never advice. The value chain is generated, then every constituent is validated against a live profile before it is shown.

Aperto
Opening the themeRanking scored constituentsPulling live market figures
The theme could not be loaded. Check the connection and try again.

{{ themeName }}

{{ themeNarrative }}

{{ themeRankNote }}

Scored by the engine
CompanySectorCapPriceMoatWHYMOSWHENHOW
{{ tc.name }} {{ tc.sector }} {{ tc.capStr }} {{ tc.priceStr }} {{ tc.moatStr }} {{ tc.whyStr }} {{ tc.mosStr }} {{ tc.whenStr }} {{ tc.howStr }}
{{ upgradeClosedNote }}

{{ whyExplainShort }}

Not yet scored
CompanySector · IndustryCapPrice
{{ tu.ticker }}{{ tu.name }} {{ tu.sectorInd }} {{ tu.capStr }} {{ tu.priceStr }}

{{ themeUncovNote }}

Educational reference only, never advice. Theme membership is curated and validated against live company profiles, not generated on the fly.

Or start from a curated theme.

Each theme is a curated narrative about where durable value might sit, with its constituents ranked by the scores the engine has already earned. Companies without a report show live market figures only. A score is never invented to make a theme look complete.

Aperto
Loading curated themesCounting engine coverageArranging the narratives
Themes could not be loaded.
◫

ETF Research is a Pro tool.

Fund portfolios from primary SEC filings, with the engine's scores aggregated across every holding Aperto has covered and an honest account of what it has not.

{{ upgradeClosedNote }}

Aperto
Locating the fund's SEC filingParsing reported holdingsWeighing engine coverage
{{ etfErrorMsg }}
{{ etfTicker }} {{ etfName }} {{ etfMetaStr }}
{{ etfAsOfStr }} CACHED: SEC UNREACHABLE
{{ etfCoveragePctStr }} of fund net assets scored by Aperto

{{ etfCoverageNote }}

{{ upgradeClosedNote }}

Fund analysis is coming soon. Holdings, weights and prices are shown below.

WHY · business quality
{{ etfAggWhy }}
{{ etfAggWhyNote }}
MOS · margin of safety
{{ etfAggMos }}
WHEN · timing
{{ etfAggWhen }}
HOW · thesis status by weight
{{ hc.label }}

Weighted by each holding's share of fund net assets, renormalised over the covered slice only.

Covered holdings
HoldingWeightQualityMOSWHENHOW
{{ ec.name }} {{ ec.weightStr }} {{ ec.whyStr }} {{ ec.mosStr }} {{ ec.whenStr }} {{ ec.howStr }}
{{ upgradeClosedNote }}
None of this fund's holdings are in the covered library yet, so there is nothing honest to aggregate. Request reports for its largest holdings and the exposure fills in once they're covered.
Top holdings · green dot = scored
{{ et.label }} {{ et.sub }} {{ et.weightStr }}
Sector weightings (fund-reported)
{{ es.label }}

Educational reference only, never advice. Holdings per the fund's SEC N-PORT filing. Fund metadata by FMP. Figures may be delayed.

{{ etfrLogoEl }}

{{ etfrName }}

{{ etfrLiveMeta }} CACHED: SEC UNREACHABLE
AI generated content may contain inaccuracies. Written by Anthropic's Claude and not checked before publication. For research and education, not financial advice.

Hidden from readers. Only admins can see this report until it is approved.

Fund analysis is coming soon. Holdings, weights and prices are shown below.

Fund profile
{{ pr.label }}: {{ pr.text }}
{{ etfrProfileFootnote }}
Fund profile

{{ etfrOverview }}

Top Holdings Green dot = scored by Aperto
{{ th.name }} {{ th.weightStr }}
Sector weightings (fund-reported)
{{ sr.label }} {{ sr.weightStr }}
{{ etfrPortfolioAsOf }}
Commit your thesis before you read

What do you think, before the engine tells you?

Commit to your view on this fund before the data does. Aperto locks and timestamps your logic, then runs the critique.

Your stance
Conviction {{ thesisConv }} / 5
In one line, why?
Pre-mortem: what would prove you wrong? (optional)
Your locked thesis
Locked {{ committedDateStr }}

“{{ committedText }}”

Falsified if: {{ committedPre }}

{{ committedThesisLine }}
Executive summaryAI generated content may contain inaccuracies.

{{ etfrExecHeadline }}

{{ b.text }}
Catalysts
{{ c.n }}{{ c.text }}
Key risks
{{ c.n }}{{ c.text }}
WHY How strong is this fund? {{ etfrQuality }}/100

The five-pillar business-quality read, weighted across every holding Aperto has scored. Each pillar states the share of fund assets its score is drawn from, so a thin slice never masquerades as the whole fund.

{{ etfrWhyNote }}

AI generated content may contain inaccuracies.
{{ pl.name }} {{ pl.covBadge }} wt {{ pl.weightStr }} {{ pl.scoreStr }}

{{ pl.analysis }}

Synthesis: the fund's coreAI generated content may contain inaccuracies.

{{ etfrSynthesis }}

Fund construction
{{ cf.k }} {{ cf.v }}
Moat mix (by weight)
{{ mc.label }}
WHAT What is the fund's margin of safety? {{ etfrSafety }}

A fund has no single intrinsic value, but it has a weighted margin of safety. {{ etfrMethodology }}

Weighted margin of safety
{{ etfrSafety }}
implied fund IV {{ etfrFundIv }} vs price {{ etfrPrice }}
Valuation coverage
{{ etfrValCov }}
of assets carry a numeric IV · {{ etfrFrontierW }} pre-revenue
Correlated stress band
{{ sb.label }}
{{ sb.valStr }}

{{ etfrStressNote }}

Switch to Deep Dive for the per-lens valuation aggregation across the covered holdings.

Valuation lensHoldingsCoverageWeighted MOS
{{ lr.name }} {{ lr.nStr }} {{ lr.covStr }} {{ lr.mosStr }}

Each lens aggregates only over the covered holdings where that model ran. Lens coverage differs because the engine selects a different model set per company.

Macro Dial common shocks, re-aggregated per holding

Rate and risk shifts hit every holding at once. Aperto pushes each shock through each covered company's own WACC decomposition and engine sensitivity grid, then re-weights the result into a live fund safety score.

The interactive fund Macro Dial is a Pro tool.
{{ upgradeClosedNote }}
{{ sl.label }} {{ sl.valStr }}
Fund safety at these settings
{{ etfrDial.safetyStr }}
{{ etfrDial.deltaStr }}
published {{ etfrDial.baseStr }}
{{ etfrDial.waccStr }}
{{ etfrDial.covStr }}
WHEN When is the timing in our favour? {{ etfrWhenProfile }}

{{ etfrWhenRationale }}

{{ etfrWhenRsRead }}

{{ f.label }} {{ f.sub }}
{{ f.value }}
What else the layer looked at
{{ w.mark }} {{ w.label }} {{ w.purpose }} {{ w.reading }} {{ w.block }}
HOW How would we know our thesis is wrong?

A fund has no single thesis verdict. It holds a distribution. This is the covered slice's HOW verdict by weight, then each holding's open falsification tests, heaviest position first.

Verdict by weight (covered slice)
{{ hl.label }} {{ hl.pctStr }}
{{ hn.weightStr }} {{ hn.flaggedStr }}{{ hn.testsStr }} {{ hn.verdict }}
{{ upgradeClosedNote }}

Switch to Deep Dive for each covered holding's open falsification tests.

Price Chart
Chart unavailable. TradingView could not be reached.

Chart data by TradingView. Quotes may be delayed.

Fund WHEN levels drawn on the price series
Loading price history…
Price history unavailable.

{{ historyStampV }} The implied fund IV is the price scaled by the covered-slice safety score. Educational reference, not advice.

{{ etfrProvNport }}

Constituent report runs (input freshness)
{{ pv.label }} {{ pv.weightStr }}
{{ upgradeClosedNote }}
Sources
  • {{ ep.label }}

{{ etfrProvPriceBasis }} Educational reference only, never advice.

Account

Your Profile

Your profile picture {{ acctInitial }}
{{ acctAvatarError }}
{{ acctName }}
{{ acctUsernameLine }}
{{ acctEmail }}
Signed in
Refer a friend
Share your link. A friend has to sign up with it and then subscribe to Pro before anything is credited. A friend on a monthly plan earns you one free month, and a friend on an annual plan earns you three, up to a free year in total.
{{ referralCode }}
{{ referralLink }}
{{ referralUsageNote }}
{{ referralPendingNote }}
Current plan
{{ acctTierLabel }}
{{ acctSlotMeter }}
Decision journal
{{ acctThesisCount }}
theses locked to date
Account Settings
Full name
Username
{{ acctUsernameNote }}

3 to 20 characters: letters, numbers and underscores, at least one letter. It can't start, end, or double up on an underscore. Changeable once every 30 days.

{{ unameHintText }}
{{ unameError }}
Email address
A confirmation link will be sent to the new address.
Password
Preferences
Timezone
Cookies and analytics
Motion
Trusted browsers
A removed browser needs a new sign-in code next time, and changing your password removes all of them.
Loading…
{{ tbError }}
No browsers are trusted on this account. You can trust one when you enter a sign-in code.
{{ bw.label }}
{{ bw.added }} {{ bw.last }} {{ bw.expires }}
Plan & billing
{{ acctPlanNote }}
Student status
{{ acctStudentNote }}
Scheduled for deletion on {{ delDateLabel }}
Your account and everything in it are still intact. Cancel any time before that date and nothing is lost.
Delete your account
Your watchlist, journal, theses, and reports are removed after 30 days. You can cancel at any point during that window.

Aperto never uses your email for marketing, nor shares it with third parties.

Moderation

Open reports

Loading…
Nothing here
This page is for the Aperto team.
{{ modError }}
Queue is clear
No open reports right now.
{{ r.ticker }} by {{ r.author }} · {{ r.createdStr }}
{{ r.countLabel }}
{{ r.body }}
Reason: {{ r.reason }}
Note: {{ r.note }}
Post already removed Remove this post? It will be hidden from everyone.
Plans

Scale your coverage, not your education.

Basic gets full-depth reports on 3 companies and the education tools. Student Pro and Pro open every report in the library and add a wider watchlist and the agentic tools.

{{ payClosedNote }}
BasicCurrent
Learn the framework on the library
S$0/mo
Free, forever
3 companies for the lifetime of your account. Companies can't be removed or swapped.
Student ProCurrentBest valueNot open yet
{{ plusTagline }}
{{ plusBlurb }}
{{ plusPrice }}{{ plusCycle }}
{{ plusBilled }}
{{ plusNote }}
{{ plusTrialLine }}
✓ School email verified
ProCurrentNot open yet
The full agentic research toolkit
{{ proBlurb }}
{{ proPrice }}{{ proCycle }}
{{ proBilled }}
{{ proTrialLine }}
{{ proNote }}
What you get Basic Student Pro Pro
{{ m.label }} {{ m.b }} {{ m.p }} {{ m.r }}

{{ pricingFootnote }}

The Terms of Service must be accepted at checkout.

Student Pro needs a verified school email. We send a code to your university address and never use it for anything else. If your institution isn’t recognised, tell us via Feedback and we’ll add it.

Methodology

Built for analytical transparency

Aperto's framework is built from each company's reported financial statements and its latest annual report (10-K) filed with the SEC. Inputs are shown at each step, so you can follow the reasoning from the statements to the conclusion.

Glass-box architecture

A glass box, not a black box. Valuation figures trace back to disclosed inputs, the key valuation assumptions are visible, and Student Pro and Pro readers can change them. The quality scores are judgments written by an AI model against a published rubric, so a re-run can score slightly differently. (Aperto is Italian for open. Transparency is the posture of the tool.) You reason. The engine shows its reasoning back.

Aperto's reports are written with AI (Anthropic's Claude) from public filings and market data and are checked before publication, and they may still contain errors.

WHY

Why is this a business worth owning?

Five weighted sections: economic moat (35%), business quality (25%), management (20%), competitive landscape (15%), industry & macro (5%). Each is scored 0–3 across sub-categories and rolled into a 0–100 composite. Judgment-based sub-categories use Bear / Base / Bull scenarios (40/40/20) to surface conditionality. The composite plus a strength-and-durability gate set the moat rating.

Read the full WHY rationale →
WHAT

What do we think this business is worth?

Up to ten valuation lenses are screened, and the structurally appropriate ones are kept and weighted by how tight their Monte Carlo distributions are. When the lenses disagree, the engine leans more on one primary lens. The shift starts at a 25% spread and is complete at 45%. Above 60% no single value is published and the range and the reason are shown.

Read the full WHAT rationale →
WHEN

When is the timing in our favour?

Two admissibility gates, support location and a fresh momentum turn, decide whether there is a setup to time at all. One measured read, whether a name is outperforming both the broad market and its sector, decides whether that setup is aligned. Eight further checks are displayed for context and set nothing. It is a timing discipline only and is deliberately silent on exits. It never fires when the margin-of-safety criterion isn't met.

Read the full WHEN rationale →
HOW

How would we know our thesis is wrong?

Eight tests read the latest filings when the report is built and look for signs that the thesis has failed: demand, moat, reinvestment runway, capital structure, regulatory licence, management response, key-person, and precedent. A job that runs each weekday also checks news headlines against those tests. Verdicts are noise, watch condition, or structural invalidation. It explicitly rejects valuation overshoots, earnings misses, technical breakdowns and macro mood as sell signals.

Read the full HOW rationale →
WHY · Business Quality & Moat

Five-Pillar Business Quality Assessment

Before price ever enters the conversation, the WHY layer asks whether the company can compound. It scores five distinct pillars across their sub-categories on a tight 0–3 scale. These judgments roll into a 0–100 composite, passing the final rating through a strict strength and durability gate.

The Five Structural Pillars

The 35 / 25 / 20 / 15 / 5 weighting is not arbitrary. It ranks the five drivers by how durably each one governs long-run returns, so the things that decide a decade outweigh the things that decide a quarter.

Economic Moat35%
The width and durability of competitive advantage is the single largest determinant of whether excess returns persist. Everything else either feeds the moat or is downstream of it, so it carries the most weight.
Business Quality25%
The financial fingerprint that proves the moat is real: cash conversion, returns on invested capital, and balance-sheet resilience. A claimed moat that never shows up in the numbers is a story, not an advantage.
Management20%
Capital allocation compounds or erodes the advantage over time. It is weighted heavily, but below the moat itself, because even excellent operators cannot outrun a structurally weak business.
Competitive Landscape15%
The rate at which the moat is being attacked by entrants, substitutes, or pricing pressure. This layer measures the structural durability of an advantage, rather than just its current existence.
Industry & Macro5%
Industry conditions are the least company-specific driver, and the one most heavily reflected in price already. We deliberately keep it at 5% to stop a macro narrative from dominating a bottom-up business judgment.

Asymmetric Scenario Weighting

Judgment-based sub-categories are scored under three scenarios rather than one point estimate, and the weighting is deliberately downside-aware: the bear and base cases together carry 80%. The asymmetry encodes a simple investing truth: protecting against the downside matters more than reaching for the upside. It also surfaces conditionality, showing exactly which assumptions the thesis depends on.

Bear
40%
Base
40%
Bull
20%

The Moat Gate

The final moat rating is not the composite alone. A company must clear a strength-and-durability gate as well. A high score built on an advantage that is wide but fragile, or durable but thin, is held back. Width without durability fades, and durability without width never earned excess returns to begin with.

The Objectivity Tier System

Sub-categories are not scored arbitrarily. Each is assigned to one of three operational layers, which determines how much human judgment is even permitted to touch it:

Data-VerifiedTier 1
Fixed metrics extracted directly from financial feeds that cannot be manually overridden.
AnchoredTier 2
Hard quantitative thresholds that establish strict scoring ceilings, filled out with contextual evidence.
Judgment-BasedTier 3
Qualitative, structural assessments evaluated across multi-scenario probability weights.

Sector-Specific Adjustments

Aperto dynamically morphs its scoring criteria depending on the business model rather than treating all sectors as a generic block. It isolates the specific core metrics that actually govern each industry, whether that is ARR / NRR for Technology-SaaS, process-node cycles for Semiconductors, regulatory constraints for Banks, or statutory gearing and distribution caps for REITs, so a company is always measured against the yardstick its own sector rewards.

Composite Verdict Bands & Foundations

The 0–100 composite maps to five descriptive bands:

80–100Exceptional business
60–79High quality
40–59Adequate quality
20–39Weak quality
0–19Insufficient foundation
Analytical foundations
✓Morningstar Economic Moat Framework (Dorsey)
✓Porter's Five Forces of Competitive Strategy (Porter)
✓Empirical Capital Allocation Benchmarks (Buffett)
✓Prospect Theory & Loss Aversion Weighting (Kahneman & Tversky)
✓The Margin of Safety Principle (Graham)
WHAT · Intrinsic Value

Multi-Model Parallel Architecture

WHAT runs a bank of independent valuation engines in parallel, keeps only the ones structurally appropriate for the business, and synthesises what survives into a single defensible intrinsic-value range, never a false-precise point estimate.

The Quality Gate: Upstream Prerequisites

The WHAT layer is programmatically locked unless the upstream WHY layer registers a YES or WARN analytical readiness classification. Aperto enforces a strict structural sequence: a business must possess a viable, trackable data foundation before mathematical valuation models are permitted to run.

The valuation lenses

Each engine is purpose-built for a different corporate architecture. The framework screens them all, then discards the ones that don't fit the company in front of it.

Multi-Stage FCFF
Constructs unlevered Free Cash Flow to Firm profiles, discounting them via a Hamada-adjusted Weighted Average Cost of Capital that dynamically reprices the cost of equity as the company's capital structure changes over time. Base cash flow now separates maintenance capital spending from growth spending, so a heavy reinvester is not punished as though every dollar of expansion were a permanent drain.
Multiples Monte Carlo
Runs full probabilistic distributions over last twelve months and Forward peer metrics rather than using arbitrary point estimates, capturing true sector valuation spreads.
Dividend Discount Model
Maps cash return profiles for asset-light, mature, or yield-centric corporate architectures, matching dividend payout transitions to long-run growth constraints.
Excess Returns
A residual income model that isolates true economic profit. It applies an automated Return on Equity (ROE) decay function that systematically erodes supernormal returns down to the cost of equity over a five-year horizon.
Frontier (milestone-anchored)
The honest path for pre-revenue companies: when no cash-flow or peer engine can produce a defensible anchor, the framework says so instead of faking one, and re-anchors the analysis on cash runway, dilution, what today's price assumes, and the filing's own quoted milestone map.
Sum-of-the-Parts (SOTP)
Simulates multi-segment business models using a Cholesky decomposition joint simulation matrix to capture real pairwise risk correlations across distinct operating units.

The Valuation Operational Matrix

Each engine is routed to the architecture it fits, guarded by an institutional safeguard, and defends against a specific retail mistake.

Valuation Engine Target Architecture Institutional Backend Safeguard Retail Fallacy Avoided
Multi-Stage Free Cash Flow to FirmCash-generative compounders with an evolving capital structureHamada-adjusted Weighted Average Cost of Capital re-priced at each projection stageApplying one static discount rate to a company whose leverage is changing
Multiples Monte CarloPeer-rich sectors with observable comparablesFull probabilistic distributions across Last Twelve Months and Forward peer setsAnchoring on a single arbitrary price-to-earnings point estimate
Dividend Discount ModelAsset-light, mature, yield-centric architecturesDividend payout transitions matched to long-run growth constraintsValuing a yield vehicle on high-growth-stock assumptions
Excess ReturnsFinancials and book-value-driven businessesAutomated Return on Equity decay toward the cost of equity over five yearsAssuming supernormal returns on equity persist forever
Sum-of-the-PartsMulti-segment conglomeratesCholesky decomposition joint simulation across correlated unitsSumming segments as though their risks were independent
Frontier (milestone-anchored)Pre-revenue and pre-cash-flow companiesCash runway, dilution trajectory, what today's price assumes, and the filing's own milestone map. No blended point estimateForcing a DCF onto a business with no cash flows and calling the output an anchor

Dynamic Algorithmic Synthesis

Aperto rejects naive model averaging. The engine evaluates active valuation branches through a cross-validation framework, applying data-richness penalties and a model independence check to mathematically discount redundant or data-starved models, producing a single, defensible intrinsic value range.

Margin of Safety

Aperto shows prices 15% and 25% below its value estimate. The 15% level is the conventional margin of safety used by value investors. It is a fixed figure and is not fitted to this engine.

The Rigorous Equity Bridge

The backend builds an Equity Bridge by stripping out net debt, preferred stock and minority interests. Per-share values use the diluted share count reported by Financial Modeling Prep.

Expectations Investing via Implied Reversals

Rather than relying purely on speculative future projections, Aperto runs an automated Reverse DCF loop. It reverse-engineers the current market price to isolate the exact growth rates, operating margins, and capital efficiency metrics the market is currently pricing into the stock, so you can judge for yourself whether those performance hurdles are realistic.

Optionality, Surfaced Not Hidden

When the market price sits above the entire surviving lens cluster, Aperto does not quietly stretch a model to reach it. It labels the gap for what it is: the premium the market is ascribing to optionality the cash-flow models cannot yet see, such as an unproven new business line or a call on a future market. You get to decide whether that optionality is worth paying for, rather than having it smuggled into a single point estimate.

WHEN · Technical Timing

The Fundamental-First Sequence

WHEN is the final mathematical filter in the pipeline. It never predicts. It reads price action only for companies that have already cleared the WHY and WHAT gates.

The Non-Predictive Timing Filter

The WHEN layer represents the final mathematical filter in the WHY → WHAT → WHEN pipeline. Aperto enforces a strict fundamental-led hierarchy: long-term investment conviction rests entirely on structural business quality and intrinsic value, while technical analysis serves purely as a secondary operational filter. It runs exclusively on assets that have already cleared the fundamental quality gate (WHY) and the intrinsic value gate (WHAT) to report whether price action currently shows a qualified support level and a fresh momentum turn.

Multi-Axis Indicators

The engine scans ten checks across seven blocks on a rigorous Monthly, Weekly then Daily structural cascade. Two of those blocks are the admissibility gates and two are the relative-strength legs that set the verdict. The checks are not added up, and nothing is ranked on a total.

Moving Average Convergence Divergence (MACD): the momentum trigger. A signal-line crossover within the last 8 trading days marks the turn (window calibrated v2.5).
Relative Strength Index (RSI): the overbought and oversold gauge that confirms momentum divergences.
Average Directional Index (ADX): the trend-conviction reading that separates a real move from drift.
Average True Range (ATR): the volatility envelope that scales support zones to current conditions.
Chicago Board Options Exchange Volatility Index (VIX): the macro regime overlay, contained versus elevated at the 20 level.

The Multi-Timeframe Structural Cascade

To eliminate short-term market noise traps, Aperto enforces structural alignment down the time horizon: Monthly charts isolate structural macro floors, Weekly charts confirm intermediate trend-reversal signatures, and Daily charts are used for short-term timing.

Statistical Calibration Matrix

The four timing labels, what decides each one, and what each one does not claim. None of them comes from a total, and no two of them are separated by a measured return difference except aligned against the rest.

Alignment Tier What decides it Confluence Definition What this does not claim
ALIGNEDBoth gates cleared, both RS legs firedPrice is at a qualified support floor, a fresh momentum turn has fired, and the name is outperforming both the broad market and its sector on the 52-week and 26-week windows. This is the one distinction confirmed on held-out time.A breakout near local resistance does not meet the support gate.
DEVELOPINGBoth gates cleared, RS not alignedThere is a setup to time, but relative strength is neutral, weak, or could not be measured. Those three read differently on the card and are grouped together, because only the aligned boundary is measured.A partial relative-strength result is not a graded quality tier.
SUPPORT LEVEL, NO MOMENTUM TURNSupport gate cleared, momentum gate did notPrice sits at a qualified support floor but no momentum turn has fired yet. This is the absence of a setup, not a bad one.Price at support with no momentum turn has not shown that the decline has stopped.
INSUFFICIENTSupport gate did not clearPrice is not at a support confluence, so the layer has nothing to time. Conditional on a fresh momentum cross this is the common case: roughly three quarters of cross bars fail the support gate.A signal with no structural level under it is not counted.

Empirical Calibration Constraints

Only one boundary has held up on data the model did not see: the relative-strength read behind ALIGNED. The other labels describe what the indicators show and make no claim about returns. Broader environmental conditions like the Average Directional Index (ADX) and the Volatility Index (VIX) are treated as non-scored regime overlays to isolate macro market friction.

Programmatic Risk Controls

The execution engine actively monitors data integrity. For recent corporate listings or asset spin-offs lacking deep cyclical price metrics, the backend raises a strict HISTORY-LIMITED guardrail that suppresses arbitrary technical scores until a statistically viable tracking window is established.

HOW · Thesis Invalidation

How is a structural thesis invalidated?

HOW is a fundamentals-only check. Eight tests read the latest filings when the report is built and look for signs that the thesis has failed. A job that runs each weekday also checks news headlines against those tests. It exists to answer a single question. Has the original thesis actually broken? Everything about it is built to hold that line and to tune out the noise that so often gets mistaken for a real answer.

The Fundamentals-Only Invalidation Gate

The HOW layer executes a pure, fundamentals-only thesis-invalidation framework built for long-horizon compounding assets. Aperto completely rejects price-based selling mechanisms like technical stop-losses or short-term valuation overshoots, as these fluctuations routinely mean-revert without changing corporate cash-generation capacity. The platform deliberately drops traditional retail trading terminology, shifting the focus away from reactionary selling and toward disciplined thesis-invalidation checks.

The Eight Core Diagnostic Stress Tests

Each test targets one load-bearing pillar of a typical long thesis. If a pillar cracks, the thesis is in question. If the headlines are loud but every pillar holds, it isn't.

1. Demand & Market Fit: Checks core top-line growth deviations against underlying industry addressable market velocity.
2. Moat & Competitive Degradation: Checks structural margin compression, market share churn, and return on capital erosion.
3. Reinvestment Runway: Evaluates capital allocation shifts, scaling friction, and marginal return on invested capital decay.
4. Capital Structure Realignment: Audits leverage ratios, debt-servicing coverage thresholds, and cost of capital spikes.
5. Regulatory & Political License: Scans legislative headwinds, compliance cost escalations, and antitrust interventions.
6. Management Response Accuracy: Compares executive forward guidance track records against realized operational delivery.
7. Cultural & Key-Person Vulnerability: Checks high-level executive turnover, governance fractures, and institutional talent loss.
8. Precedent Invalidation Signatures: Correlates current balance sheet flags against historical corporate failure patterns.

The Analytical Diagnostic Ledger

Each of the eight tests ends in one of four states. The table shows what each state means and what it does not claim.

Diagnostic Status What the status means What this does not claim
PASSThis test has not flagged a concern.A price drawdown alone does not change the status.
WATCHA metric is drifting toward concern. Specific metrics are flagged in the report.A flagged metric is not a verdict that the thesis has failed.
FAILIn tests 1 to 5, the original WHY thesis is open to re-examination from scratch. A FAIL in tests 6 to 8 sets the overall result to WATCH CONDITION.A FAIL describes the thesis tests and says nothing about what to do with a holding.
DATA-GATEDThe test could not be evaluated from the filings and metrics available when the report was built. It counts as neither a pass nor a fail.A test that could not be evaluated says nothing about the quality of the business.

What a FAIL means

In tests 1 to 5, the original WHY thesis is open to re-examination from scratch. A FAIL in tests 6 to 8 sets the overall result to WATCH CONDITION.

About

Why I built Aperto.

Ryan Wee at the summit of Mount Fuji
Ryan Wee
Singapore. Aperto started as a personal project over the summer and is still run by one person.
Summit of Mount Fuji, 3,776m

Understanding a company properly takes a long time. That is the whole problem, and it is not a problem of access.

The information is not hidden. Filings, transcripts, peer data, price history: it is public, and most of it is free. What is missing is synthesis. It arrives in fragments, from different places, in different formats, and assembling those fragments into something you can actually reason from is the slow part. That is the work almost nobody has time for, and it is the work that decides whether you understand a business or merely recognise its name.

You can ask an AI to tell you about a company and get a fluent answer in seconds. What you will not get is scrutiny. It will summarise. It will not press on whether a moat is structural or just a good quarter, whether a margin trend is a trend or an accounting artefact, whether management has earned the benefit of the doubt. Those are the questions that separate a good business from a well-described one, and they only get answered if something is built to ask them every single time.

Aperto's reports are written with AI (Anthropic's Claude) from public filings and market data and are checked before publication, and they may still contain errors.

So I started building what I wanted to read. Four questions, asked in the same order about every company, scored against the same published standards, with the reasoning shown rather than asserted. You are meant to be able to check the work, and to disagree with it.

What Aperto will not do

Aperto does not know your circumstances and gives no personal advice. It does not know your horizon or what you can afford to lose, and it never asks.

What it does is make reasoning visible. Here is what was measured. Here is the standard it was measured against. Here is where it landed, and why. The judgment stays with you, which is the only place it can honestly sit.

A report has done its job if it leaves you better able to argue with it.

For research and educational purposes only. Nothing on Aperto is financial advice, and Aperto is not a licensed financial adviser.

✦

{{ gateTitle }}

{{ gateMsg }}

{{ gateVoteCount }}

Requests show us which companies readers want. They don’t start a report, and nothing is charged.

{{ upgradeClosedNote }}
Delete account

This schedules your account for deletion.

Your watchlist, decision journal, theses, portfolio positions, and generated reports will be permanently removed after 30 days. Nothing is deleted today.

You'll be signed out. Signing back in at any point in the next 30 days lets you cancel and keep everything.

Type {{ delAccountEmail }} to confirm.
We can't read the email address for this account right now, so the confirmation can't be completed. Reload the page and try again.
Pick a username

Create your username

{{ unameHintText }}
{{ unameError }}

Thanks -- it's been sent.

A moderator will look at it.

Report this post
{{ discReportError }}
Aperto

A structured equity research engine built to sharpen your analytical skills and strip away market noise.

For research purposes only. Not investment advice.

Company
Coverage
Financial data from Financial Modeling Prep and SEC EDGAR filings. Prices may be delayed. Charts by TradingView.
Tell us what you think

Found something confusing, broken, or missing? Feature requests and criticism are both welcome.

Or email us directly at hello@aperto.dev.

Thanks, that's with us.

{{ fbSentNote }}

{{ fbError }}

© 2026 Aperto