前提知識:分業・比較優位・交換 · 市場価格と弾力性 · 国内総生産と国民所得 · 金利・貯蓄・投資
海外でより安価に購入できる商品があり、消費者は恩恵を受ける可能性がある一方で、地元生産者は受注を失う可能性があります。自国通貨が下落すると、同じ企業の輸出見積もりはより魅力的になりますが、輸入部品や外貨建て債務のコストは上昇します。「貿易は有益である」あるいは「通貨安は輸出に好影響を与える」と述べるだけでは、特定の主体の収支を完全に計算したことにはなりません。
本稿では、まず固定為替レートの下で開放経済と関税を分析し、次に各商品の元の表示通貨での価格を固定した状態で為替レートの変動を観察します。すべての数値は教育目的の設定であり、二段階には異なる固定条件があり、一方の結果を調整せずに他方に移すことはできません。
開放市場が地元価格と数量に与える影響
ある商品の国内需要を Q d = 30 − 2 P 、供給を Q s = 2 P と設定します。価格は自国通貨建てです。貿易がない場合、両者は等しくなり、P = 7.5 、Q = 15 が得られます。
ここで、固定された世界価格 4 で輸入を許可します。本国市場は十分に小さく、購入量が外部価格に影響を与えないものとし、輸送コストはゼロ、商品品質は同一であると仮定します。国内価格は 4 に低下し、需要は 22、国内生産は 8 となり、輸入が 22-8=14 を補填します。
指標 貿易なし 自由輸入
国内価格 7.5 4
国内消費 15 22
国内生産 15 8
輸入 0 14
消費者はより多く購入し、地元生産者は生産量を縮小します。輸入は新規需要の同義語ではなく、また従来の 15 単位の国内産出物が直接 15 単位の外貨商品に置き換わるわけでもありません。需要と国内生産は、それぞれ独自の関係に沿って調整されます。
外部性がなく、競争が成立し、調整コストがゼロである条件の下では、この開放モデルにおける国内消費者余剰と生産者余剰の合計は 24.5 増加します。しかし、生産者自体は被害を受ける可能性があります。潜在的な総利益が、各労働者や企業がすでに補償を受け取ったことの証明にはなりません。
単位あたり1元関税の課税で、誰の収支が変わるか
世界供給価格 4 を維持したまま、単位あたり輸入税 1 を課し、完全な執行があり輸入が継続すると仮定すると、国内価格は 5 になります。需要は 20 に減少し、国内生産は 10 に増加し、輸入は 10 に減少します。
価格が 4 から 5 へ上昇したことに伴い消費者が減少する余剰は、台形の面積 (22+20)/2×1=21 です。国内生産者が増加する余剰は (8+10)/2×1=9 です。政府の税収は 1×10=10 です。
国内主体 余剰または財政収入の変化
消費者 −21
国内生産者 +9
政府 +10
合計 −2
このうち 19 は消費者から国内生産者と政府へ移転され、さらに 2 はどの国内主体の利益にもなりません。この 2 の内訳は、地元でコストの高い生産が輸入に取って代わる部分と、世界価格で購入する意思があった消費が消滅する部分です。これら2つの三角形はそれぞれ 1 です。
税収 10 を純粋な新規利益として扱い、消費者がすでにそれを支払ったことを忘れてはいけません。また、国内で新たに2単位生産されたことを直接、純粋な厚生改善と見なしてはいけません。ここでは意図的に、小国、固定された外国価格、その他の市場失敗がないモデルを使用しています。外国価格の変動、報復、規模の経済、または国家安全保障などの目標は、別途構築する必要があるメカニズムであり、この計算結果にこっそり組み込むことはできません。
移行期の個人は、自動的に総量数字にはならない
開放によって競争に晒された労働者は、職替え、転居、または研修を必要とする可能性があります。設備も旧産業に特化している場合があります。これらのコストは特定の地域や世帯にのしかかり、新しい機会が生まれるよりも早く発生します。長期的な比較優位による利益の空間は、これらの実際の費用を相殺するものではありません。
政策は職替えの支援、保険、公共サービス、または調整速度のサポートを試みることができますが、その有効性は対象と結果次第です。算数的に補償が存在する可能性はあっても、社会がすでに補償を決定し実行したかどうかは別の問題です。
同様に、特定の雇用を保護することは、輸入投入財を使用する他の企業にコストを負わせることになります。ある規則を研究する際は、保護された単一の工場を提示するだけでなく、サプライチェーンの上下、消費者、財政の主体を追跡すべきです。
為替レートへの変更:単位を明確にしてから計算
L を自国通貨、F を外貨とし、為替レート e を「1 F あたり必要な L の量」と定義します。e = 7 から e = 8 への変化は、同じ単位の外貨を購入するためにより多くの自国通貨を支払う必要があり、すなわち L は F に対して下落します。
元の表示通貨で金額が固定された項目 e=7 e=8
輸入品価格 10 F、自国通貨請求額 70 L 80 L
輸出品価格 70 L、外国購入者請求額 10 F 8.75 F
外貨債務 100 F、自国通貨での返済額 700 L 800 L
輸入と債務は外貨金額に e を乗じ、輸出の外貨建て見積もりは自国通貨金額を e で割ります。逆の為替レート表示を採用した場合、数値の方向も逆になります。「為替レートが上がった」という場合、単位を明示しないと誤解を生みやすいです。
図を準備しています 再読み込み
条件を変えて結果を確かめる レートは1 F当たりL。7→8で輸入10 Fは70→80 L、輸出70 Lは10→8.75 F、債務100 Fは700→800 L。
{"id":"economics-25","title":"条件を変えて結果を確かめる","summary":"レートは1 F当たりL。7→8で輸入10 Fは70→80 L、輸出70 Lは10→8.75 F、債務100 Fは700→800 L。","height":750,"html":"<div class=\"controls\"><label for=\"rate\"><span data-i18n=\"rate\"></span><output id=\"out-rate\" for=\"rate\"></output><input id=\"rate\" type=\"range\" min=\"4\" max=\"10\" step=\"0.5\" value=\"7\"></label></div><button id=\"reset\" type=\"button\" data-i18n=\"reset\"></button><div id=\"graphic\"></div><div id=\"results\" class=\"results\" role=\"status\" aria-live=\"polite\" data-i18n-label=\"result\"></div><p class=\"scope\" data-i18n=\"scope\"></p>","css":"body{padding:20px}h2{font-size:19px;margin:0 0 14px}.controls{display:grid;gap:16px}label{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px;font-size:15px}select,input{grid-column:1/-1;width:100%;min-width:0;font:inherit}select{padding:10px;background:var(--paper);color:var(--ink);border:1px solid var(--rule);border-radius:6px;white-space:normal}input{accent-color:var(--accent)}button{min-height:44px;margin:16px 0;font:inherit}.plot{display:block;width:100%;max-width:560px;height:auto;margin:auto}.plot text{fill:var(--ink);font-size:14px}.legend{display:flex;gap:12px;flex-wrap:wrap;margin:8px 0;font-size:14px}.legend i{display:inline-block;width:16px;height:3px;margin-right:5px;vertical-align:middle}.results{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:16px}.metric{border:1px solid var(--rule);padding:10px;border-radius:6px;min-width:0}.metric span{display:block;font-size:14px;min-height:3.5em;overflow-wrap:anywhere}.metric strong{font-size:22px;font-weight:600}.barrow{margin:14px 0;font-size:15px}.barlabel{display:flex;justify-content:space-between;gap:10px}.bar{height:16px;background:var(--surface);margin-top:5px}.bar i{display:block;height:100%;background:var(--accent)}.stack{display:flex;height:35px;margin:15px 0}.stack span{display:flex;align-items:center;justify-content:center;color:var(--paper);font-size:13px}.scope{font-size:14px;color:var(--muted);margin:14px 0 0;line-height:1.65}@media(max-width:380px){body{padding:14px 10px}.results{gap:6px}.metric{padding:8px}.metric strong{font-size:19px}}.accounts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.account{border:1px solid var(--rule);border-radius:8px;padding:12px;min-width:0}.account h3{font-size:16px;margin:0 0 12px}.account dl{margin:0}.account dt{font-size:13px;overflow-wrap:anywhere}.account dd{margin:2px 0 12px;font-variant-numeric:tabular-nums}.account .changed{font-weight:700;color:var(--accent)}.area-legend{font-size:14px;line-height:1.7}.area-legend span{display:block}.area-legend i{display:inline-block;width:12px;height:12px;margin-right:6px}@media(max-width:480px){.accounts{grid-template-columns:1fr}}","js":"const N=25,DEFAULTS={\"rate\": 7};\n/* Pure, deterministic teaching models. Values are synthetic, not estimates. */\nfunction economy(n,p){\n if(n===6){const q=p.remaining,P0=10,P1=12,Q0=100;return{metrics:{oldRevenue:P0*Q0,newRevenue:P1*q,retainedGain:(P1-P0)*q,lostRevenue:P0*(Q0-q),elasticity:Math.abs(((q-Q0)/((q+Q0)/2))/((P1-P0)/((P1+P0)/2)))},revenueAreas:{remaining:q,oldPrice:P0,newPrice:P1,oldQuantity:Q0}};}\n if(n===5){const shift=p.scenario===1?20:0,supply=p.scenario===2?-20:0,P=(100+shift-supply)/20,Q=20+supply+10*P;return{metrics:{price:P,quantity:Q},plot:{xmax:140,ymax:14,x:'quantity',y:'price',lines:[{key:'demand',points:[[0,(120+shift)/10],[120+shift,0]]},{key:'supply',points:[[Math.max(0,20+supply),0],[140,(120-supply)/10]]},{key:'base',points:[[0,5],[140,5]],dash:true}],dot:[Q,P]}};}\n if(n===8){const b=p.response,bs=10,t=p.tax,Pb=5+bs*t/(b+bs),Ps=5-b*t/(b+bs),Q=70-b*bs*t/(b+bs);return{metrics:{buyer:Pb,seller:Ps,quantity:Q,revenue:t*Q,loss:.5*t*(70-Q)},plot:{xmax:100,ymax:20,x:'quantity',y:'price',areas:[{key:'revenue',points:[[0,Ps],[Q,Ps],[Q,Pb],[0,Pb]]},{key:'loss',points:[[Q,Ps],[Q,Pb],[70,5]]}],lines:[{key:'demand',points:[[0,5+70/b],[Math.min(100,70+5*b),Math.max(0,5+(70-100)/b)]]},{key:'supply',points:[[20,0],[100,8]]},{key:'base',points:[[0,5],[100,5]],dash:true},{key:'wedge',points:[[Q,Ps],[Q,Pb]]}],dot:[Q,Pb]}};}\n if(n===18){let index=100+p.weight*p.rise/100;return{metrics:{index,inflation:index-100},bars:[{key:'base',v:100},{key:'new',v:index}],max:180};}\n if(n===19){let E=60,U=10,N=30;if(p.scenario===1){E+=5;U-=5;}if(p.scenario===2){U-=5;N+=5;}if(p.scenario===3){U+=5;N-=5;}return{metrics:{employment:E,unemployment:U,participation:100*(E+U)/100,urate:100*U/(E+U),erate:E},stack:[E,U,N],stackKeys:['employment','unemployment','outside']};}\n if(n===20){const step=p.scenario;let reserves=100,loan=0,deposit=80,equity=20,br=0,bd=0;if(step!==0){loan=60;deposit=140;}if(step===2){reserves-=60;deposit-=60;br=60;bd=60;}if(step===3){loan=40;deposit=120;}const vals={reserves,loan,deposit,equity,bankBreserves:br,bankBdeposits:bd,borrowerDeposit:step===2?0:loan,borrowerGoods:step===2?60:0,borrowerDebt:loan,merchantDeposit:bd,merchantGoods:step===2?0:60};const prev=step>1?economy(20,{scenario:1}).accounts:economy20initial();return{metrics:{reserves,loan,deposit,equity,bankBreserves:br,bankBdeposits:bd,assets:reserves+loan,liabilities:deposit+equity},accounts:vals,ledger:[['bankA',['reserves','loan','deposit','equity']],['bankB',['bankBreserves','bankBdeposits']],['borrower',['borrowerDeposit','borrowerGoods','borrowerDebt']],['merchant',['merchantDeposit','merchantGoods']]].map(([title,keys])=>({title,items:keys.map(key=>({key,value:vals[key],delta:vals[key]-prev[key]}))}))};}\n if(n===22){const c=p.consume,shock=p.shock,rounds=Array.from({length:8},(_,k)=>shock*c**k);return{metrics:{total:shock/(1-c),shown:rounds.reduce((a,b)=>a+b,0),multiplier:1/(1-c)},bars:rounds.map((v,k)=>({label:String(k+1),v})),max:100,rounds};}\n if(n===25){const e=p.rate;return{metrics:{importBill:10*e,exportBill:70/e,debtBill:100*e},bills:true};}\n if(n===26){const A=p.tech,s=p.save/100,d=.1,k=(s*A/d)**2,y=A*Math.sqrt(k),trajectory=[];let current=25;for(let t=0;t<=60;t++){const output=A*Math.sqrt(current),investment=s*output,depreciation=d*current;trajectory.push({t,k:current,y:output,consumption:(1-s)*output,investment,depreciation});current+=investment-depreciation;}return{metrics:{capital:k,output:y,consumption:(1-s)*y},trajectory,plot:{xmax:60,ymax:Math.max(10,...trajectory.map(a=>a.y))*1.1,x:'period',y:'perPersonFlow',lines:[{key:'baselineConsumption',points:[[0,7.5],[60,7.5]],dash:true},{key:'outputPath',points:trajectory.map(a=>[a.t,a.y])},{key:'consumptionPath',points:trajectory.map(a=>[a.t,a.consumption])}]}};}\n throw Error('Unknown lesson');\n}\nfunction economy20initial(){return{reserves:100,loan:0,deposit:80,equity:20,bankBreserves:0,bankBdeposits:0,borrowerDeposit:0,borrowerGoods:0,borrowerDebt:0,merchantDeposit:0,merchantGoods:60};}\nif(typeof module!=='undefined')module.exports={economy};\n\nfunction renderTeachingView(r,el){\n if(r.ledger){\n el.innerHTML='<div class=\"accounts\">'+r.ledger.map(a=>'<section class=\"account\"><h3>'+escape(viz.t(a.title))+'</h3><dl>'+a.items.map(v=>`<dt>${escape(viz.t(v.key))}</dt><dd class=\"${v.delta?'changed':''}\">${viz.number(v.value)} (${v.delta>0?'+':''}${viz.number(v.delta)})</dd>`).join('')+'</dl></section>').join('')+'</div><p class=\"scope\">'+escape(viz.t('delta'))+'</p>';\n $('#results').hidden=true;\n }\n if(r.revenueAreas){const a=r.revenueAreas,x=q=>45+q*2.65,y=p=>213-p*14,q=a.remaining;\n let s=`<svg class=\"plot\" viewBox=\"0 0 360 270\" role=\"img\" aria-label=\"${escape(viz.t('figure'))}\"><path d=\"M45 28V213H322\" fill=\"none\" stroke=\"var(--rule)\"/>`;\n const rect=(x0,x1,p0,p1,c)=>`<rect x=\"${x(x0)}\" y=\"${y(p1)}\" width=\"${(x1-x0)*2.65}\" height=\"${(p1-p0)*14}\" fill=\"${c}\" fill-opacity=\".48\" stroke=\"${c}\"/>`;\n s+=rect(0,q,0,10,'#5277ab')+rect(0,q,10,12,'#247756')+rect(q,100,0,10,'#b56838');\n for(const p of[0,10,12])s+=`<text x=\"37\" y=\"${y(p)+4}\" text-anchor=\"end\">${p}</text>`;\n for(const v of[0,50,100])s+=`<text x=\"${x(v)}\" y=\"235\" text-anchor=\"middle\">${v}</text>`;\n s+=`<text x=\"45\" y=\"20\">${escape(viz.t('price'))}</text><text x=\"310\" y=\"261\" text-anchor=\"end\">${escape(viz.t('quantity'))}</text></svg>`;\n el.innerHTML=s+'<div class=\"area-legend\">'+[['retainedBase','#5277ab'],['retainedGain','#247756'],['lostRevenue','#b56838']].map(([k,c])=>`<span><i style=\"background:${c}\"></i>${escape(viz.t(k))}</span>`).join('')+'</div>';\n }\n}\n\nconst $=s=>document.querySelector(s),col=['var(--accent)','var(--second)','#7581ae','#b36b47'];\nconst escape=s=>String(s).replace(/[&<>\"']/g,c=>({'&':'&','<':'<','>':'>','\"':'"',\"'\":'''}[c]));\nfunction render(){\n let p={};for(const k of Object.keys(DEFAULTS)){p[k]=Number($('#'+k).value);let o=$('#out-'+k);if(o)o.textContent=viz.number(p[k]);}\n const r=economy(N,p);document.body.dataset.result=JSON.stringify(r.metrics);document.body.dataset.params=JSON.stringify(p);\n $('#results').innerHTML=Object.entries(r.metrics).map(([k,v])=>`<div class=\"metric\"><span>${escape(viz.t(k))}</span><strong data-metric=\"${k}\">${viz.number(v,2)}</strong></div>`).join('');\n const el=$('#graphic');el.replaceChildren();\n if(r.plot){const a=r.plot,x=q=>48+q/a.xmax*278,y=v=>205-v/a.ymax*164;\n let svg=`<svg class=\"plot\" viewBox=\"0 0 360 258\" role=\"img\" aria-label=\"${escape(viz.t('figure'))}\"><path d=\"M48 30V205H333\" fill=\"none\" stroke=\"var(--rule)\"/>`;\n for(const q of [0,a.xmax/2,a.xmax])svg+=`<text x=\"${x(q)}\" y=\"226\" text-anchor=\"middle\">${viz.number(q,1)}</text>`;\n for(const v of [0,a.ymax/2,a.ymax])svg+=`<text x=\"39\" y=\"${y(v)+4}\" text-anchor=\"end\">${viz.number(v,1)}</text>`;\n svg+=`<text x=\"48\" y=\"20\">${escape(viz.t(a.y))}</text><text x=\"326\" y=\"251\" text-anchor=\"end\">${escape(viz.t(a.x))}</text>`;\n (a.areas||[]).forEach((region,j)=>{svg+=`<polygon points=\"${region.points.map(([xx,yy])=>x(xx)+','+y(yy)).join(' ')}\" fill=\"${j===0?'#4c8c9d':'#bd7446'}\" fill-opacity=\".30\"/>`;});\n a.lines.forEach((l,j)=>{svg+=`<polyline fill=\"none\" stroke=\"${col[j]}\" stroke-width=\"${l.key==='wedge'?5:2.5}\" ${l.dash?'stroke-dasharray=\"5 4\"':''} points=\"${l.points.map(([xx,yy])=>x(xx)+','+y(yy)).join(' ')}\"/>`;});\n if(a.dot)svg+=`<circle cx=\"${x(a.dot[0])}\" cy=\"${y(a.dot[1])}\" r=\"5\" fill=\"var(--ink)\"/>`;\n el.innerHTML=svg+'</svg><div class=\"legend\">'+a.lines.map((l,j)=>`<span><i style=\"background:${col[j]}\"></i>${escape(viz.t(l.key))}</span>`).join('')+(a.areas||[]).map((a,j)=>`<span><i style=\"height:10px;background:${j===0?'#4c8c9d':'#bd7446'}\"></i>${escape(viz.t(a.key))}</span>`).join('')+'</div>';\n }else if(r.bars){el.innerHTML=r.bars.map(b=>`<div class=\"barrow\"><div class=\"barlabel\"><span>${escape(b.key?viz.t(b.key):viz.t('round')+' '+b.label)}</span><strong>${viz.number(b.v)}</strong></div><div class=\"bar\"><i style=\"width:${Math.abs(b.v)/Math.max(r.max,...r.bars.map(a=>Math.abs(a.v)))*100}%\"></i></div></div>`).join('')+(N===22?`<p class=\"scope\">${escape(viz.t('negative'))}</p>`:'');\n }else if(r.stack){el.innerHTML='<div class=\"stack\">'+r.stack.map((v,j)=>`<span style=\"width:${v}%;background:${col[j]}\">${v}</span>`).join('')+'</div><div class=\"legend\">'+r.stackKeys.map((k,j)=>`<span><i style=\"background:${col[j]}\"></i>${escape(viz.t(k))}</span>`).join('')+'</div>';}\nrenderTeachingView(r,el);\n}\nfor(const k of Object.keys(DEFAULTS))$('#'+k).addEventListener('input',render);\n$('#reset').addEventListener('click',()=>{for(const[k,v]of Object.entries(DEFAULTS))$('#'+k).value=v;render();});render();\n","audio":false,"strings":{"debtBill":"100 Fの債務 / L","exportBill":"70 Lの輸出品 / F","figure":"現在の条件による図。正確な値は下の結果に示す。","importBill":"10 Fの輸入品 / L","rate":"為替レート / L毎F","reset":"基準に戻す","result":"計算結果","scope":"レートは1 F当たりL。7→8で輸入10 Fは70→80 L、輸出70 Lは10→8.75 F、債務100 Fは700→800 L。"}}
まず紙の上に3つの請求書を予測し、その後 e を変更します。インタラクティブ表示では、各項目の元の表示通貨での価格と数量を固定し、換算のみを示し、価格の再交渉、ヘッジ、数量反応、または貿易収支は含めません。したがって、これは直接的なエクスポージャー(為替リスク)を説明できますが、企業の最終利益を直接予測することはできません。
なぜ通貨安が輸出企業の純利益を保証しないか
ある輸出企業が 70 L で見積もりを行い、L の通貨安により外国顧客の請求額は 10 F から 8.75 F に低下し、購買意欲が増加する可能性があります。しかし、企業が部品として 5 F を輸入する必要がある場合、部品の自国通貨コストも 35 L から 40 L に上昇し、利潤マージンが圧迫されます。
企業は自国通貨建て価格を調整する可能性があり、外国顧客は長期契約や需要の変化の影響を受ける可能性があります。外貨建て借入がある場合、返済負担も生じます。最終的な結果は、数量、製品価格、投入財の通貨、および債務を一緒に計算する必要があり、輸出収入の片側だけを見てはいけません。
経済全体の貿易収支も、輸出入価格、数量、反応時間によって決まります。短期契約では数量を変更しにくく、自国通貨建ての輸入請求額はまず高くなります。長期的な代替と輸出注文は徐々に調整されます。弾力性編における市場範囲と期間も、ここでは同様に重要です。
為替レートの変動はどこから来るのか、会計は何を示すのか
貿易決済、越境投資、相対利子率、リスク予想などが外貨需要と供給に影響を与え、具体的な為替レート制度が、どの価格と数量が調整可能かを決定します。貿易黒字の1件や利子率引き下げの1回だけで、将来の為替レートがどうなる必然性を導き出すことはできません。
名目為替レートは通貨間の交換比率です。相対商品価格を議論するには、両地域の物価水準を加味して実質為替レートと競争力を検討する必要があります。生産性、品質、サービスの差異は、通貨換算によって消滅することはありません。
GDP 計算式における輸入控除は、外国産出を国内産出として計上しないためのものであり、輸入に対する厚生の否定的な評価ではありません。貿易統計、国民所得、企業利益、家庭生活水準にはそれぞれ異なる集計基準があり、問題を明確にしてから適切な帳表を選択すべきです。
2回の換算を独立して行う
自国通貨建ての1単位外貨価格が 8 から 6 に低下した場合、固定された 100 F の債務の自国通貨負担はどのように変化するか?自国通貨は上昇したか、それとも下落したか?
推論を展開
負担は 800 L から 600 L に減少し、200 L 減ります。1単位の外貨を購入するために必要な自国通貨が減るため、L は上昇します。元本、通貨、契約が変わらない限り、債務の外貨金額は依然として 100 のままであり、元本が 25 F 減少したとは言えません。
関税のケースでは、政府が 10 を受け取り、地元生産者が 9 を得ています。政策が国内の純利益 19 を生み出したと言えるか?もし安全保障上の利益を追加したい場合、どのようにすべきか?
推論を展開
消費者の損失 21 を同時に計上しなければなりません。元のモデルにおける純効果は −2 です。もし安全保障上の利益がある場合、対象、比較可能な集計基準、条件、証拠を明確にし、資源コストと比較する必要があります。単にラベルを貼るだけでは、それが 2 を超えると自動的にみなすことはできません。モデル外の目標について議論することは可能ですが、明示的に追加しなければならず、既存の帳表を書き換えることはできません。
参考資料
以下は概念・統計定義の参考資料です。数値例と図は独自の教材用設定です。
OpenStax · Production Possibilities and Comparative Advantage · OpenStax · The Foreign Exchange Market