Module 1: Alternative data in finance
View study sheet (PDF) View SQL cheat sheet (PDF)
This session introduces alternative data as an asset class and situates ALT/FNDATA's auction and resale pricing dataset within it. Students move from the abstract question of what counts as alternative data to a concrete, hands-on look at a real institutional dataset: 15M+ transaction records spanning watches, jewelry, gems, handbags, fine art, works of art, wine and whisky, automobiles, and more, drawn from more than 850 vendors, with history reaching back to 1949. By the end of the class, students will have queried live records in a no-code sandbox and connected what they found to a broader conversation about how professional investors source signal outside of traditional filings and price feeds.
Target course(s) and level
Introduction to alternative data, fintech survey, or investments elective. Suitable for undergraduate juniors and seniors, MBA students, and graduate finance students with no prior data or coding background required.
Learning objectives
By the end of this session, students will be able to:
- Define alternative data and distinguish it from traditional market and fundamental data sources.
- Describe at least three categories of alternative data used by institutional investors, with auction and resale pricing data as one example.
- Explain what a physical luxury asset transaction record contains and why point-in-time correctness (using the actual sale date) matters for research integrity.
- Query a live dataset in a no-code SQL environment to answer a simple pricing question.
- Articulate one hypothesis for how alternative pricing data could complement or contradict a signal from public equity markets.
Prerequisites
None. This module assumes no prior exposure to SQL, databases, or alternative data. A short in-class primer on basic SQL syntax (SELECT, WHERE, GROUP BY) is built into the session outline for students who have never written a query.
Materials and access needed
- Sandbox access at sandbox.altfndata.com. Each student self-registers with a work or school email address; approval is automatic, so there is no lead time to build into the syllabus.
- Projector or screen share for the instructor demo.
- Optional: the Evaluation Guide at docs.altfndata.com/use-cases.html as an assigned pre-read, since it frames the same categories of alternative data used by working analysts.
- An instructor class API key is not necessary for this module; every demo and homework task runs in the sandbox.
Session outline (75 minutes)
- 0 to 10 min: What is alternative data. Instructor-led discussion of traditional data (filings, price feeds, analyst estimates) versus alternative data (satellite imagery, web traffic, credit card panels, and transactional pricing data).
- 10 to 20 min: Where auction and resale data fits. Introduce ALT/FNDATA's coverage: watches, jewelry and gems, handbags, fine art, works of art, wine and whisky, automobiles, motorcycles, aircraft, design, coins, and books, with pre-sale estimates, realized prices, and vendor and brand detail on every record.
- 20 to 30 min: Sandbox orientation. Students register and open the sandbox together; instructor walks through the SQL editor, sample datasets, coverage browser, and data dictionary tabs.
- 30 to 55 min: Guided demo. Instructor runs the in-class demo below live, narrating each query and result.
- 55 to 70 min: Student exploration. In pairs, students run one of the demo queries against a different brand or category and note what changes.
- 70 to 75 min: Wrap-up and homework assignment.
In-class demo (sandbox-first, no code)
- Open sandbox.altfndata.com and sign in with your registered account.
- Click the coverage browser tab. Type "watches" into the category filter and note the number of brands and vendors covered.
- Click the data dictionary tab and locate the fields designer, model, sale_date, usd_price_decimal, and sale_estimates_high_usd_price. Read each field's description aloud to the class.
- Open the SQL editor tab. Select the watches dataset from the table dropdown.
- Paste the first query from the "Datasets and queries used" section below into the editor and click Run.
- Point out the columns returned: designer, item_title, sale_date, usd_price_decimal. Ask students to identify the highest and lowest realized prices in the result set.
- Modify the query's designer filter to a different brand (for example, change "Rolex" to "Patek Philippe") and re-run it. Compare row counts and price ranges between the two brands.
- Open the pre-built charts tab and select a bar chart of average usd_price_decimal by designer for the watches dataset, to show the same comparison visually.
- Use the CSV export button to download the result set, and explain that this is the same export path students will use for the homework assignment.
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).
Sandbox SQL editor query:
SELECT designer, item_title, sale_date, usd_price_decimal
FROM all_watches_data
WHERE designer LIKE '%Rolex%'
AND status = 'sold'
ORDER BY usd_price_decimal DESC
LIMIT 25;
Second query, used in step 7 to compare a second brand:
SELECT designer, item_title, sale_date, usd_price_decimal
FROM all_watches_data
WHERE designer LIKE '%Patek Philippe%'
AND status = 'sold'
ORDER BY usd_price_decimal DESC
LIMIT 25;
Discussion questions
- What distinguishes alternative data from traditional financial data, and why has demand for it grown among institutional investors?
- What are the risks of relying on alternative data that is unevenly collected or has gaps in coverage across time or geography?
- Why does the sale_date field matter for point-in-time correctness, and what would go wrong in a research process that used the wrong date?
- Auction and resale pricing data reflects what buyers actually paid for physical goods. What does this tell you that a survey of stated brand preference would not?
- Every record in this dataset carries a status of sold or unsold. Why is it important to capture unsold lots rather than only successful sales?
- If you were an analyst covering a luxury goods company, what would you want to know from auction and resale pricing data that the company's own quarterly filings would not tell you?
- What ethical or privacy considerations, if any, apply to a dataset built from public auction records rather than private consumer data?
Homework assignment
Each student picks one brand covered in the watches, jewelry, or handbags data and writes a two-page memo answering: how many sold lots for that brand are in the dataset, what is the highest and lowest realized price observed, and what does the spread between realized prices and high estimates suggest about demand for that brand. The memo must include at least one sandbox SQL query (pasted as an appendix) and one exported chart or table as a screenshot. Deliverables: a PDF memo of no more than two pages, the appended query, and the exported visual. Grading criteria: correct use of the sandbox (25 percent), accuracy of the reported figures (25 percent), quality of the interpretation connecting the figures to a demand argument (35 percent), and clarity of writing (15 percent).
Going deeper
Key terms
- Alternative data: information used for investment or research decisions that falls outside traditional filings, price feeds, and analyst estimates.
- Point-in-time data: a record that reflects only information knowable as of a specific date, such as the actual sale_date of a lot rather than the date it was later added to a database.
- Sandbox: the no-code, browser-based environment at sandbox.altfndata.com where students query live data without an API key.
- Pre-sale estimate: the auction house's forecast of a lot's likely price range before the sale, captured in sale_estimates_high_usd_price.
- Realized price: the actual amount paid for a lot, captured in usd_price_decimal, recorded only when status is sold.
- Vendor: the auction house or marketplace that listed the lot, useful for understanding how concentrated a result set is in a single seller.
- Coverage browser: the sandbox tab that shows how many brands and vendors exist within a category before a student writes a single query.
- Revealed preference: what a buyer's actual purchase demonstrates about their willingness to pay, as distinct from a stated preference expressed in a survey.
Common pitfalls
- Assuming a designer LIKE '%Rolex%' filter catches every relevant row. Partial-name matches can pull in unrelated listings or miss lots where the designer field is entered differently than expected, so always sanity-check the row count against the coverage browser.
- Dropping the status = 'sold' filter and treating asking prices or unsold lots as if they were prices buyers actually paid.
- Reading one quarter, or one sale, as evidence of a trend. A single record-setting lot says something about that lot, not about the whole brand.
- Confusing sale_estimates_high_usd_price, which is a forecast set before the sale, with usd_price_decimal, which is what was actually paid.
- Treating a result pulled from one or two vendors as representative of the entire market for a brand, without checking how many different auction houses contributed to the row count.
- Comparing two brands' price ranges without first checking whether one query returned far fewer rows than the other.
Additional queries to explore
Count of sold lots by vendor for a single brand, to see how concentrated the results are in a small number of auction houses:
SELECT vendor, COUNT(*) AS lots_sold
FROM all_watches_data
WHERE designer LIKE '%Rolex%'
AND status = 'sold'
GROUP BY vendor
ORDER BY lots_sold DESC;
The same brand-style comparison, but in the handbags data instead of watches, to see whether the dataset's category coverage looks similar:
SELECT designer, item_title, sale_date, usd_price_decimal
FROM all_handbags_data
WHERE designer LIKE '%Hermes%'
AND status = 'sold'
ORDER BY usd_price_decimal DESC
LIMIT 25;
A narrower look at one model line within a brand, using the model field to see whether price ranges vary widely within a single designer:
SELECT model, item_title, sale_date, usd_price_decimal
FROM all_watches_data
WHERE designer LIKE '%Rolex%'
AND model LIKE '%Daytona%'
AND status = 'sold'
ORDER BY sale_date DESC
LIMIT 25;
Extension activities
- Repeat the in-class demo entirely within the jewelry or handbags data instead of watches, and note whether the same brand comparison holds up in a different category.
- Use the vendor breakdown query above to check whether a brand's highest realized prices cluster at one or two auction houses, and discuss what that concentration means for how confidently a student can generalize from the sandbox results.
- Bring in one outside source, such as a news article about a brand's recent retail performance, and compare it informally to what the sandbox shows for that brand's auction activity.
Connections to other modules
Module 2, data science and SQL, picks up these same fields and teaches the aggregate and ratio techniques, the quarterly demand index and pricing power, that this module only introduces conceptually. Module 3, consumer and luxury economics, builds on the revealed-preference idea raised here to formalize pricing power and sell-through as brand-health metrics. Module 13, data ethics, quality, and coverage bias, returns to the vendor-concentration and coverage-gap pitfalls raised above in more depth.