execution-positionlisted
Install: claude install-skill artherahq/skills
# Execution & Position
The distance between a good signal and a good trade is sizing, limits, and
costs. This skill is the boring adult at the door: it sizes with declared
inputs, checks the hard limits, prices the friction, and emits **paper
intents only**.
## Authority boundary (read first)
The gate's output is a `paper_only: true` intent. A request for live
execution FAILS the gate mechanically — live orders are a human decision made
outside this skill, in the broker's own interface. This mirrors the platform
rule: unimplemented broker paths return errors, never fake fills.
## Sizing doctrine
- **vol_target** (default): weight = risk budget / annualized vol. Needs a
real volatility estimate; the gate refuses to guess when none is supplied.
- **kelly**: only from a **declared** edge (win rate + payoff ratio) — the
declaration is the user's claim and ships verbatim in the intent for audit.
Computing an edge from sample means is prohibited here (that is
backtest-validation's jurisdiction, and even then it is a backtest, not an
edge). Fraction hard-capped at 0.25: full Kelly on an estimated edge
over-bets by construction.
- **fixed_weight**: explicit user weight, still subject to every gate.
## Workflow
1. Assemble the spec (`references/order-schema.md`): order, portfolio state,
limits, market context (vol, ADV, spread). Missing limits get conservative
defaults; missing volatility fails vol-target sizing honestly.
2. Run `python scripts/position_gate.p