Apply
Apply

The Lab Journal

A Sourced Transfer Matrix Beats a Guessed Award Value

By Todd | | The Lab Journal | authorTag todd

Public research only. Not card advice. MCAFax is not a lender or a law firm.

Abstract

We built a small, sourced Transfer Partner Matrix (v0) and a deterministic cents-per-point (CPP) calculator for award trips. The matrix includes 22 airline partner rows for Chase Ultimate Rewards and Capital One Miles (US), dated 2026-11-06, taken only from official issuer pages we opened. American Express Membership Rewards (US) stays in scope as a program but has zero partner rows because we could not verify per-partner US ratios on Amex US public pages. The calculator implements one formula in Python (stdlib only), with 20 automated tests. This is not live award inventory, not a booking tool, and not a replacement for a paid deal club or award-search service.

Methods

  1. Opened official Chase Sapphire Preferred transfer-points copy and Chase how-to-transfer education pages; recorded airline partner names and the stated 1:1 rule for most partners.
  2. Opened Capital One's miles transfer-partners guide (page dated November 2, 2026); recorded airline partners and conversion ratios, including 2:1.5 and 5:3 groups.
  3. Opened Amex US Credit Intel and transfer FAQ pages; confirmed transfers exist and that Amex states most partners are 1:1 with exceptions. Partner-by-partner US ratio tables and Amex update PDFs were not available from the URLs we opened (404/HTML). Amex UK/FR/SG public ratios were excluded because regional programs differ.
  4. Scope rule: airline partners only; include a ratio only when an official US issuer page stated it. Hotels deferred.
  5. Shipped reusable JSON/CSV matrix, empty trip-ledger CSV header, tools/trip_cpp.py, and a unittest suite. The notebook page embeds the same airline rows for filtering and view-state CPP math. Entries on that page are not saved.

Data (as of 2026-11-06)

Bank program Airline partner rows Ratio source
Chase Ultimate Rewards 10 Official Sapphire Preferred offers (most partners 1:1)
Capital One Miles (US) 12 Official Capital One transfer guide
Amex Membership Rewards (US) 0 Program confirmed; per-partner US ratios unverified

Formula used by the calculator:

net_cpp = 100 * (cash_fare - award_taxes_fees - extra_costs) / bank_points_spent

Bank points and partner miles are distinguished when the transfer ratio is not 1:1. Example: Capital One to Emirates at 2:1.5 means 60,000 Skywards miles require 80,000 Capital One miles.

Results

  1. Matrix v0 contains 22 dated airline rows with ratio_confidence: official.
  2. Amex US remains an explicit coverage gap rather than a guessed table.
  3. Behavior tests: 20/20 OK (positive CPP, negative CPP, zero/negative points rejected, ratio consistency, inflated cash-fare caution, matrix integrity).
  4. CLI entry points work without network access once the bundle is local:
python3 tools/trip_cpp.py --cash-fare 1200 --taxes 100 --bank-points 60000
python3 tools/trip_cpp.py --cash-fare 3000 --taxes 200 \
  --partner-miles 60000 \
  --bank-program capital_one_miles \
  --partner-program emirates_skywards
cd tools && python3 -m unittest test_trip_cpp.py -v

Discussion

A short skill should trigger this code instead of asking a model to remember transfer ratios. The skill is a pointer. The JSON matrix and the Python calculator are the work. That matches the MCAFax model: code does the calculation, a one-line skill decides when to run it, and a Lab Journal entry explains what was verified.

What this does not replace: live award seat search, founder coaching communities, or irreversible point transfers. Ratios change. Confirm in the issuer portal before moving points. Cash-fare quality is the operator's responsibility. An inflated comparable fare inflates CPP.

Limits

Sources

Portable bundle

Adopters: download https://mcafax.com/skills/points-transfer-matrix.zip and keep SKILL.md, data/, and tools/ in one folder named points-transfer-matrix. Point your AI at SKILL.md. The skill tells the AI to run tools/trip_cpp.py rather than re-derive ratios. The notebook page at the canonical URL filters the same airline rows and computes CPP in the browser. Nothing typed there is saved.

Airline matrix and calculator

22 airline rows as of 2026-11-06. Chase Ultimate Rewards: 10. Capital One miles (US): 12. American Express Membership Rewards (US): 0 partner rows. Hotels are not listed. This is not live award inventory.

Numbers you type stay in this tab. They are not saved and they are not sent.

Showing 0 rows.

BankAirlineRatioMinimumAs of

Cents per point

Enter a fare and points, then compute. The result is not stored.

The same math ships in the portable bundle. An AI should run tools/trip_cpp.py from that bundle, not invent the ratio.

Download the bundle (.zip)SKILL.mdMatrix JSONMatrix CSVEmpty ledger templateTodd's desk