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

韓国・日本・米国銘柄を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ウォン。トラッカーが表示する損益は−1,260,000ウォン、リターン−5%。

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

2種類のリターン

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

リターンの種類計算方式意味
現地通貨リターン(現在価格 − 取得価格) / 取得価格、すべて現地通貨で銘柄自体の成績。為替ノイズはゼロ。
表示通貨リターン(現在評価額 − 取得時評価額) / 取得時評価額、すべて表示通貨に換算ユーザーの「実際に口座に反映される」損益。為替変動を含む。

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

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

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

symbol,buyPrice,shares,buyDate,currency,accountName
005930.KS,72000,50,2024-03-15,KRW,ミレーアセット
1321.T,28000,100,2025-01-02,JPY,SBI
SOXL,15.4,200,2024-11-08,USD,楽天
AAPL,178.50,30,2023-09-12,USD,楽天

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

ティッカーコードの規則

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

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

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

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

結果: 1321.T 評価額23,940,000ウォン、損益−1,260,000ウォン、リターン−5.0%。ユーザーの視点では「5%の損失」に見えます。

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

同じ設定で表示通貨JPY。1321.T 評価額2,800,000円、損益0円、リターン0.0%。銘柄自体は変動なしだと即座に分かります。

2つの表示通貨の間のギャップ (−5% vs 0%) がまさに為替変動分。他に日本銘柄があれば、それらも同じギャップを持ちます — つまりそのギャップは「円安」という一つの要因から来ています。

ステップ3 — 米国銘柄だけUSDで検証

表示通貨USDに切り替え。米国銘柄の銘柄自体のリターンを即座に確認。韓国・日本銘柄はそのまま換算して表示されますが、米国銘柄はノイズのないネイティブなリターン。

例: SOXL 取得価格.4、現在価格.8 → +60.4%。表示通貨がKRWだったら、同じSOXLが+52%程度に (ウォン高分が差し引かれて) 見えていたかもしれません。USD基準が銘柄自体の成績の正直な答えです。

よくある落とし穴

  1. 取得価格を換算してCSVに記入する: 28,000円を「ウォン換算で」252,000ウォンと記入するミス。為替は毎日変わるので、2回目の換算が発生した時に矛盾が生じます。常に現地通貨で。
  2. 表示通貨を一度だけ見て判断する: KRWだけ見て「日経ETFが5%下がった」と銘柄分析の結論を出すこと。表示通貨をもう一度切り替えて確認する習慣が、銘柄分析の信頼度を大きく上げます。
  3. 取得時の為替レートを別途記録しない: CSVのbuyDate列がその役割を果たします。購入日付があれば、システムがその日の為替履歴を自動照会し「その時点の表示通貨評価額」を正確に算出します。
  4. 「単純平均」で取得価格をまとめる: 同じ銘柄を複数日に分割購入した場合、buyLotsフィールド (CSVに明記しなくてもシステムがbuyDate · buyPrice · sharesの組み合わせで自動構成) が加重平均を計算します。単純平均は小さい購入分を大きい購入と同等に扱い、誤った損益を生みます。

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

MultifoliosからCSVをエクスポートすると同じ列構成で出力されます — つまり外部ツール (Excel、Python pandas、Googleスプレッドシート) に持ち込んで為替シミュレーションを回すのに適した形です。

# 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.10  # 仮定: 1円 = 8.10ウォン
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']])

このパターンは「為替ヘッジをするかどうか」のような意思決定に直接役立ちます。日本ETFの比重が大きいなら、円がさらに5%安になった時に損益がどれだけ悪化するかを事前にシミュレーションし、その損益を許容できるかを判断します。

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

まとめ

Multifolios 運営者
個人投資家・開発者 · Multifolios 制作・運営
複数の証券会社・通貨に散らばった資産を自分で追跡するうちに不便を感じ、Multifolios を作りました。実際に運用しながら直面したリターン計算・為替分離・リバランスの問題を記事にまとめています。お問い合わせ: 紹介・連絡先