<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>ptolemy</title><description>Essays on financial data engineering — SEC filings, screeners, and the database problems behind market metrics.</description><link>https://ptole.my/</link><item><title>A Company Is Not a Stock</title><link>https://ptole.my/blog/a-company-is-not-a-stock/</link><guid isPermaLink="true">https://ptole.my/blog/a-company-is-not-a-stock/</guid><description>A stock screener needs separate identities for issuers, securities, listings, and quotes. Here is the data model and Python resolver that prevent silent double counting.</description><pubDate>Thu, 26 Sep 2019 00:00:00 GMT</pubDate></item><item><title>A Stock Ranking Is a Database Transaction</title><link>https://ptole.my/blog/a-stock-ranking-is-a-database-transaction/</link><guid isPermaLink="true">https://ptole.my/blog/a-stock-ranking-is-a-database-transaction/</guid><description>Why a stock ranking algorithm needs snapshot isolation, deterministic arithmetic, and atomic publication to produce reproducible results.</description><pubDate>Thu, 19 Dec 2019 00:00:00 GMT</pubDate></item><item><title>A Stock Screener Is a Database Problem</title><link>https://ptole.my/blog/a-stock-screener-is-a-database-problem/</link><guid isPermaLink="true">https://ptole.my/blog/a-stock-screener-is-a-database-problem/</guid><description>Build a fast stock screener with columnar arrays, vectorized Python, packed bitmap indexes, partial sorting, immutable snapshots, and reproducible latency benchmarks.</description><pubDate>Thu, 24 Jan 2019 00:00:00 GMT</pubDate></item><item><title>Adjusted Prices Rewrite History</title><link>https://ptole.my/blog/adjusted-prices-rewrite-history/</link><guid isPermaLink="true">https://ptole.my/blog/adjusted-prices-rewrite-history/</guid><description>Adjusted close prices are derived data. Build an immutable corporate-action ledger, exact split factors, point-in-time adjustment views, and reproducible total-return series.</description><pubDate>Thu, 25 Jul 2019 00:00:00 GMT</pubDate></item><item><title>A DCF Is a Numerical Stability Problem</title><link>https://ptole.my/blog/dcf-numerical-stability/</link><guid isPermaLink="true">https://ptole.my/blog/dcf-numerical-stability/</guid><description>A production DCF model must quantify terminal value sensitivity, tie growth to reinvestment, and refuse unstable fair-value rankings.</description><pubDate>Thu, 23 Jan 2020 00:00:00 GMT</pubDate></item><item><title>Enterprise Value Is Easy Until You Read the Filing</title><link>https://ptole.my/blog/enterprise-value-is-easy-until-you-read-the-filing/</link><guid isPermaLink="true">https://ptole.my/blog/enterprise-value-is-easy-until-you-read-the-filing/</guid><description>A point-in-time enterprise value implementation for stock screeners, including debt, cash, diluted shares, ASC 842 lease liabilities, SEC filing lag, and Python validation rules.</description><pubDate>Thu, 21 Mar 2019 00:00:00 GMT</pubDate></item><item><title>Financial Ratios Need a Type System</title><link>https://ptole.my/blog/financial-ratios-need-a-type-system/</link><guid isPermaLink="true">https://ptole.my/blog/financial-ratios-need-a-type-system/</guid><description>Most stock screeners store financial values as floats. A production ratio engine needs units, periods, currencies, scopes, capital bases, and formula contracts.</description><pubDate>Thu, 21 Nov 2019 00:00:00 GMT</pubDate></item><item><title>Financial Statements Have Versions</title><link>https://ptole.my/blog/financial-statements-have-versions/</link><guid isPermaLink="true">https://ptole.my/blog/financial-statements-have-versions/</guid><description>A point-in-time fundamental database needs immutable filings, publication timestamps, and queries that reconstruct what was knowable on a given date.</description><pubDate>Thu, 23 May 2019 00:00:00 GMT</pubDate></item><item><title>Market Cap Is Not Shares Outstanding Times Price</title><link>https://ptole.my/blog/market-cap-fully-diluted-shares-sec-filings/</link><guid isPermaLink="true">https://ptole.my/blog/market-cap-fully-diluted-shares-sec-filings/</guid><description>Calculate fully diluted market capitalization from SEC filings using options, RSUs, warrants, multiple share classes, and the treasury stock method.</description><pubDate>Thu, 25 Apr 2019 00:00:00 GMT</pubDate></item><item><title>Revenue Is Not a Number</title><link>https://ptole.my/blog/revenue-is-not-a-number/</link><guid isPermaLink="true">https://ptole.my/blog/revenue-is-not-a-number/</guid><description>A filing-aware method for calculating discrete quarterly revenue and trailing twelve months revenue from SEC XBRL facts, including fiscal calendars, concept drift, amendments, and restatements.</description><pubDate>Thu, 21 Feb 2019 00:00:00 GMT</pubDate></item><item><title>The Filing Date Is Part of the Number</title><link>https://ptole.my/blog/the-filing-date-is-part-of-the-number/</link><guid isPermaLink="true">https://ptole.my/blog/the-filing-date-is-part-of-the-number/</guid><description>Financial data needs two clocks: the period it describes and the moment it became knowable. A point-in-time schema prevents restatements and filing latency from leaking into stock screens and backtests.</description><pubDate>Thu, 27 Jun 2019 00:00:00 GMT</pubDate></item><item><title>The S&amp;P 500 Is a Time Series</title><link>https://ptole.my/blog/the-sp-500-is-a-time-series/</link><guid isPermaLink="true">https://ptole.my/blog/the-sp-500-is-a-time-series/</guid><description>Historical S&amp;P 500 constituents are a bitemporal event stream. Build point-in-time index membership without survivorship or look-ahead bias.</description><pubDate>Thu, 24 Oct 2019 00:00:00 GMT</pubDate></item><item><title>Ticker Symbols Have Expiration Dates</title><link>https://ptole.my/blog/ticker-symbols-have-expiration-dates/</link><guid isPermaLink="true">https://ptole.my/blog/ticker-symbols-have-expiration-dates/</guid><description>Ticker symbols are time-bounded venue assignments. Build a point-in-time security master that prevents symbol reuse, share-class changes, and corporate actions from corrupting a stock screener.</description><pubDate>Thu, 29 Aug 2019 00:00:00 GMT</pubDate></item><item><title>Your Backtest Is Cheating</title><link>https://ptole.my/blog/your-backtest-is-cheating/</link><guid isPermaLink="true">https://ptole.my/blog/your-backtest-is-cheating/</guid><description>A practical design for building stock screeners and backtests that remain correct during splits, dividends, index changes, delistings, and market crashes.</description><pubDate>Wed, 26 Dec 2018 00:00:00 GMT</pubDate></item></channel></rss>