-
Bonds, Yields and the Fed, Part 3: Why Long Rates Price the Future, and Why Banks Ride the Cycle
Why are long-term rates already high when the Fed has just cut short rates? This post works through the numbers of locking in vs rolling over, shows how the yield curve forecasts recovery or slowdown, and explains why bank stocks swing more than the economy.
-
Bonds, Yields and the Fed, Part 2: The Fed, the Yield Curve and the Business Cycle
How does the Fed actually set interest rates, and why don’t long-term yields always follow? This post covers the federal funds rate, how the yield curve steepens and flattens, what “bull” and “bear” mean, and how the curve changes through each phase of the business cycle.
-
Bonds, Yields and the Fed, Part 1: How Bond Prices and Yields Work
Why do bond prices fall when yields rise? This primer covers what a bond is, how yield to maturity works, and why long bonds swing more than short ones. It works through a $1,000, 4% bond and shows that growth stocks have “duration” too.
-
Standard Errors in Finance Panels: Why the Same Coefficient Can Be Significant or Not
Correlated observations carry less information than they appear to. Why finance panels need clustered standard errors, how to choose the cluster, and how the readings handle one-date events and few treated firms.
-
Building a Credible Comparison Group: Matching, Difference-in-Differences and Synthetic Control
Every causal claim needs a counterfactual you never observe. How propensity score matching, difference-in-differences and synthetic control build credible comparison groups, with examples from political-connection studies.
-
Characteristics vs. Covariances: Is It What a Stock Is, or How It Moves?
Do value stocks earn more because of what they are, or how they move? How Daniel & Titman’s characteristic-balanced sorts separate the two, and why the answer challenged factor models.
-
Fama–MacBeth Regressions: Running the Cross-Section One Month at a Time
Run a regression every month, then average the slopes. How Fama–MacBeth regressions work, why each slope is secretly a portfolio return, and the pitfalls that can inflate a result.
-
From Sorts to Factors: Time-Series Regressions and the GRS Test
A factor is just a long-short portfolio. How Fama & French build SMB, HML, RMW and CMA, what alpha means in a time-series regression, and what the GRS test really tells you.
-
Portfolio Sorts: The Workhorse of Empirical Asset Pricing
Most anomalies start life as a portfolio sort. How univariate, double and triple sorts work, why NYSE breakpoints matter, and the small choices that quietly make or break a result.
-
Long-Horizon Returns: Why Five-Year “Anomalies” Are So Fragile
Five-year “anomalies” after IPOs and equity issues look huge, until you fix the benchmark. How BHARs and calendar-time portfolios work, why they disagree, and how Bessembinder & Zhang reconcile them.
-
The Short-Window Event Study: Measuring What the Market Learned
How do you measure what the market learned from a single announcement? A walkthrough of the short-window event study, from pinning down day 0 to computing CARs and fixing standard errors.
-
The Joint-Hypothesis Problem: Why “Abnormal” Always Means “Abnormal Relative to a Model”
Every “abnormal return” is abnormal relative to a model. A plain-language look at Fama’s joint-hypothesis problem, and why it barely matters over days but decides everything over years.
-
Bayesian Vector Autoregression: Forecasting Economic Growth Without Losing the Variables
Bayesian Vector Autoregression (BVAR) models how multiple economic variables interact over time while using Bayesian shrinkage to reduce overfitting. In this article, we explore BVAR intuitively and use leading economic indicators to forecast future ISM Manufacturing PMI.
-
Dynamic Factor Models: Forecasting Economic Growth from Many Signals
Economic indicators rarely move in isolation. Dynamic Factor Models help uncover the hidden common signal behind variables such as jobless claims, financial conditions, building permits, and copper prices. In this article, we intuitively explore how a DFM works, how it differs from traditional regression, and how the extracted economic factor can be used to forecast…
-
Top-Down vs. Bottom-Up Analysis: A Simple Guide for Portfolio Managers
A simple, step-by-step guide to top-down vs. bottom-up analysis in portfolio management, with real-world examples for each approach.
-
Hidden Markov Models, Explained Simply — Part 2
Why does a first-order Hidden Markov Model fall short for financial markets, and how do higher-order HMMs get around it? Part 2 covers the intuition behind higher-order models, the trick that makes them trainable, and a live example of an HMM discovering hidden regimes on its own.
-
Hidden Markov Models, Explained Simply
Hidden Markov Models power everything from speech recognition to stock market prediction — but most explanations skip straight to the math. This post builds HMMs up from scratch: Markov chains, hidden states, and the three classic problems every implementation needs to solve.
-
From README to Documentation — Building Developer Docs with MkDocs
A README tells someone how to install your project. It doesn’t tell them how the project actually works. Here’s how to turn scattered markdown files into a real, browsable documentation site — using the same docs group you already defined back in pyproject.toml.
-
Stop Arguing About Code Style — Automating Quality with pre-commit
You already told your project which tools to use in pyproject.toml. Now let’s make sure those tools actually run — automatically, before every commit, without anyone having to remember.
-
Stop Managing Python Projects Like It’s 2015 — Understanding pyproject.toml
Tired of ten scattered config files and a README full of pip install commands? Here’s how pyproject.toml became the single source of truth for modern Python projects — explained with restaurants, cars, and shopping carts instead of jargon.
-
The Abstract Factory Pattern in Python: Families of Things That Belong Together
The Abstract Factory pattern takes the Factory pattern one step further. Instead of creating one object, it creates a whole family of related objects that are guaranteed to work together. In this post we use a cross-platform notification system (mobile, web, and desktop) to show why a regular factory isn’t always enough, how Abstract Factory…
-
The Observer Pattern in Python: Don’t Call Us, We’ll Call You
The Observer pattern lets objects subscribe to events and get notified automatically when something changes — no polling, no tight coupling. In this post we use a real-time stock price alert system to show why hardcoded notification logic breaks down, how to fix it with observers, how it compares to the Factory pattern, and where…
-
The Factory Pattern in Python: Let Someone Else Decide What to Build
The Factory pattern lets your code create objects without hardcoding which class gets instantiated — making it easy to swap implementations without touching the rest of your app. In this post, we use a real-world notification system (email, SMS, push) to show the before/after, cover the function-based alternative, discuss how Factory and Singleton work together,…
-
The Singleton Pattern in Python: One Instance to Rule Them All
The Singleton pattern guarantees a class or function to only ever creates one instance, no matter how many times you call it. In this post, we break down why that matters for Python developers using SQLAlchemy, show you both a class-based and function-based implementation, and cover thread safety, the GIL, and where else singletons show…
-
How Python Reads Your Code: AST Explained Using a Data Contract Framework
Before Python executes your code, it transforms it into an Abstract Syntax Tree (AST). In this article, we’ll explore how AST works, how Python understands source code, and how we can use it to detect schema changes in a data contract framework.
-
What Is a Schema? The Blueprint Behind Every Data Pipeline
What exactly is a schema, and why do data engineers care so much about them? Learn how schemas act as contracts between systems and why even a small change can break entire data pipelines.
-
Building a Plugin-Based Validation Engine in Python
How to validate, introspect, and safely load user-defined Python code with a real plugin engine as the example.
-
The Heartbeat of the Market: A Friendly Guide to Implied and Local Volatility
This blog post explains why the standard “speed limit” (Black-Scholes) fails to predict market crashes, leading to the “Volatility Smirk” driven by investor fear. It clarifies the difference between Implied Volatility (your average trip speed) and Local Volatility (your speedometer’s exact wiggle at a specific price), stripping away the math jargon to reveal the human…
-
The “Smart” Committee: Scaling Option Pricing with k-Sparse Gated Neural Networks
A single neural network often struggles to price options accurately across every regime. Why ask a LEAPS expert to price a 0DTE call? k-Sparse Gating solves this by acting as an intelligent ‘triage’ system. By activating only the Top-k specialists from a committee of 9 regime-trained experts, we eliminate ‘model noise’ and slash GPU latency.…
-
Beyond Correlation: Are Your Stocks Cointegrated or Just Casual?
We’ve all seen stocks that seem to move in sync, but how do you know if that relationship is built to last? Simple correlation can be a mirage, leading you into ‘Value Traps’ and failed pairs trades. In this blog, we explore Cointegration and Granger Causality—the two statistical powerhouses that reveal which stocks are permanently…
-
Prewhitening vs. Differencings: Why Cleaning Isn’t Enough
Spurious correlations can fool even experienced traders. Two stocks may appear to move in perfect sync, but the relationship often comes from shared market trends rather than any real influence between them. This blog focuses on how to uncover those false signals. By applying prewhitening, we remove the common market noise and isolate the true…
-
Why You Need Prewhitening for Time Series
In this blog we explore what spurious correlation is and how prewhitening can be used to eliminate such mistakes in our analysis of time series data. This is most important for people who wants to see cross correlation relationships between two time series.
-
My Story

I’ve always been fascinated by how data can be architected to solve complex problems. This single passion has guided my entire journey.