/ インサイト ← インサイト一覧

韓国・日本・米国銘柄を1つのCSVに — 為替変動をリターンから切り分ける方法

2026.05.17 · マルチ通貨 · CSV · FX分離 · 한국어 ↗

円が5%下がった月、日経ETFのリターンからその5%がそのまま消えます。ユーザーは何もしていないのに、です。多国籍ポートフォリオを一つの画面で管理する人なら誰もがぶつかる疑問 — 「為替のせいで損したのか、銘柄そのものが下がったのか」 — をデータレベルで切り分けるワークフローを整理します。

なぜ単一通貨のリターンは嘘をつくのか

韓国在住のユーザーがSBI証券経由で日経225 ETF (1321) を保有しているとしましょう。2025年1月1日に100株購入、価格28,000円、当時のレートは1円 = 9.0ウォン。購入時点のウォン建て評価額は28,000 × 100 × 9.0 = 25,200,000ウォン。

1か月後、ETFの価格は28,000円のまま。しかし円が下がってレートは1円 = 8.55ウォン。ウォン建て評価額は28,000 × 100 × 8.55 = 23,940,000ウォン。購入時レート9.0ウォンで計算した元本25,200,000ウォンと比べると、損益−1,260,000ウォン、−5%です。

ユーザーの立場では「自分の買った銘柄が5%下がったのか?」という錯覚が起きかねません。実際には銘柄自体は0% — 為替だけが5%下がったのです。同じ28,000円を持っているのに、換算通貨が変わっただけの結果を銘柄の損益と読み違えてしまいます。

2種類のリターン

マルチ通貨ポートフォリオには常に2種類のリターンがあります:

リターンの種類計算方式意味
現地通貨リターン(現在価格 − 取得価格) / 取得価格、すべて現地通貨で銘柄自体の成績。為替ノイズはゼロ。
表示通貨リターン(現在評価額 − 投資元本) / 投資元本 — どちらも現在レートで表示通貨に換算表示通貨で見た損益額。元本と評価額を同じレートで換算するため、銘柄ごとの収益率%は現地通貨ベースと同じです。

どちらのリターンも有効です。どちらが「本物」というより、何を見たいかによって使い分けます。

CSV列設計 — 現地通貨をそのまま保存する

MultifoliosのCSVフォーマットが一つの原則で作られている理由がここにあります — 取得価格は常に現地通貨で記録する。換算しません。為替変換は表示時点で動的に処理されます。

symbol,currency,buyPrice,shares,accountName
005930.KS,KRW,72000,50,ミレーアセット
1321.T,JPY,28000,100,SBI
SOXL,USD,15.4,200,楽天
AAPL,USD,178.50,30,楽天

韓国銘柄はウォン単位、日本銘柄は円単位、米国銘柄はドル単位。そのまま。こう保存しておけば、為替が変動しても購入時点の「実際に支払った現地通貨の金額」は絶対に変わりません。

この例は現在の保有数量と平均取得単価を取り込む形式です。buyDate列を追加しても購入日は保有状況に保存されず、個別の購入履歴は復元されません。

ティッカーコードの規則

実践ワークフロー — 為替ノイズの分離

実際の利用シナリオを一つたどってみます。1321.T (日経225 ETF) 100株を28,000円で買ったユーザー。1か月後に確認。

ステップ1 — 表示通貨KRWで見る

ダッシュボード右上の設定で表示通貨KRWを選択。保有銘柄カードに表示される評価額・損益はすべてウォン換算。

結果: 1321.T 評価額23,940,000ウォン。ただしMultifoliosは投資元本も同じ現在レートで換算する(28,000 × 100 × 8.55 = 23,940,000ウォン)ため、画面の収益率は0.0%です — 購入時レート9.0ウォンを保存していないからです。

ステップ2 — 表示通貨をJPYに切り替え

同じ設定で表示通貨JPY。1321.T 評価額2,800,000円、損益0円、収益率0.0%。表示される金額の単位が変わるだけで、収益率はKRWのときと同じです。

つまり表示通貨を変えても総収益率%は変わりません。為替が損益にどれだけ寄与したかは、通貨切替ではなくダッシュボードの株価・為替寄与の分解(本日のサマリーの1行・月間評価額変化カード)で確認します。

ステップ3 — 銘柄自体の成績は現地通貨価格で確認

個別銘柄カードの収益率%は、常にその銘柄の現地通貨ベース収益率と同じです — 取得価格と現在価格が同じレートで換算されるためです。通貨を切り替えなくても、その値が為替ノイズのない銘柄自体の成績です。

例: 取得価格$40、現在価格$64の米国銘柄なら銘柄自体の収益率は+60%。表示通貨をKRWにしてもその銘柄の収益率%は+60%のままです。ただしポートフォリオ合計の収益率は複数通貨が混ざると為替で変わります — 為替が通貨別の比重を変えるためです。

よくある落とし穴

  1. 取得価格を換算してCSVに記入する: 28,000円を「ウォン換算で」252,000ウォンと記入するミス。為替は毎日変わるので、2回目の換算が発生した時に矛盾が生じます。常に現地通貨で。
  2. 表示通貨を変えただけで為替影響を確認したつもりになる: 表示通貨を変えても収益率%は変わりません。為替の寄与は本日のサマリーと月間カードの株価・為替寄与で確認してください。
  3. 購入時レートが必要なのに記録していない: Multifoliosは購入時レートを保存せず、元本・評価額をすべて現在レートで換算します。「当時のレートでいくらだったか」が必要なら、元の取引記録(実際の購入日・数量・単価)を別途保管し、それを外部ツールで過去為替と突き合わせて計算してください。
  4. CSVが購入履歴まで復元してくれると期待する: CSV取り込みは現在の保有数量と平均取得単価を収めた保有状況スナップショットです。複数日にわたる個別の購入ロットは自動復元されず、日付のない単一ポジションとして保存されます。分割購入の記録を残すにはアプリで直接入力する必要があり、過去の購入時レートを外部で計算するには元の取引記録と実際の購入日をCSVとは別に保管しておく必要があります。

CSVエクスポート → 外部分析

基本の保有状況CSVはsymbol,currency,buyPrice,shares,accountName,buyDateの順で出力します。buyDateは手入力した購入記録の最初の記録の日付で、CSV取り込み銘柄のように購入記録がなければ空欄です。個別の購入履歴全体を出力する形式ではありません。以下は基本CSVを外部ツールで分析する例です。

# Python の例 — 取得元本の換算額に対する為替シナリオ
import pandas as pd

df = pd.read_csv('multifolios-export.csv')
# 仮定: 現在価格 = 取得単価、価格・数量固定、円がさらに5%安
df_jp = df[df['currency'] == 'JPY'].copy()
df_jp['fx_scenario_krw'] = df_jp['buyPrice'] * df_jp['shares'] * 8.1225  # 仮定: 1円 = 8.1225ウォン (8.55 × 0.95)
df_jp['actual_krw'] = df_jp['buyPrice'] * df_jp['shares'] * 8.55       # 現在: 1円 = 8.55ウォン
df_jp['fx_impact'] = df_jp['fx_scenario_krw'] - df_jp['actual_krw']
print(df_jp[['symbol', 'fx_impact']])

上のコードは現在価格ではなくbuyPrice × sharesを使った取得元本の換算額に対する為替シナリオです。現在価格が取得単価と等しく、価格・数量が固定されると仮定した場合にのみ評価額の変化として解釈でき、一般的な現在の評価損益の計算ではありません。実際の評価額の変化には現在価格が必要で、購入時からの投資損益には元の取引記録と当時の為替レートも別途必要です。

「為替変動を損益に含めるかどうかは選択だが、常にその2つのリターンを別々に見られなければならない。」

まとめ

Sangji Lee
個人投資家・開発者 · Multifolios 制作・運営
複数の証券会社・通貨に散らばった資産を自分で追跡するうちに不便を感じ、Multifolios を作りました。実際に運用しながら直面したリターン計算・為替分離・リバランスの問題を記事にまとめています。お問い合わせ: 紹介・連絡先
サンプルポートフォリオで実際に確認
ログイン不要で全機能をすぐに体験できます。
デモを試す →
📬 週間マーケット要約を受け取る
毎週日曜、米国・韓国・日本市場のポイントをメールで — 無料。