Module 4: Investments and equity research

Lesson video · Investments and equity research (5:07)

View study sheet (PDF) View SQL cheat sheet (PDF)

Teaching this module? A facilitator guide adds a preparation checklist, timing cues, discussion guidance, slides, and a printable PDF.

This session teaches students to use auction and resale pricing data as a supplementary signal in equity research on listed luxury goods companies. The dataset maps individual brands to a stock ticker through a company mapping covering more than 2,000 public and private companies, with S&P 500 sector mapping, so a query on a single watch brand can be tied directly to the parent group's equity. The centerpiece of the session is a real, verifiable divergence: over one weekend in June, Phillips' New York watch sale became the highest-grossing watch auction in United States history at 75.8 million dollars with every lot sold, while Movado, a listed watch retailer, fell about four percent the same week. Students use this case to practice a skill equity researchers use routinely, checking whether a private-market signal confirms or contradicts what public markets are pricing in.

Target course(s) and level

Equity research practicum, investments, or security analysis course. Suitable for MBA students and graduate finance students, ideally those who have taken or are concurrently taking a fundamentals-based valuation course.

Learning objectives

By the end of this session, students will be able to:

  1. Explain how the brand-to-ticker mapping in the dataset connects private secondary-market transactions to a specific public equity.
  2. Retrieve and interpret auction and resale records for brands belonging to a single listed parent company.
  3. Articulate the Phillips-Movado divergence as a concrete example of saleroom activity and public equity price movement telling different stories in the same week.
  4. Distinguish between a confirming signal (alt data and equity price move together) and a diverging signal (they move apart), and describe what each might imply for a research thesis.
  5. Identify the limitations of using auction pricing data as an equity research input, including coverage gaps and the fact that auction sales represent a small slice of a luxury company's total revenue.
  6. (Extension) Retrieve the same brand-level data programmatically via the production API for integration into a research model.

Prerequisites

An introductory course in equity valuation or security analysis, including familiarity with basic financial statement concepts (revenue, gross margin) and stock price data. No prior exposure to alternative data is assumed. The optional code extension assumes basic Python familiarity.

Materials and access needed

  • Sandbox access at sandbox.altfndata.com, self-registered with a work or school email, auto-approved.
  • Projector or screen share for the instructor demo.
  • The coverage browser tab, used to confirm which brands map to which stock_ticker values before the demo.
  • For the optional extension only: an instructor class API key requested from info@altfndata.com, and the downloadable Python client (altfndata_client.py) or tutorials notebook (altfndata_tutorials.ipynb) at docs.altfndata.com.

Session outline (90 minutes)

  • 0 to 15 min: Introduce the brand-to-ticker mapping concept and the Phillips-Movado case as the session's anchor example.
  • 15 to 20 min: Sandbox orientation and confirmation that students can locate the stock_ticker field in the data dictionary.
  • 20 to 40 min: Guided demo, retrieve watch auction records for a single listed group and review realized prices around the case-study window.
  • 40 to 55 min: Guided demo, compare that group's auction activity to the same window on a public price chart the instructor brings in separately.
  • 55 to 70 min: Small-group exercise, students pick a different brand-to-ticker pair and pull the equivalent auction records.
  • 70 to 85 min: Class discussion, groups report whether their brand's auction activity appears to confirm or diverge from recent public price movement.
  • 85 to 90 min: Wrap-up and homework assignment.

In-class demo (sandbox-first, no code)

  1. Open sandbox.altfndata.com, sign in, and select the watches data table from the SQL editor dropdown.
  2. Open the coverage browser tab and search for a brand belonging to a listed parent group. Confirm the stock_ticker value shown for that brand.
  3. Return to the SQL editor and run the first guided query below, which pulls sold watch lots for that brand ordered by sale date.
  4. Point out the sale_date and usd_price_decimal columns and ask students what a research analyst would want to know from this table alone, before bringing in any equity price data.
  5. Introduce the Phillips-Movado case: describe the record-setting 75.8 million dollar Phillips New York sale with every lot sold, alongside Movado's roughly four percent equity decline the same week, and explain that the saleroom and the public market told opposite stories that week.
  6. Run the second guided query, filtering to stock_ticker to show every brand under a single parent group in one result set.
  7. Open the pre-built charts tab and chart sold-lot count by quarter for the group, to visualize auction activity independent of any single week's headline number.
  8. Ask students to identify, from the chart, whether auction activity for this group looks steady, growing, or thin, and to note that any single-quarter comparison should be treated cautiously given how recent records continue to be added to the dataset.

Datasets and queries used

Dataset: watches data (documented fields: designer, model, item_title, sale_date, usd_price_decimal, sale_estimates_high_usd_price, status, vendor, stock_ticker).

Query 1, brand-level sold lots ordered by date:

SELECT designer, item_title, sale_date, usd_price_decimal, stock_ticker
FROM all_watches_data
WHERE designer LIKE '%Movado%'
  AND status = 'sold'
ORDER BY sale_date DESC
LIMIT 50;

Query 2, every brand under a single parent ticker:

SELECT designer, item_title, sale_date, usd_price_decimal
FROM all_watches_data
WHERE stock_ticker = 'CFR.SW'
  AND status = 'sold'
ORDER BY sale_date DESC
LIMIT 100;

Optional API extension, equivalent request body to query 2 (POST /v1/tables/all_watches_data/query, header X-API-Key):

{
  "fields": ["designer", "item_title", "sale_date", "usd_price_decimal"],
  "filters": [
    {"field": "stock_ticker", "op": "eq", "value": "CFR.SW"},
    {"field": "status", "op": "eq", "value": "sold"}
  ],
  "sort": [{"field": "sale_date", "direction": "desc"}],
  "limit": 100
}

Discussion questions

  1. In the Phillips-Movado case, the auction result and the equity price moved in opposite directions in the same week. What are two competing explanations for why that could happen?
  2. Auction sales represent a small fraction of a luxury company's total revenue. Given that, how much weight should an equity researcher place on auction pricing data as a standalone signal?
  3. What would make you more confident that a brand's auction activity is a leading indicator of consumer demand rather than a lagging or unrelated signal?
  4. How does the brand-to-ticker mapping change the way you would research a multi-brand conglomerate compared to a single-brand public company?
  5. What data would you want in addition to auction records to build a complete research thesis on a luxury goods equity?
  6. If a brand's pricing power in the auction market were rising while its parent company's reported revenue were flat, what questions would that raise for a research analyst?
  7. What are the risks of treating a single headline auction result, such as one record-setting sale, as representative of a brand's broader demand?

Homework assignment

Each student selects a listed luxury goods company with at least one brand represented in the watches or handbags data, retrieves that brand's auction records using the sandbox SQL editor, and writes a one-page research note evaluating whether the auction data confirms, contradicts, or is inconclusive relative to that company's most recent reported results (using publicly available equity and financial data the student sources independently). The note must include the SQL query used, the exported result set, and an explicit statement of the note's limitations, including the small share of revenue that auction sales typically represent for a diversified luxury group. Grading criteria: correct use of the brand-to-ticker mapping (25 percent), soundness of the confirm-or-diverge argument (35 percent), honest treatment of the analysis's limitations (25 percent), and clarity of the research note (15 percent).


Going deeper

Key terms

  • Brand-to-ticker mapping: the dataset's linkage of an individual designer or brand to the stock_ticker of its public parent company, covering more than 2,000 public and private companies.
  • Confirming signal: a case where auction or resale activity for a brand moves in the same direction as that brand's public equity price.
  • Diverging signal: a case, like the Phillips-Movado week, where saleroom activity and public equity price move in opposite directions.
  • Coverage gap: a limitation where a brand or period is thinly represented in the dataset, which can look like weak demand when it actually reflects incomplete data collection.
  • Revenue mix: the share of a company's total revenue that comes from channels the auction data can actually observe, relevant because secondary-market auction sales are typically a small slice of a diversified luxury group's business.
  • Saleroom: shorthand for the physical or online auction venue where a lot is sold, as distinct from a company's retail or wholesale channel.
  • Parent group: a public or private company that owns one or more individual brands, several of which may share a single stock_ticker in the dataset.

Common pitfalls

  1. Treating the Phillips-Movado divergence as a permanent thesis rather than as a single data point to be monitored against further weeks of activity.
  2. Assuming a brand's auction lot count or realized prices scale proportionally with the parent company's total reported revenue, when auction sales are a small and uneven slice of that revenue.
  3. Mixing categories under one ticker without noticing it. A parent group's stock_ticker may cover brands across watches, jewelry, and fine art, so a query meant to isolate one division should filter by designer or category, not by ticker alone.
  4. Reading a single quarter's sold-lot count for a brand as a growth or decline signal, when recent periods are still being populated and are not yet stable enough for period-over-period comparison.
  5. Mistaking a brand's thin representation in the dataset for weak market demand, when it may simply reflect which auction houses and marketplaces the brand's lots tend to pass through.
  6. Under-specifying the designer filter, a misspelling or a name variant the field does not use, and drawing a conclusion from a much smaller sample than the brand's true auction activity.

Additional queries to explore

Pricing power computed alongside the sold-lot count for every brand under a single parent ticker, to see whether demand strength is concentrated in one brand within the group or spread across several:

SELECT
  designer,
  COUNT(*) AS lots_sold,
  APPROX_PERCENTILE(
    CASE WHEN sale_estimates_high_usd_price > 0
         THEN usd_price_decimal / sale_estimates_high_usd_price END, 0.5
  ) AS pricing_power
FROM all_watches_data
WHERE stock_ticker = 'CFR.SW'
  AND status = 'sold'
GROUP BY designer
ORDER BY lots_sold DESC;

The same parent-ticker query run against a second category, such as jewelry, to check whether a conglomerate's demand signal looks consistent across the categories it participates in:

SELECT designer, item_title, sale_date, usd_price_decimal
FROM all_jewels_gems_data
WHERE stock_ticker = 'CFR.SW'
  AND status = 'sold'
ORDER BY sale_date DESC
LIMIT 100;

An API request equivalent to the parent-ticker pricing power query, useful for a student who wants to pull the group's brand list programmatically before building a research model:

{
  "fields": ["designer", "item_title", "sale_date", "usd_price_decimal", "sale_estimates_high_usd_price"],
  "filters": [
    {"field": "stock_ticker", "op": "eq", "value": "CFR.SW"},
    {"field": "status", "op": "eq", "value": "sold"}
  ],
  "sort": [{"field": "sale_date", "direction": "desc"}],
  "limit": 100
}

Extension activities

  • Identify a second brand-to-ticker pair beyond Movado and Richemont's CFR.SW, and build the same confirm-or-diverge comparison against that company's public price history over the same period.
  • Widen the case study's time window from a single weekend to a full quarter, and discuss whether the Phillips-Movado divergence held up, reversed, or faded once more auction activity and equity price data accumulated.
  • Have students bring in one piece of outside financial data they source independently, such as a company's most recent quarterly revenue by channel, and use it to sharpen the research note's discussion of revenue mix.

Connections to other modules

Module 3, consumer and luxury economics, is where pricing power is first defined and computed, before this module applies it to a specific equity research question. Module 2, data science and SQL, supplies the aggregate and ratio techniques used in the queries above. Module 12, data engineering and the API, extends the optional API extension in this module into a full programmatic research workflow.