trip-calculator について
現金払いと特典予約を、税金・手数料、移行比率、ポイントを温存する価値も含めて比較する旅行向けスキルです。航空券やホテルの支払い方法を検討する人に適しています。
主な機能
- 01現金とポイントの費用比較
- 02移行比率を反映した計算
- 03税金・手数料の考慮
- 04ポイント価値と機会費用の評価
- 05航空券とホテルの比較
活用シーン
- 01航空券を現金かポイントで予約する判断
- 02複数プログラムの特典航空券の比較
- 03ホテル特典の価値評価
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ borski/ travel-hacking-toolkit --skill trip-calculatorインストール後、Claude Code で/trip-calculatorを入力して読み込まれたか確認します。
詳細
旅行費用計算ツール
「現金で支払うべきか、ポイントを使うべきか?」を計算で答えます。
現金で予約する場合と、利用可能な各ポイント通貨で予約する場合の実質的な費用を比較します。移行比率、税金・手数料、ポイントを使う機会費用を考慮します。
API キーは不要です。 ローカルの JSON データファイルと、フライト/ホテルの検索結果を使用します。
データファイル
| ファイル | 目的 |
|---|---|
data/points-valuations.json | 各プログラムの CPP 評価(最低値/最高値) |
data/transfer-partners.json | クレジットカードからロイヤルティプログラムへの移行比率 |
使用する場面
- ユーザーが現金価格(Duffel/Ignav/Google Flights から取得)と特典価格(seats.aero から取得)の両方を持っている場合
- ユーザーが「現金で支払うべきか、ポイントを使うべきか?」と尋ねた場合
- ユーザーが特定の特典交換の CPP を知りたい場合
- ユーザーが旅行の複数の予約方法から選ぼうとしている場合
基本概念
1 ポイントあたりのセント数(CPP)
ポイントを交換したときに得られる、1 ポイントあたりの価値です。
cpp = (cash_price - taxes_on_award) / points_needed × 100
CPP が points-valuations.json の最低評価を上回る場合、平均以上の価値を得ています。最低評価を下回る場合は、交換条件がよくありません。
機会費用
ポイントは使わずに保有していても価値があります。Chase UR を 1.7 cpp(最低評価)で 10 万ポイント使うということは、将来の旅行の選択肢を 1,700 ドル分「使う」ことを意味します。
opportunity_cost = points_needed × floor_cpp / 100
現金価格が機会費用より低ければ、現金で支払います。高ければ、ポイントを使います。
判断の基準
IF cash_price < opportunity_cost → PAY CASH (points are worth more saved)
IF cash_price > opportunity_cost → USE POINTS (good redemption)
IF cash_price ≈ opportunity_cost → PAY CASH (preserve flexibility)
同額の場合は、ポイントの選択肢を残せるため、現金での支払いを選びます。
ワークフロー
ステップ 1:価格を集める
現金価格(以下のソースを 1 つ以上使用):
Duffel API → exact bookable fares
Ignav API → fast comparison prices
Google Flights → browser-based, includes Southwest
特典価格(seats.aero を使用):
Seats.aero API → cached availability across 25+ programs
Seats.aero web → live search (local Patchright only)
ステップ 2:各特典交換の CPP を計算する
対応する現金価格がある各特典交換について、次のように計算します。
cpp = (cash_price_usd - award_taxes_usd) / award_miles × 100
特典航空券の税金は、seats.aero の旅行詳細(セント単位の TotalTaxes フィールド)から取得します。取得できない場合は、米国内線は区間ごとに 5.60 ドル、国際線は 50~200 ドルを目安にしてください(航空会社や経路によって大きく異なります)。
ステップ 3:移行比率を考慮する
Chase UR、Amex MR など、移行可能なポイントを使う場合、実質的なポイント費用は変わります。
effective_points = award_miles / transfer_ratio
effective_cpp = (cash_price - award_taxes) / effective_points × 100
例:Capital One から 1:1 で移行して、Flying Blue の特典航空券を利用する場合:
- 実質ポイント数:50,000
- 現金価格:1,200 ドル、税金:100 ドル
- CPP:(1,200 ドル - 100 ドル)/ 50,000 × 100 = 2.2 cpp
比較対象:Capital One から 4:3 の比率(Cap One の移行比率としては最も不利)で移行して、別の Emirates 特典航空券を利用する場合:
- 必要な実質ポイント数:72,500 / 0.75 = 96,667 Cap One マイル
- 同じ現金相当額が 1,200 ドルの場合:(1,200 ドル - 100 ドル)/ 96,667 × 100 = 1.14 cpp。Flying Blue 経由より不利です。
重要:目的のプログラムへの移行に最適なポイント通貨を選んでください。 Emirates Skywards へは Bilt Rewards から 1:1 で移行できます(手数料なし、即時)。同じ Emirates の特典交換の場合、72,500 Bilt = 72,500 Skywards = (1,200 ドル - 100 ドル)/ 72,500 × 100 = 1.52 cpp です。移行を勧める前に、ユーザーが保有する移行可能なポイント通貨をすべて確認するため、必ず data/transfer-partners.json を調べてください。Bilt から Emirates への 1:1 の移行は、Capital One の 4:3 より大幅に有利です。このスキルではステップ 0 で transfer-partners を先に読み込み、利用可能なすべての経路を列挙することで、これを徹底します。
ステップ 4:評価値と比較する
points-valuations.json から評価値を読み込みます。
jq -r '.credit_card_points.chase_ultimate_rewards | "Chase UR: floor \(.floor)cpp, ceiling \(.ceiling)cpp"' data/points-valuations.json
| 評価 | 最低評価に対する CPP | 意味 |
|---|---|---|
| 優秀 | > 最高評価 | 非常に有利な交換です。予約しましょう。 |
| 良好 | > 最低評価 | 平均以上です。ポイントを有効に使えています。 |
| 普通 | 最低評価の 0.8 倍~1 倍 | あまりよくありません。現金での支払いを検討してください。 |
| 不良 | < 最低評価の 0.8 倍 | 条件が悪いです。現金で支払いましょう。 |
ステップ 5:比較結果を提示する
必ず Markdown の表を使用してください。
フライト: SFO → NRT ビジネスクラス、8月15日
| オプション | プログラム | マイル/ポイント | 諸税 | 現金換算 | CPP | 評価 |
|---|---|---|---|---|---|---|
| 現金 | — | — | — | $4,200 | — | — |
| United via Chase UR | United | 88,000 UR | $45 | $1,496 | 4.72 | 非常に良い |
| Aeroplan via Chase UR | Aeroplan | 75,000 UR | $120 | $1,275 | 5.44 | 非常に良い |
| Alaska via Bilt | Alaska | 55,000 Bilt | $30 | $935 | 7.58 | 非常に良い |
| Virgin Atlantic → ANA via Chase UR | VA | 52,500 UR | $200 | $893 | 7.62 | 非常に良い |
推奨:
- 最もお得: Virgin Atlantic の 7.62 cpp。ただし諸税が $200 かかり、予約には電話が必要です。
- 最も便利: Aeroplan の 5.44 cpp。オンラインで予約でき、諸税も低めです。
- 現金価格 ($4,200) 対 機会費用 ($893-$1,496): ポイントが圧勝です。ポイントを使いましょう。
ステップ6: 往復および複数区間
往復の場合は、各方向を個別に計算します。特典の価格設定は通常片道単位ですが、現金価格は往復単位であることがよくあります。必ず同じ条件で比較してください:
If cash = round-trip $4,200:
Compare against: outbound award + return award
e.g., 75K out + 75K return = 150K total vs $4,200 cash
CPP = ($4,200 - $240 taxes) / 150,000 = 2.64 cpp
jq レシピ
特定の通貨の最低評価額を取得する
jq -r '.credit_card_points.chase_ultimate_rewards.floor' data/points-valuations.json
機会費用を計算する
# 75,000 Chase UR points
POINTS=75000
FLOOR=$(jq -r '.credit_card_points.chase_ultimate_rewards.floor' data/points-valuations.json)
echo "$POINTS points × $FLOOR cpp = \$$(echo "$POINTS * $FLOOR / 100" | bc) opportunity cost"
1つのルートの完全な比較
# Cash: $4200 round trip. Award: 75000 Aeroplan each way, $120 taxes each way.
CASH=4200
MILES_ONEWAY=75000
TAXES_ONEWAY=120
TOTAL_MILES=$((MILES_ONEWAY * 2))
TOTAL_TAXES=$((TAXES_ONEWAY * 2))
echo "Cash: \$$CASH"
echo "Award: $TOTAL_MILES miles + \$$TOTAL_TAXES taxes"
echo "CPP: $(echo "scale=2; ($CASH - $TOTAL_TAXES) / $TOTAL_MILES * 100" | bc)"
# Opportunity cost at floor valuation
FLOOR=$(jq -r '.credit_card_points.chase_ultimate_rewards.floor' data/points-valuations.json)
echo "Opportunity cost: \$$(echo "scale=0; $TOTAL_MILES * $FLOOR / 100" | bc)"
ホテルの比較
同じフレームワークがホテルにも使えます:
hotel_cpp = (cash_rate_per_night × nights) / total_points × 100
ホテルの特典交換はフライトよりもばらつきが大きくなります。points-valuations.json のホテルセクションを使用してください:
- Hyatt: 最低 1.4 cpp(一貫して最も優秀なホテル系通貨)
- Hilton: 最低 0.4 cpp(ポイントコストが高く、1ポイントあたりの価値が低い)
- Marriott: 最低 0.6 cpp
プレミアムホテルプログラム(FHR、THC、Chase Edit)では、現金とポイントを比較する際に追加特典(朝食、アップグレード、クレジット、レイトチェックアウト)を考慮してください。$500/泊の FHR 料金に $100 の朝食クレジットとスイートアップグレードの可能性が付くなら、表示価格以上の価値があるかもしれません。
Chase トラベルポータル 対 ポイント転送
Chase Sapphire Reserve は Chase トラベルポータルで動的な Points Boost 価格設定を採用しています。特定の予約ではおよそ 1.5〜2.0 cpp になりますが、すべての予約で保証された最低ラインではありません。従来の 1.5 cpp の固定倍率はなくなりました — 現在の交換レートはルート、日付、在庫状況によって異なります。レートを前提とする前に、必ず実際のポータル価格を確認してください。
おおよその判断ルールです。ただし、実際のポータル見積もりを必ず確認するという条件付きです:
If actual portal CPP > award CPP → portal wins
If award CPP > actual portal CPP → transfer to partner wins
Sapphire Preferred も同様です(Points Boost 経由で通常 1.5〜1.75 cpp)。Amex ポータルはフライトで約 1.0 cpp(MR 1ポイントあたり1セント)です。Capital One ポータルは約 0.75〜1.0 cpp です。
ポイント対ポータルの推奨を行う前に、chase-travel または amex-travel スキルを使って必ず実際のポータル見積もりを取得してください。見出しのレートがあなたの特定の予約に適用されると思い込まないでください。
よくある落とし穴
- 特典の諸税/手数料を無視すること。 一部の航空会社(特に BA、Lufthansa、自社機材の Singapore)は特典航空券に $500 以上の燃油サーチャージを加算します。CPP を計算する前に必ず諸税を差し引いてください。
- 片道の特典と往復の現金を比較すること。 分母が一致していることを確認してください。
- 転送比率を忘れること。 Amex 経由で Emirates へ 5:4 で 50K マイルを移すと、50,000 ではなく 62,500 MR が必要です。
- ポータル価格を確認しないこと。 Chase/Amex ポータルの価格が転送の計算を上回ることがあります。
- 小さな差を過剰に最適化すること。 2つのオプションが 0.5 cpp 以内なら、ルートが良い方、諸税が低い方、または柔軟性が高い方を選びましょう。
注意事項
- ポイントの評価は主観的です。
points-valuations.jsonの最低ラインが最も根拠のある数値です。 - 「機会費用」は、あなたが最終的にそのポイントを最低評価額で使うことを前提としています。使う予定のない大量の残高を抱えている場合、実際の機会費用はより低くなります。
- 通貨の価値下落リスクは長期的な保有で重要です。ポイントは価値が下がっていく資産です。
- 転送ボーナスは計算を大きく変えることがあります。Chase → Flying Blue の 30% ボーナスなら、75K UR は 97.5K Flying Blue マイルになります。