Charter Execution Model [JOAT] — Strategy by officialjackofalltrades
By officialjackofalltrades
Performance Metrics
- Author: officialjackofalltrades
- Symbol: TVC:GOLD
- Timeframe: 1 hour
- Net P&L: +493.49 USD (+0.49%)
- Win Rate: 37.5%
- Profit Factor: 1.191
- Max Drawdown: 601.05 USD (0.60%)
- Total Trades: 277
Description
Charter Execution Model [JOAT]IntroductionCharter Execution Model is an open-source Pine Script v6 strategy that integrates the broader JOAT framework into a single non-repainting execution model. It does not rely on one trigger alone. Instead, it uses a hierarchy of filters: regime eligibility first, liquidity bias second, structure confirmation third, and imbalance or displacement triggers fourth. Only when those layers align does the strategy consider taking a trade.The goal of this strategy is not to present a magical black box. It is to model a disciplined decision stack. Many strategies fail because they treat every trigger the same way regardless of context. Charter Execution Model is built around the idea that context should do most of the work. If the market is not in a mature directional regime, if the liquidity ledger is not skewed appropriately, or if local structure does not agree, then a trigger by itself is not enough.The script uses realistic execution controls directly in the declaration: fixed initial capital, percent-of-equity sizing, non-zero commission, non-zero slippage, no pyramiding, confirmed-bar evaluation, and orders processed on close. Those defaults are intended to make the backtest more responsible and easier to interpret than an overly aggressive model with idealized execution assumptions.This strategy is best understood as a research framework. It can help traders study how context filters, imbalance triggers, continuation pressure, and ATR-based exits behave when combined inside one model. It is not a guarantee of future profitability, and it should be evaluated thoughtfully across symbols, regimes, and timeframes.Core Concepts1. Regime Eligibility LayerThe first gate determines whether the market is mature enough to even consider longs or shorts. It uses a directional midpoint and structural midpoint built from EMA and HMA references, then normalizes their spread by ATR and combines that with heat positioning inside the recent price range.Pine Script®bool bullRegime = directionalMid > structuralMidfloat regimeStrength = clamp(spreadNorm * 0.60 + math.abs(heatNorm - 50.0) * 0.80, 0, 100)bool matureBullRegime = bullRegime and regimeStrength >= regimeFloor and regimePersistence >= 12That means the strategy does not allow triggers to fire in weak or undeveloped directional states. Context comes first.2. Liquidity Bias LayerNext, the strategy builds a rolling bin-based liquidity distribution and compares buy-side volume versus sell-side volume. A long context requires positive liquidity bias and price above the reference EMA. A short context requires negative liquidity bias and price below the reference EMA.This adds an inventory-style filter so the strategy is not trading purely off price shape.3. Structure FilterLocal structure is confirmed using pivot-derived reference points and a rolling swing lookback. Longs require price to hold above recent swing support and above the slow EMA. Shorts require the inverse.This helps reduce cases where a regime and liquidity reading are still positive or negative, but local price structure has already started to degrade.4. Trigger StackOnce context aligns, the strategy allows three possible triggers: a confirmed imbalance gap, a displacement shift, or an optional continuation retest into the directional midpoint. This means the model can participate through both fresh displacement and controlled continuation.Importantly, the trigger layer does not override the context layer. It only becomes active when the earlier filters already agree.5. ATR-Based Exit FrameworkRisk management is handled through ATR-sensitive invalidation and two fixed-R profit targets. When the regime is especially strong, an optional trailing rule tightens the stop using recent local price action.This creates a trade structure with a defined stop, two staged exits, and optional adaptation in stronger conditions without relying on unrealistic all-in-all-out assumptions.FeaturesFour-layer decision hierarchy: Regime, liquidity, structure, and trigger conditions must align before entryConfirmed-bar logic: Entries are evaluated only on confirmed bars to avoid repaint-style execution logicNon-zero execution costs: Includes realistic commission and slippage in the strategy declarationNo pyramiding: Prevents stacking multiple positions in the same directionPartial profit framework: Uses two independent `strategy.exit()` orders to scale out at separate R multiplesOptional continuation triggers: Allows pullback-style participation inside already qualified contextOptional strong-regime trailing stop: Tightens exits when regime strength is elevatedDashboard summary: Displays regime, liquidity bias, pressure, trigger state, position state, stop settings, and current risk fieldsClean visual overlay: Shows directional and structural mids with contextual fill directly on the chartOpen-source research design: Lets users inspect and adapt the full context-to-execution hierarchyDefault Strategy PropertiesInitial capital: `100000` is used as the default starting capital in the script declarationPosition sizing: Orders use `strategy.percent_of_equity` with a default quantity of `10`, meaning the strategy allocates 10% of equity per position by defaultCommission: Commission is modeled as `0.02%` per tradeSlippage: Slippage is modeled as `2` ticksPyramiding: Pyramiding is set to `0`, so the model does not stack entries in the same directionOrder timing: `process_orders_on_close = true` and `calc_on_every_tick = false`, so the model evaluates and processes with confirmed-bar logicInput ParametersRegime:Fast Length: Controls the fast directional referenceSlow Length: Controls the slow structural referenceATR Length: Sets the ATR normalization lengthHeat Window: Defines the range window for heat normalizationRegime Strength Floor: Sets the minimum maturity threshold for context eligibilityLiquidity Filter:Liquidity Lookback: Sets the rolling history used for the liquidity modelLiquidity Bins: Controls the liquidity distribution granularityLiquidity Bias Floor: Sets the minimum skew required before liquidity counts as directionalStructure Filter:Pivot Length: Sets pivot confirmation sensitivitySwing Lookback: Defines the rolling structural context windowTrigger Stack:Gap Sigma Filter: Sets the minimum imbalance displacement required for gap-style triggersShift Momentum Length: Controls the raw momentum lookbackShift RSI Length: Controls the pressure RSI smoothingDisplacement Floor: Sets the threshold for shift-style triggersAllow Continuation Triggers: Enables or disables pullback continuation entriesContinuation Pressure Floor: Sets the minimum pressure level for continuation logicRisk Management:Stop ATR Multiplier: Scales the ATR contribution to stop placementTarget 1 R: Sets the first partial profit targetTarget 2 R: Sets the second partial profit targetTrail In Strong Regime: Enables optional trailing behavior when regime strength is elevatedHow to Use This StrategyStep 1: Evaluate Context Before ResultsBegin by understanding what the strategy is trying to do rather than focusing immediately on performance output. It only wants to trade when a mature regime, directional liquidity bias, and confirming structure are all aligned. If that idea does not match your own process, the results will be hard to interpret.Step 2: Study Trigger Type DistributionNot all entries come from the same source. Some come from imbalance gaps, some from displacement shifts, and some from continuation pressure. Understanding which trigger type dominates on a given market can be more useful than simply checking net profit.Step 3: Understand The Exit FrameworkThe model uses a staged exit approach. Half the position is managed toward the first target and half toward the second. A stop is always active, and strong-regime trailing can tighten the exit path further. Review this logic carefully before drawing conclusions from the backtest.Step 4: Keep Expectations RealisticThe strategy includes commission, slippage, confirmed-bar logic, and no pyramiding, but that still does not make the backtest “real.” Results depend on the instrument, the timeframe, the data sample, and how well the context assumptions fit the market studied.Step 5: Use It As A Research FrameworkCharter Execution Model is best used as a framework for studying context-first execution logic. Adapt the filters, test the thresholds, and evaluate how the hierarchy behaves across different environments rather than assuming the defaults are universally optimal.Strategy LimitationsThe strategy relies on historical context filters that may adapt poorly to sudden regime shifts or atypical event-driven conditionsLiquidity bias is based on bar-level directional volume attribution rather than true exchange order-flow dataProcessing orders on close simplifies execution and can differ materially from real fills on fast marketsBacktest results are sensitive to parameter choices, timeframe selection, instrument behavior, and dataset lengthOriginality StatementCharter Execution Model is original in the way it organizes multiple analytical layers into a disciplined execution hierarchy. It is not published as a simple indicator mashup strategy:It requires mature regime, directional liquidity bias, and local structure to align before any trigger is allowed to matterIt supports multiple trigger archetypes inside the same context framework rather than treating one trigger as universally sufficientIt combines staged exits, ATR-sensitive invalidation, and optional strong-regime trailing inside a consistent risk modelIt exposes its internal context state on-chart so users can study why the strategy is active or inactive at any pointDisclaimerThis strategy is provided for educational and informational purposes only. It is not financial advice or a recommendation to buy or sell any financial instrument. Backtest results depend on assumptions, data quality, slippage, commission, bar resolution, and market conditions. Past performance does not guarantee future results. Always use independent judgment and proper risk management before using any strategy logic in live markets.-Made with passion by jackofalltrades