Trade Simulator

Model a trade — two teams or a multi-team deal — and run it through the league's real validation rules.

Select at least two teams and pick assets — the rubric evaluates live.
How trade validation works

The simulator and the league's transaction system run the same rubric: the page calls POST /api/validate/trade, which shares its validator with POST /api/transactions. A "legal" result here is what the office will accept. Picks are tracked but carry no cap or roster weight. With 3+ teams in the deal, each selected asset needs an explicit destination — with only 2, the destination is implied and there's nothing extra to pick.

Salary matching — max incoming salary by team type

A team's tier is set by its salary before the trade. Incoming ≤ outgoing always matches. In a multi-team deal, each team's own outgoing/incoming totals (across all its legs) are what's matched — not pairwise per partner.

MLE trade absorption (§ 4.2a)

Pick an exception under a team's selector to absorb that team's incoming salary against its remaining season balance instead of matching outgoing salary — outgoing sent back doesn't matter under this path. Eligibility mirrors free-agent use of the same exception: NTMLE is blocked at/above the 1st Apron, TMLE at/above the 2nd Apron, the BAE at/above the 1st Apron (and unavailable in consecutive seasons, or alongside cap space/Room Exception use), and the Room Exception requires Team Salary more than a full NTMLE below the Cap. Using the NTMLE, TMLE, or BAE this way triggers the same hard-cap-at-apron effect as a signing.

Trade Exceptions (§ 4.1a)

If a team has an unexpired TPE on file, it appears as an extra option in the same selector ("TPE: $X remaining"). A TPE covers incoming salary up to its remaining balance with no outgoing salary required — but it cannot be combined with another exception, or with any outgoing salary from that team, in the same trade.

Sign-and-trade (§ 3.14)

Checking a Cap Hold player (a current free-agent hold — UFA/RFA — the team is carrying) reveals a contract-terms form: years (3–4), a per-year salary schedule, Bird-rights tier, and how the new deal is funded. Submitting with this filled in validates it as a sign-and-trade: contract length, the 5% raise cap (Bird's 8% doesn't apply here), that the MLE doesn't fund any part of it, that the signing team hasn't already used the Taxpayer MLE this season, Base Year Compensation where it applies, and that the receiving team ends up below the 1st Apron.

Other checks