0:00
/
Preview

AI Bootcamp (Lesson 14): Layer On EDGAR, FRED, and a Scoring Layer

A four-week joint experiment for non-technical investors. Today: Filing freshness, dated macro, and explicit weights.

Join the Latticework AI Bootcamp and progress at your own pace. Participation is open to members and paid subscribers.

A note before we begin: This is the 14th lesson in a 16-lesson experiment. I am doing every lesson alongside you, on the same tools, with the same constraints. Some lessons will land cleanly. Some will lead to dead ends and need rework. We’ll figure out what works, together.

If you are catching up, here’s what came before today’s lesson:

  • Intro: Build Your Own Investment Idea Engine

  • Lesson 1: How LLMs Work, and How to Defend Against Hallucinations

  • Lesson 2: Prompt Patterns That Outperform Casual Prompting

  • Lesson 3: Tools, Agents, and Structured Output

  • Lesson 4: SEC EDGAR, the Primary Source

  • Lesson 5: FRED Macro and Sector Data, the Free Read

  • Lesson 6: FMP API Key and the First Checked Data Pull

  • Lesson 7: Other Data Sources, and Idea Engine Formats

  • Lesson 8: Spaces, Projects, and Connectors

  • Lesson 9: Memory, Sub-Agents, and Parallel Research

  • Lesson 10: Wide Research for Screening at Scale

  • Lesson 11: Iterating Prompts and Structured Idea Write-Ups

  • Lesson 12: Claude Code, and Building Your First Useful Script

  • Lesson 13: Git, GitHub, and a Real Screener on FMP


Why This Matters for Investors

In the last lesson the engine started looking like a usable tool. We have a private repository, a dot env file that holds the FMP key, a dot gitignore file that protects it, and a working FMP screener that produces a CSV of names that pass our hard criteria.

Today we do three things on top of that scaffolding, and each one is a step from “screen” toward “engine we trust.”

  • We add an EDGAR filing-freshness layer so the screen knows when each name last filed an annual report.

  • We add a FRED macro-context layer so the screen carries the dated values of the rates, inflation, and labor series we actually want in the same row as the company data.

  • We add a 0-to-100 scoring layer on top, with the weights living in a config file we can edit without rewriting the script.

The non-coder’s instinct on a day like today may be to flinch at the word scoring. We are not building a quant model. We are not estimating expected returns. We are making our preferences explicit, in numbers we can audit, on a screen we can defend. The default weights are a starting point, not a recipe. The point of putting the weights into a config file is the same point as putting the API key into the dot env file: the script becomes a thing we can change without fear, because the part that changes most often is the part that is easiest to find.

The filing-freshness layer is the most underrated of the three. A screen that does not know how old each name’s most recent 10-K is can quietly recommend a company whose disclosures stopped in 2024. That is not a value find. That is a name we should be running an extra audit on, not adding to the engine’s output without comment. The FRED layer is the smallest of the three but the one that earns its keep the fastest: the day the 10-year yield breaks out of the range we built our valuation assumptions around, the screen’s macro columns surface that fact in the same row as the company we are evaluating, with the observation date attached so we can audit the value against the FRED page directly.

By the end of today, the CSV we wrote in the last lesson has two new columns, one new ranking column, and a tiny config file alongside the screener that names what we think a good investment idea looks like.

Let’s launch into today’s lesson.

This post is for paid subscribers