Skip to main content

Macro by Mark

Your workspace

Sign in to sync dashboards, watchlists, and workspace items.

Create accountSet up your workspace entry.Sign inMagic link or Google access.My dashboardsOpen or create a board.SettingsProfile and preferences.
Home
Open MacroGo straight to Macro.

Overview

OverviewThe flagship learning arc.ConceptsCore measures, terms, and mechanisms.PolicyFiscal, monetary, and transmission routes.

Debate and context

SchoolsCompeting macro traditions.CompareLine up schools and assumptions.HistoryHow the field evolved.

Work with it

ModelsEmpirical, structural, and theoretical routes.GlossaryFast definitions while you learn.
NewsCalendar
Search
Macro by Mark
Home
Macro
Overview
OverviewThe flagship learning arc.ConceptsCore measures, terms, and mechanisms.PolicyFiscal, monetary, and transmission routes.
Debate and context
SchoolsCompeting macro traditions.CompareLine up schools and assumptions.HistoryHow the field evolved.
Work with it
ModelsEmpirical, structural, and theoretical routes.GlossaryFast definitions while you learn.
News
Calendar
Indicators
Tracked categories
All libraryThe full tracked working set.GrowthOpen this indicator lane.Prices & InflationOpen this indicator lane.Labor MarketOpen this indicator lane.Monetary & Financial ConditionsOpen this indicator lane.Nowcasting & Leading IndicatorsOpen this indicator lane.
Shortcuts
Starter setCurated core series first.Global trackedCommitted non-U.S. public slice.Source searchSearch deeper provider catalogs.API & dataPublic routes, export, and docs.
About
Trust hub
PurposeWhat the product is and why it exists.Sources & disclosuresPublic-data context and notices.PoliciesPrivacy, terms, ethics, accessibility.ContactReach out or verify research profiles.
Search
Your workspaceCreate an account or sign in
Account
Create accountSet up your workspace entry flow.Sign inMagic link or Google access.
Settings
SettingsProfile, preferences, and sync posture.

Data-Driven Models

Loading Data-Driven Models

Macro by Mark

U.S. macro data with release timing, boards, and macro context.

Public U.S. data from agencies and market feeds.

MarkJayson.com

Product

HomeIndicatorsDashboardsNewsCalendarSearch

Learn

OverviewConceptsPolicySchoolsModelsGlossary

Trust

AboutHelpPrivacy PolicyTerms of UseEthics & ComplianceContact
LinkedInGitHubGoogle ScholarORCID

© 2026 Mark Jayson Martinez Farol

Data-Driven Models

Loading Empirical Sandbox

Start
Data
Model
Configure
Evaluate
Forecast

Data-Driven Models

Empirical sandbox

Workflow step

A code-first side lane for users who want the brief, editor, and diagnostics on one screen while the guided empirical workflow stays intact.

Brief

Start with the current empirical session, inspect the data and transforms, then draft the code you would want before you automate the full run path.

Source: Not set

Series staged: 0

Model posture: Not set

Transforms: Keep levels

Working plan

  1. Inspect the staged frame and raw target.
  2. Read ACF, PACF, and transform implications.
  3. Draft the first baseline specification.
  4. Compare the notebook idea against the guided route.

Quick routes

Connect a provider seriesUpload a datasetConnect a series first

Editor

Generated notebook cells first, full script view second. Keep the notebook logic visible before you move into a single file or remote execution.

Cell 1

Load raw data

Why use load raw dataNotebook work is easier to trust when the raw target and the source assumptions are visible first.

Start from the staged session and make the raw frame explicit before you touch transforms or model choices.

import pandas as pd
from statsmodels.tsa.stattools import acf, pacf

SERIES_IDS = [
  "replace-with-series-id"
]
SERIES_LABELS = [
  "Your staged series"
]
SOURCE_MODE = "connect"

# Replace this stub with the connected provider pull or uploaded dataframe when execution is wired.
raw_frame = pd.DataFrame()
target_column = raw_frame.columns[0] if len(raw_frame.columns) > 0 else 'target'

Load preview

  • Source mode: connect
  • Series staged: 0
  • Primary target: Your staged series

This preview is generated from the staged session. Remote execution still comes later.

Source mode

connect

Series staged

0

Primary target

No staged target

Session frame

No live or uploaded frame is staged yet. Connect a provider series or upload a dataset to populate the notebook frame.

Cell 2

Transform target

Why use transform targetThe transform layer is where a lot of model confusion starts. Writing it down makes the target explicit.

Carry the review posture into code so the machine-facing target is visible before you fit anything.

session_transforms = {
  "logTransform": false,
  "growthTransform": "none",
  "detrendMethod": "none",
  "seasonalAdjustment": "keep",
  "missingValuePolicy": "warn",
  "frequencyHarmonization": "none"
}

analysis_frame = raw_frame.copy()

if session_transforms['logTransform']:
    analysis_frame = analysis_frame.where(analysis_frame > 0).apply('log')  # Replace with np.log when execution is wired.

if session_transforms['growthTransform'] != 'none':
    analysis_frame = analysis_frame.pct_change()

analysis_frame = analysis_frame.dropna()

Cell 3

Diagnose series

Why use diagnose seriesThis is the notebook step where you decide whether the target is persistent, seasonal, over-transformed, or still unstable.

Read the target like a forecaster before you commit to the baseline model.

analysis_target = analysis_frame.iloc[:, 0].dropna()
raw_target = raw_frame.iloc[:, 0].dropna() if not raw_frame.empty else analysis_target

acf_preview = acf(analysis_target, nlags=min(12, len(analysis_target) - 1)) if len(analysis_target) > 12 else []
pacf_preview = pacf(analysis_target, nlags=min(12, len(analysis_target) - 1)) if len(analysis_target) > 12 else []

diagnostic_notes = [
    "Stage a provider series or upload a dataset so the notebook can inherit a real macro frame.",
    "Compare the raw series against the transformed target before locking the model.",
    "Keep the holdout rule visible while reading the diagnostics.",
]

Cell 4

Fit baseline

Why use fit baselineThe first fit cell should make the baseline concrete while keeping the assumptions easy to challenge.

Write the first model cell as if you were about to evaluate it, not as if the class choice were already settled.

from statsmodels.tsa.arima.model import ARIMA

analysis_target = analysis_frame.iloc[:, 0].dropna()
# Replace the fallback order with the evaluated order or the machine recommendation.
baseline_model = ARIMA(analysis_target, order=(1, 1, 1))
baseline_fit = baseline_model.fit()
forecast = baseline_fit.forecast(steps=6)
Connect a series firstRemote execution and package sandboxing come next. This pass makes the notebook logic explicit first and keeps the code surface local.

Inspector rail

Keep the diagnostics, output posture, and notebook notes one click away instead of moving off the editor.

Diagnostics preview

Connect a provider series first if you want the sandbox to show raw-vs-target previews, ACF, and PACF in the inspector rail.