The middle of Atlantis Core separates three decisions that legacy systems often merge:
- Is there evidence for a thesis?
- What instrument-neutral intent should be proposed?
- Is that intent allowed right now?
Keeping these separate is what lets the same thesis be expressed as spot, perp, future, option, paper, shadow, or no trade.
TradeHypothesis
ScoringEngine consumes PatternHit[] and emits TradeHypothesis.
The current scoring slice includes:
- evidence stack
- directional bias
- conviction score
- confluence across same-direction hits
- conflict handling
- quality penalties
- feature schema version surfacing
- mixed-underlying rejection
- mixed feature schema rejection
EvidenceStack
Evidence stack retains the pattern hits that contributed to the hypothesis. This prevents scoring from becoming an opaque number.
The stack carries:
- pattern ids
- hit ids
- direction
- confidence
- feature schema versions
ConvictionBreakdown
The framework has a breakdown object so future scoring dimensions can be added without changing the top-level hypothesis contract.
Current implemented dimensions include pattern strength and confluence. Future dimensions may include:
- regime alignment
- liquidity quality
- execution cost
- historical edge
- freshness confidence
- portfolio concentration
- operator overrides
SignalIntent
SignalIntent is the most important interface in Core. It is the instrument-neutral thesis handoff.
It includes:
- signal intent id
- thesis id
- source hypothesis id
- underlying id
- direction
- preferred exposure
- horizon
- invalidation context
- target context
- constraints
- evidence summary
- feature schema version
- intent version
- decision state
- reason codes
Preferred Exposure
ExposurePreference prevents hidden instrument assumptions:
- spot
- perp
- future
- option single leg
- option structure
- any delta one
- no preference
A BTC long thesis can prefer ANY_DELTA_ONE without saying whether it must be spot or perp.
Invalidation And Target Context
Current typed shells include:
- invalidation price level
- time limit
- feature condition
- pattern failure condition
- regime flip condition
- max adverse excursion
- price target
- move target percent
- time target
- expected move
- minimum viable reward
- scaleout shape
These contexts are intentionally portable. They should not mention one broker order type.
PermissionDecision
PermissionEngine consumes SignalIntent plus RiskContext and emits PermissionDecision.
Current permission logic includes:
- required capability defer
- quality flag rejection
- paper-only and shadow-only modes
- kill switch
- duplicate exposure gate
- status precedence
- constraints applied
- portfolio and operator context snapshots
- cycle-scoped decision ids
- enum-only reason codes
Permission Statuses
Implemented statuses include:
- allow
- allow with limits
- allow paper only
- allow shadow only
- reject
- defer
Permission is where risk and operator control belongs. Signal generation remains gate-free so research can see what would have fired even when permission rejects it.