Murph Documentation

Murph

v2.0.5 Windows desktop Local server · 127.0.0.1

Functional architecture

Murph is organized around eight numbered tabs (shortcuts 18) and a Portfolio Construction group that chains Optimizer, Walk-Forward, and Portfolio.

Strategies (research) Optimizer (calibration) Walk-Forward (validation OOS) Portfolio (live deployment)
Preview: navigation sidebar
Nowcast
live
Macro regime dashboard

Macro regime dashboard for USA and Eurozone.

Goldilocks
Recommended workflow: load strategy performance reports (trade logs, CSV/XML exports) into Strategies, calibrate a rotation condition in Optimizer, validate OOS in Walk-Forward, then deploy in Portfolio.

Installation & license

Requirements

  • Windows 10/11 (64 bits)
  • Internet connection (macro data, COT, license validation)
  • Murph opens automatically at http://127.0.0.1:8080 (or fallback ports 8081–8082)

Installation

  1. Download Murph-Setup-2.0.5.exe from murph.tirmann.com/downloads.
  2. Run the Inno Setup installer: desktop shortcut and Add/Remove Programs entry.
  3. On first launch: email + license key (not your website password).

Sign-in & license

Remote validation via https://murph.tirmann.com/api/license/validate. Session is stored locally. Sign out in the top bar to sign out.

Updates: Download update banner if a newer version exists. Your cache/ and config/ folders are preserved during an Inno upgrade.

File locations

PathContents
%LOCALAPPDATA%\Programs\Murph\Application (Murph.exe, _internal/)
…\Murph\config\settings.jsonAPI keys, auth, preferences (survives upgrades)
…\Murph\cache\Strategies, macro, COT, hooks, presets (survives upgrades)
Quick access: Win + R → paste %LOCALAPPDATA%\Programs\Murph → Enter.

Installation troubleshooting

SymptomAction
Login OK but no macro dataInstall the latest version (≥ 2.0.5). Wait 1–2 minutes on first launch.
Errors add_docstring in the logsVersion 2.0.4 or older: reinstall 2.0.5.
Empty hooks librarySame cause: hook seeding crashed before 2.0.5.
Corrupted config after testingDelete config\settings.json then restart (recreated from defaults).

Global interface

Sidebar

ElementDescription
Logo MurphApplication identity. Click the hamburger button to collapse/expand the bar (icons-only mode).
Tabs 1–8Main navigation. Each tab shows a colored dot when data is loading or an alert is active.
Portfolio ConstructionVisual group for Optimizer (4), Walk-Forward (5), and Portfolio (6).
ThemeDark / light toggle. Choice is stored in localStorage (murph_theme).
AccountVisible when signed in: email, license status, expiration.
StatusSystem state, CPU performance, data source health.
LogsFilterable event log by category.

Top bar

Preview: top strip
Portfolio · Standard
live
ButtonFunction
Title + contextShows the active tab and sub-context (e.g. Portfolio · Sub-accounts, Nowcast region).
New windowOpens the current tab in a new browser window (useful for a second monitor).
RefreshReloads all data: macro regimes, COT, strategy list, API status. Shows a loading animation.
Sign outSign out (visible when authenticated).
AlertsOpens the alert strip (regime changes, load errors, etc.).
Pill « live »Green = server connected and data up to date. Red or gray = connection or load issue.

Alert strip

Appears below the top strip when important events occur (macro regime change, download failure, etc.). Click Dismiss to dismiss until the next alert.

Status bar

Shows UTC time, the Ctrl+K shortcut for the command palette, and the application version (v2.0.5).

Command palette

Open with Ctrl+K (ou Cmd+K on Mac). Type to filter, up/down arrows to navigate, Enter to run, Esc to close.

  • Go to any tab (Nowcast → API)
  • View System Status / Event Log
  • Refresh all data
  • Switch region → USA / Eurozone
  • Toggle light / dark theme

Toasts

Ephemeral notifications bottom-right confirming actions (successful import, saved preset, clipboard copy, etc.).

Portfolio workflow

The three modules Optimizer, Walk-Forward et Portfolio share common logic: rotation conditions, transaction costs, presets, force/skip, and a step wizard.

Step wizard

1 · Strategies 2 · Validation 3 · Results
ModuleStepsDescription
Portfolio (Standard / Sub-accounts)1 → 2 → 3Strategies → Individual validation → Results (ranked combinations).
Walk-Forward1 → 3No single Validation step: each rotation cycle re-validates strategies (see Rotation Log).
Parameter Optimizer1 → 3Strategies to optimize → Results (parameter grid).

Standard vs Sub-accounts

STANDARD SUB-ACCOUNTS
  • Standard: Single portfolio; at most one strategy per market (symbol) at each rotation.
  • Sub-accounts: Capital split into parallel buckets; multiple strategies on the same market can coexist in separate sleeves.

Nowcast

Macro dashboard. Tracks growth and inflation composites for the USA and euro area from public sources, and shows the active regime used in Strategies and portfolio construction.

Interactive globe

  • USA: Click the US point or use the palette (Switch region → USA).
  • Eurozone (EU): Same for Europe.
  • Hover: preview regime without changing selection.
  • Click: sets the active region for all of Murph (Strategies, API enrichment, etc.).

Displayed fields

FieldMeaning
RegimeCurrent macro regime (e.g. Goldilocks, Reflation, Stagflation, Deflation): color-coded.
GrowthGrowth composite score (positive = expansion).
InflationInflation composite score.
As ofDate of the latest available observation.

Regime key

Four macro regimes, color-coded:

  • Goldilocks: solid growth, moderate inflation
  • Reflation: recovery with inflation pressure
  • Stagflation: weak growth, high inflation
  • Recession: economic contraction

Current Regime card

BlockContents
Regime badgeActive regime name with color.
Growth / InflationNowcast scores + mini sparkline (recent trend).
PeriodNowcast reference month.
VAR(3) Projection | 3 months3-month VAR model projection: likely regimes M+1, M+2, M+3.

Data Health & Streak

Macro series quality indicators: missing series, publication delays, current regime streak (consecutive months in the same regime).

Summary metrics (banner)

  • Nowcast Regime: Active region regime
  • Strategies loaded: Number of strategies in memory
  • Last update: Last macro data sync

Regime history

  • ACTUAL: Timeline of observed regimes (past)
  • M+1 PREDICTED: Next-month projection from VAR(3)

Macro indicators & Regime distribution

Two columns: component indicator z-scores (GDP, employment, inflation, etc.) and historical time spent in each regime (%).

VAR(3) Projection Accuracy

Backtest of VAR predictive quality: correct regime classification rate at 1–3 month horizon.

Loading

On first launch or after Refresh, a Loading macro data banner appears with per-region progress bars and ETA. Data is cached locally for subsequent launches.

Strategies

Single-strategy research workspace. Import performance reports and trade histories, measure behavior by Nowcast regime, and build manual combinations before entering the Portfolio Construction pipeline.

Import a strategy

Import a strategy
Drop CSV / XML files here
Analyze from
ControlDescription
DropzoneDrag-and-drop or click to select .csv or .xml (TradeStation exports and compatible performance report formats).
Analyze fromAnalysis start date: earlier trades are ignored.
Ready to importParsed files awaiting import; column mapping if CSV is ambiguous.
After importAutomatic destination after import: stay here, Portfolio, Walk-Forward, or Optimizer.
AnalyzeRuns import and analysis (progress bar). Disabled until a valid file is ready.

Analyzed strategies: action bar

ButtonAction
Select all / Deselect allSelects or deselects all listed strategies.
Transfer to…Sends selected strategies to Portfolio, Walk-Forward, or Optimizer (replaces target pool).
Create combinationMerges selected strategies into a temporary combination (minimum 2).
Delete selectedDeletes checked strategies (irreversible).
Custom hooksOpens Code Builder tab size (position sizing).
Delete allDeletes all imported strategies.

Strategy card (detail)

Each analyzed strategy appears as an expandable card with:

  • Header: Name, market, ID, selection checkbox, delete button.
  • Settings: Region (USA/EU), start date, OOS (out-of-sample) date, sizing hook, contract rounding.
  • Performance: Key metrics: Net profit, CAGR, Sharpe, Max DD, Win rate, Profit factor, etc.
  • Equity / Drawdown: Interactive SVG charts (resized on window resize).
  • Nowcast attribution: Performance split by macro regime.
  • COT performance: Performance vs positioning percentiles.
  • Tag performance: When a tag_trades hook is attached.
  • Monte Carlo: Bootstrap simulation with configurable capital, % trades skipped.
  • Monthly returns: Heatmap or table of monthly returns.
  • Trade list: Paginated trade list with CSV export.
  • Correlation: Correlation matrix with other strategies (dedicated button at top of list).

Strategy card: report tabs

TabContents
STRATEGYGlobal metrics, equity/drawdown, settings (region, OOS date, sizing hook).
NOWCASTPerformance by macro regime: bars or P&L / Sharpe table by regime.
COTPerformance conditioned on CFTC positioning percentiles.
TAGSVisible when tag_trades hook is attached: performance by custom tag.
MONTE CARLOSimulation bootstrap: initial capital, % trades skipped, outcome distribution.
MONTHLYTable or heatmap of monthly returns.
TRADESPaginated list; CSV export available.

Per-strategy settings

FieldDescription
RegionUSA or EU: Nowcast regime used for attribution.
Analyze fromTruncation date (editable via update settings).
OOS dateDate out-of-sample: separates IS/OOS in metrics.
Sizing hookHook size() attached: dropdown of saved hooks.
Round contractsRound position sizes to whole contracts.
DeleteDeletes the strategy (trash icon in header).

Correlation matrix

Correlation heatmap across all loaded strategies: useful before combining redundant strategies.

Combinations

Manually created combinations appear as special entries. The report is computed on the fly (combine_preview) with no persistence.

Import CSV: column mapping

If the CSV is not recognized automatically, a preview screen lets you map entry/exit dates, P&L, direction, etc. Defaults configurable in System Status.

COT

Weekly CFTC positioning for 23 futures markets. Percentiles use a 26-week window; the crowding score combines commercials, speculators, and open interest.

Main table

One row per asset (ES, NQ, CL, GC, etc.) with:

  • Commercial / Non-commercial / Non-reportable: Net positions in contracts
  • 26-week percentiles: Where current positioning sits in recent history
  • Crowding: Integrated score and label (e.g. crowded long, neutral)
  • Mini chart: Sparkline of recent trend; date axis under the SVG

Interactions

ActionEffect
Click a rowOpens detail with full history chart, percentiles, and crowding breakdown.
Refresh (top strip)Re-downloads CFTC reports when a new week is available.
Last report dateShown under the intro: date of the latest integrated COT report.
Initial COT load can take a few minutes (first download). Data is then served from local cache.

Parameter Optimizer

Search module for rotation conditions. Systematically sweeps parameter sets to find regime filters that preserve edge over time.

Step 1: Strategies to optimize

  • Strategy pool (CSV/XML import, transfer from Strategies, or list selection)
  • Sidebar: presets, rotation condition, costs, OOS date, rotation schedule, composite score weights

Sidebar: collapsible sections

SectionParameters
PresetsSave / Load / Export / Import / star (default preset on startup).
Rotation conditionHook condition whose numeric parameters will be swept (min/max/step per parameter).
Transaction costsCommission and slippage per contract, applied at each simulated rebalance.
OOS startFirst out-of-sample month to score each parameter combination.
Rotation scheduleRebalance frequency and day during evaluation.
Score weightsMetric weights (Sharpe, CAGR, DD, etc.) or score custom hook.

Run & results

The Run optimization button shows a progress bar with per-substep ETA. Step 3 shows a ranked table of parameter combinations, with export and apply-to-Walk-Forward or Portfolio.

Use Optimizer before Walk-Forward to calibrate the condition, then validate temporal robustness in Walk-Forward before live deployment in Portfolio.

Walk-Forward

Out-of-sample validation engine. Applies the rotation condition calibrated in Optimizer on a fixed calendar with exact rebalance dates, without lookahead.

Key parameters (sidebar)

SectionDescription
PresetsWalk-Forward sidebar configurations (dates, rotation, costs).
Date rangewf-start-month / wf-end-month: calendar span of simulated monthly cycles.
Rotation dayDay of month and rebalance frequency (e.g. last Friday).
Transaction costsCommission + slippage per contract at each simulated rebalance.
Rotation conditionCondition applied at each rotation step.
Sub-account structure(Sub-accounts mode) Number of buckets, strategies per bucket, search limits.
Force / SkipIDs or markets forced/excluded during bucket search.

Results

  • Equity curve OOS: Cumulative out-of-sample equity over the full period
  • Rotation Log: Cycle-by-cycle detail: active strategies, condition pass/fail, monthly P&L
  • Aggregated metrics: OOS Sharpe, max drawdown, rotation rate, etc.
  • Monte Carlo OOS: Robustness test on the OOS series (/api/walkforward/oos_monte_carlo)
  • Export: Rotation CSV, PDF/HTML report depending on options

Portfolio

Live allocation module. With a rotation condition defined, ranks current strategy combinations and selects the portfolio to deploy now.

STANDARD SUB-ACCOUNTS

Step 1: Portfolio strategies (builder)

Portfolio strategies
Drop CSV / XML files here
STRATEGY · MARKET · ID · WEIGHT
Weights hook:
Reference date
Month · Year · Week · Day
Search params
Min/max strategies · Top N · Correlation…

Builder: controls

ElementDescription
+ AddAdds an empty row: select an imported strategy from the dropdown.
DropzoneDirect import into the Portfolio pool (CSV/XML).
STRATEGY / MARKET / ID / WEIGHT columnsStrategy, market symbol, numeric ID, relative weight (allocation hint).
Weights hook + Suggest weightsApplies an allocate() hook to suggest weights (sum = 1).
Round to whole contractsRounds suggested weights to whole contracts.
Regime attributionP&L attribution chart by Nowcast regime (if data available).

Sidebar Standard: Reference date

Portfolio evaluation date. Only trades closed on or before this date are included. Set month + year + week of month (1st–4th or Last) + weekday (Mon–Fri).

Sidebar: Search parameters

FieldDescription
Min / Max strategiesSize of combinations searched.
Top NNumber of top combinations kept.
Max per marketCap on strategies sharing the same market (0 = unlimited).
Max correlationRejects pairs above this threshold. Empty = disabled.
Synergy thresholdMinimum synergy ratio for a pair to score well.
Sort byRanking metric and direction (asc/desc).
Custom score hookReplaces the built-in weighted score.
Force / Skip IDs & marketsExplicit inclusions/exclusions (comma-separated IDs or symbols).

Rotation condition & costs

Rotation condition: Main condition; None keeps all strategies active. Button Add condition for additional conditions (AND logic).

Transaction costs: Commission and slippage per contract deducted at each rebalance when enabled.

Step 2: Validation

Validates each strategy individually over the configured OOS period. Shows pass/fail, metrics, and exclusion reasons before the full portfolio run.

Step 3: Results

Ranked combination table. For each combination: included strategies, score, metrics, report tabs (Performance, Monthly, Monte Carlo, etc.). CSV export and transfer to other modules.

Sub-accounts: specifics

  • Structure: min/max buckets, min/max strategies per bucket, top N configs, max candidates
  • Max market exposure (%): combined market exposure within a bucket
  • Correlation scope: correlation limited intra-bucket or inter-buckets
  • Presets separate from Standard presets (acc-bkt-presets)

Run

Run portfolio search (Standard) or Sub-accounts equivalent: uses all CPU cores if Use max cores is enabled in Status, otherwise the worker count slider.

Code Builder

Extend Murph with Python hooks: rotation conditions, position sizing, composite score, custom metrics, trade tagging, portfolio allocation. Save in the editor and attach from Strategies or Portfolio.

Code Builder tabs

TabHook typeRole
Conditionscondition(...)Evaluated monthly at rebalance. Returns True to keep a strategy active.
Position sizingsize(...)Monthly position multiplier based on equity and history.
Composite scorescore(...)Single number to rank combinations (Portfolio, Optimizer).
Custom metricscustom_metric(...)User-defined metric over full history.
Trade tagstag_trades(...)Tags each trade; Murph splits performance by tag.
Allocationallocate(...)Returns weights summing to 1 across selected strategies.
ReferenceAvailable columns and metrics, safe point-in-time examples.

Code Builder sub-tabs

CUSTOMIZE REFERENCE EDITOR
  • CUSTOMIZE: Visual catalog of all hook types with signatures.
  • REFERENCE: Trade columns, built-in metrics, point-in-time examples.
  • EDITOR: Create, test, and save Python hooks.

Condition Creator

From Portfolio / Optimizer / Walk-Forward, the condition creator button opens a wizard that saves to Code Builder without leaving the module.

Editor

  • Saved hooks list on the left: click to load
  • Monospace code area with basic highlighting
  • Save: Persists the hook (name required)
  • Delete: Deletes the selected hook
  • Test / Validate: Checks syntax and signature
  • New: New empty hook with signature template

Default rounding (sizing)

Global option to round attached position sizing hooks to whole contracts by default.

Public API

Read-only HTTP API (plus POST enrichment) for Nowcast regimes, COT, and point-in-time joins. Serves on localhost by default; a public base URL can be configured for remote HTTP clients. Application licensing remains at murph.tirmann.com.

API panel (UI)

BlockContents
StatusAPI v1 server state.
Base URL (local)http://127.0.0.1:8080/api/v1
Base URL (public)Externally reachable URL, as configured in the API tab.
API KeySecret key: Show / Copy. Passed in header X-API-Key.
RefreshReloads status and capabilities.
Open Swagger docsOpens /api/v1/docs (interactive OpenAPI documentation).
Live capabilitiesSnapshot of regions, COT assets, keywords available on this install.

Main endpoints

MethodPathDescription
GET/api/v1/capabilitiesLists endpoints, regions, COT assets.
GET/api/v1/keywordsMacro series dictionary for /series.
GET/api/v1/seriesHistory for a keyword (keyword, region, from/to).
GET/api/v1/nowcast/{region}Current regime, scores, history (USA or EU).
GET/api/v1/cot/{asset}Latest COT and 26-week percentiles for an asset.
GET/api/v1/crowding/{asset}Integrated crowding score and label.
POST/api/v1/enrichBody {dates, region, cot_asset} → PIT join without lookahead.

API authentication

Include the header X-API-Key: <your_key> on every request. The key is generated locally and visible in the API tab.

Account & authentication

ElementDescription
Signed in asActive license email.
License expiresLicense expiration date.
Sign outSign out: returns to the login screen.
Open web accountLink to murph.tirmann.com/account to manage your key.

The license key is not shown in Murph desktop. Endpoints: POST /api/auth/login, POST /api/auth/logout, GET /api/auth/me.

System Status

Performance settings, data source health, installation diagnostics.

Performance

OptionDescription
Use max coresUses all CPU cores for Portfolio, Sub-accounts, Walk-Forward, and Optimizer.
Worker pool sliderNumber of workers when max cores is disabled.

CSV import settings

Default column mapping, separator, date format: configurable to standardize recurring CSV imports.

MacroMurph API Status

Grid per macro series: latest value, date, status (OK / stale / error). Last check timestamp in header.

COT Data Status

State per futures market: latest CFTC week, local cache, errors. App version via GET /api/status.

Event Log

ButtonAction
ClearClears the displayed log (current session).
Copy allCopies the full log to the clipboard.

Filterable log (GET /api/audit_log): UTC timestamp, category, detailed message. Limit 200 recent entries.

Keyboard shortcuts

ShortcutAction
18Go to the matching tab (outside input fields)
Ctrl + KOpen / close command palette
EscClose palette, modals, overlays
↑ / ↓ (palette)Navigate the command list
Enter (palette)Run the selected command

Presets

Each pipeline module has its own sidebar preset system (Portfolio Standard, Sub-accounts, Walk-Forward, Optimizer).

ActionDescription
Select presetLoads a saved configuration (strategies, parameters, conditions).
★ (star)Marks the default preset loaded on Murph startup for this module.
Preset name + SaveSaves current state under a name.
DelDeletes the selected preset.
ExportDownloads a .json shareable file.
ImportLoads a preset from exported JSON.
Portfolio Standard and Sub-accounts presets are stored separately: a Standard preset does not affect Sub-accounts and vice versa.

Hooks library

Library vs Saved hooks

Code Builder exposes two levels of hooks, like rotation conditions:

  • LIBRARY: built-in Murph hooks (BUILTIN_HOOKS) : usable immediately, not editable in place. Duplicate under another name to customize.
  • SAVED HOOKS: your hooks + examples seeded on first launch (cache/custom_hooks.json).

For rotation conditions (Portfolio / Optimizer / Walk-Forward), the LIBRARY contains 41 ready-to-use conditions (BUILTIN_CONDITIONS).

UI areaContentsEditable
LIBRARY (Conditions)41 rotation conditions (profitability, DD, COT, regime…)No: duplicate for variants
LIBRARY (Hooks)25 built-in hooks (5 × size, score, metric, tag, allocate)No
SAVED HOOKSExamples + saved client hooksYes

Hook types

HookSignatureUsage
conditioncondition(trades_df, date_ref)Monthly rotation: active/suspended boolean
sizesize(trades_df, date_ref, current_equity)Position multiplier (1.0 = nominal)
scorescore(strategies_metrics)Rank combinations in Portfolio / Optimizer
custom_metriccustom_metric(trades_df)Metric shown in reports
tag_tradestag_trades(trades_df)Tag per trade → Tag performance tab
allocateallocate(strategies_metrics)Weights summing to 1: Suggest weights

Built-in library (examples)

Built-in hooks shipped with Murph (not exhaustive):

  • Size: Vol Targeting, Drawdown Throttle, Kelly Fraction, Ramp-Up New Strategy…
  • Score: Sharpe Only, Drawdown-Averse, Consistency First, Balanced Composite…
  • Metric: Ulcer Performance Index, Tail Ratio, Monthly Consistency %…
  • Tag: Trade Size Terciles, After Win vs After Loss, Seasonality…
  • Allocate: Equal Weight, Inverse Drawdown Risk, Top-3 Concentration…

Point-in-time

Point-in-time: hooks only receive data available at the evaluation date: no lookahead. Safe columns: Reference tab in Code Builder.

Data, cache & updates

Local storage

  • Imported strategies and precomputed metrics
  • Nowcast macro cache and underlying series
  • Downloaded COT history
  • Presets, hooks, UI preferences (/api/ui_prefs)
  • Audit log

Application updates

GET /api/app/update compares APP_VERSION local version with the manifest on murph.tirmann.com. Banner offers download if remote version is newer.

Refresh vs restart

Refresh re-downloads external data without restarting the server. A full restart (Murph.exe) reloads configuration and reapplies the starred default preset.

Export

Available exports: trade CSV, portfolio reports, JSON presets, walk-forward results. Endpoints: /api/export/csv, /api/export/file, export_reveal (opens the folder in Windows Explorer).

Frequently asked questions

Murph does not open

Check that Murph.exe is running (taskbar). Open manually at http://127.0.0.1:8080. Ensure no other service is using port 8080.

License error

Check email and key. Internet required. If the problem persists, the validation server (validate.php) may be unavailable: try again later.

Import CSV

Use the preview/mapping screen on import. Configure defaults in System Status → CSV import settings.

Slow portfolio run

Reduce Top N, max combinations, or enable Use max cores. Reduce strategies in the pool.

Optimizer vs Walk-Forward

Optimizer searches for the best parameters of a condition over history. Walk-Forward simulates the chronological application of fixed rules month by month to measure real OOS degradation.

Remote API access

Local default: http://127.0.0.1:8080/api/v1. Remote clients use the Base URL (public) from the API tab and authenticate with the X-API-Key header. OpenAPI documentation: /api/v1/docs.