LabHub

ブログ

証券会社のリスク管理とコンプライアンス職務:速い市場を統制する仕事

한국어English日本語

対象者

本記事は、証券会社のリスク管理、コンプライアンス、内部統制、オペレーショナルリスク、信用管理の職務を準備している方を対象としています。求人票のキーワードを丸暗記するのではなく、その言葉が実際にはどのような成果物(VaRレポート、ECL計算書、限度超過アラート、SAR報告)に変わるのかを理解することに焦点を置きます。求人票に書かれている「市場リスクのモニタリング」「Basel III対応」「インサイダー取引検知」が、机の上で具体的にどのExcel、どのSQL、どの会議として現れるかを整理します。FRM/CFAを取得したいが進路が曖昧な方、東証や金融庁を目指している方にも役立ちます。

なぜリスク・コンプライアンスは「統制する仕事」なのか

証券会社の他の職務がお金を稼ぐ仕事だとすれば、リスク・コンプライアンスはお金が漏れ出さないようにする仕事です。トレーダーは1秒で1億円を稼ぐことも失うこともあります。プライベートバンカーは顧客資産を運用しますが、利益相反に陥れば会社全体が揺れます。IBバンカーは大型ディールを成立させますが、記載誤り一つで損害賠償に巻き込まれます。統制部署はこれら全ての職務の背後で、限度、手順、証跡、報告を作っています。

「統制」という言葉は堅苦しく聞こえるかもしれませんが、実際には会社が潰れないようにする最後のシートベルトです。Barings Bankが1995年にニック・リーソン一人のせいで233年の歴史を終わらせたのも、MF Globalが2011年に欧州国債への賭けで崩壊したのも、Archegosが2021年3月にわずか数日で100億ドルを失ったのも、結局は限度管理と統制失敗の物語です。リスク・コンプライアンス職は、これらの事件が自社で起きないように毎日データを見て、限度を調整し、取引を検証します。

4種類のリスク: Market / Credit / Operational / Liquidity

リスクを4つに分けるのはBaselの分類と同じです。それぞれ測定方法と統制手段が異なります。

面接で「4つのリスクを説明せよ」と聞かれたら、定義と一緒に例も話すべきです。定義だけだと教科書から取ってきた答えになり、例を添えると現場を見た答えになります。

Market Risk: VaR (Historical/Parametric/MC), Expected Shortfall, FRTB

市場リスクの中心指標はVaR(Value at Risk)です。「明日95%の確率で損失がX円を超えない」という意味です。測定方法は3つに分かれます。

VaRの弱点は裾の向こうを見ないことです。だからES(Expected Shortfall, CVaR)を一緒に見ます。ESは「95% VaRを超える損失の平均」です。BaselのFRTB(Fundamental Review of the Trading Book)は2023年からVaRに代えてESを標準指標とし、資産クラスごとに流動性ホライズンを変えました。日本は2024年から段階適用中です。

実務では日次VaR限度、月次ES限度、危機シナリオ用のstressed VaRを併せて見ます。限度超過が出ると、リスク部署がトレーダーにポジション縮小やヘッジ追加を要請します。

Credit Risk: PD/LGD/EAD, IFRS 9 Stage 1/2/3, Basel III/IV

信用リスクは3つのパラメータに分解します。

ECL(Expected Credit Loss) = PD × LGD × EAD。これがIFRS 9の核心式です。

IFRS 9は資産を3つのStageに分けます。

Basel III/IVは自己資本比率(CAR)を8%以上に維持することを要求します。RWA(Risk-Weighted Assets)計算時に標準的手法またはIRB(Internal Ratings-Based)モデルを使います。Basel IVはIRBモデルのフロアを標準的手法の72.5%に固定しました。韓国は2023年から、日本は2024年から段階的に適用中です。

Operational + Liquidity Risk: KRI, RCSA + LCR + NSFR

オペレーショナルリスクは事故が起きる前に兆候を読みます。

流動性リスクはBasel IIIが作った2つの指標で見ます。

証券会社は銀行よりも短期レポ、コール、CPへの依存度が高く、流動性危機が速く訪れます。2020年3月に米国ブローカーディーラーがMMFの解約に追われLCRが揺れたのが代表例です。

実際の一日: 7am→9am Risk Committee→11am stress test→2pm trade review→4pm reg report

リスク・コンプライアンス実務者の平凡な一日はこんな感じです。

会社ごとに違いはありますが、モニタリング → 委員会 → シナリオ → レビュー → 報告のサイクルは似ています。

Compliance: KYC/eKYC/AML/CTR/SAR/Sanctions/Market Surveillance

コンプライアンスは取引自体を止める部署ではなく、取引が合法的かつ倫理的に行われているかを確認する部署です。

KYCが初回1回ならongoing monitoringは生涯続きます。顧客の取引パターンがKYC段階で申告した職業・所得と合わなくなるとアラートが上がります。

規制フレームワーク: Basel III/IV, MiFID II, Dodd-Frank, Volcker, FATCA, CRS

グローバル証券会社が従わなければならない主要規制フレームワークです。

これらの規制は「日系企業だから関係ない」では済みません。米国市民が日本の証券口座を開けばFATCA、EU居住者が日本のETFを買えばMiFID IIの影響が一部入ります。グローバルIBは4-5の規制を同時に見ています。

韓国規制 (FSS/FSC/KOFIU/KRX) + 日本 (SESC/FSA/JPX) + グローバル (SEC/FINRA/FCA)

韓国:

日本:

グローバル:

面接で「志望職務と関連する規制3つを挙げよ」という質問に金商法、Basel III、AMLぐらいで答えられれば平均以上です。

内部統制 (COSO/SOX/J-SOX/Three Lines of Defense)

内部統制フレームワークはCOSO ERMが事実上の標準です。統制環境、リスク評価、統制活動、情報と伝達、モニタリングの5要素。

SOX(Sarbanes-Oxley Act)は2002年エンロン事件後に米国議会が制定。Section 404が核心で、経営陣が内部統制の有効性を評価し、会計事務所が検証します。日本は金融商品取引法でJ-SOX、韓国は外部監査法でK-SOXがあります。

Three Lines of Defenseモデル:

このモデルを面接で説明できれば「なぜ統制職務が複数部署に分かれているのか」に答えられます。

ツールスタック: Bloomberg PORT, MSCI RiskMetrics, Numerix, Murex, NICE Actimize

リスク・コンプライアンス実務でよく使うツールです。

新卒は全てのツールを知る必要はありませんが、BloombergとSQLは面接でよく聞かれます。

失敗事例: Barings, MF Global, SocGen Kerviel, Archegos, オプティマス/ライム

リスク統制失敗の古典的事例です。

面接で「最近のリスク事件を一つ選んで分析せよ」という質問がよく出ます。Archegosは2021年の事件ですがカウンターパーティ/集中リスク/TRSなど教科書の主題が全て入っているのでよい題材です。

KPI: RWA, CAR, VaR limit breach, compliance training, 事故件数

リスク・コンプライアンス部署のKPIは会社ごとに異なりますが、よく見るものは以下のとおりです。

KPIをどう設定するかで部署の行動が変わります。厳しすぎれば営業の足を引っ張り、緩すぎれば事故を防げません。

面接質問20選 (最も怖いリスク, KRI 5つ, Archegosへの意見)

質問は正解が決まっているものではなく、思考の構造を見るものです。結論一文、根拠2-3つ、現場適用1つを組み合わせて答えると点数が高くなります。

年収: 韓国新卒5-7千万ウォン→1.5億+, 日本 700-1300万円, 米国 $150K-180K

おおよその水準です。会社と年次によって幅があります。

日本:

米国:

ロンドン/香港/シンガポールは米国と同水準かやや低い水準。コンプライアンスよりquant riskのボーナス比率が高めの傾向。

キャリアパス: Risk Analyst→Senior→VP→Director→CRO

典型的な経路です。

代替経路:

リスク・コンプライアンスは一度入れば業界内で動きやすい職務です。データ、規制、商品知識は会社が変わっても通用します。

資格: FRM, CFA, PRM, CAIA, CIA, CAMS

最も推奨される資格の順序です。

新卒はFRM Part 1または証券外務員一種を最初に見るのが良いです。どちらも6ヶ月以内に取得可能で、面接でシグナルになります。

90日学習ルーティン

ルーティンの目標は資料を全部読むことではなく、自分の言葉の回答を作ることです。週に成果物一つ(分析記事、Excel、チャート)を残せば90日後に12の根拠が生まれます。

References

# VaR計算例
# Historical VaRとMonte Carlo VaRの2種類

import numpy as np
import pandas as pd

# 仮定: 日経平均5年分の日次収益率(1,250営業日)
np.random.seed(42)
returns = np.random.normal(0.0005, 0.015, 1250)  # 平均 0.05%, std 1.5%
portfolio_value = 1_000_000_000  # 10億円

# 1. Historical VaR (95% 1-day)
sorted_returns = np.sort(returns)
percentile_5 = sorted_returns[int(0.05 * len(sorted_returns))]
historical_var = -percentile_5 * portfolio_value
print(f"Historical 1-day 95% VaR: {historical_var:,.0f} JPY")

# 2. Expected Shortfall (CVaR)
tail_returns = sorted_returns[:int(0.05 * len(sorted_returns))]
expected_shortfall = -np.mean(tail_returns) * portfolio_value
print(f"95% Expected Shortfall: {expected_shortfall:,.0f} JPY")

# 3. Monte Carlo VaR (正規分布仮定)
mu = np.mean(returns)
sigma = np.std(returns)
n_simulations = 100_000
mc_returns = np.random.normal(mu, sigma, n_simulations)
mc_var = -np.percentile(mc_returns, 5) * portfolio_value
print(f"Monte Carlo 1-day 95% VaR: {mc_var:,.0f} JPY")
# IFRS 9 ECL計算例
# Expected Credit Loss = PD x LGD x EAD

import pandas as pd

# 社債ポートフォリオ
portfolio = pd.DataFrame({
    "bond_id": ["B001", "B002", "B003", "B004"],
    "rating": ["AAA", "BBB", "BB", "B"],
    "pd_1y": [0.0002, 0.003, 0.015, 0.05],   # 1年倒産確率
    "lgd": [0.45, 0.60, 0.70, 0.75],          # 損失率
    "ead": [1_000_000_000, 500_000_000, 200_000_000, 100_000_000],
    "stage": [1, 1, 2, 3],                     # IFRS 9 Stage
})

# Stage別ECL計算
# Stage 1: 12ヶ月ECL
# Stage 2/3: Lifetime ECL (3年想定)
def calc_ecl(row):
    if row["stage"] == 1:
        return row["pd_1y"] * row["lgd"] * row["ead"]
    else:
        # 簡略化: 3年累積PD = 1 - (1 - PD_1y)^3
        pd_lifetime = 1 - (1 - row["pd_1y"]) ** 3
        return pd_lifetime * row["lgd"] * row["ead"]

portfolio["ecl"] = portfolio.apply(calc_ecl, axis=1)
print(portfolio)
print(f"Total ECL: {portfolio['ecl'].sum():,.0f} JPY")
-- 限度超過取引検知クエリ
-- 日次トレーディング限度と実際の取引を比較

WITH daily_position AS (
    SELECT
        trader_id,
        trade_date,
        instrument_type,
        SUM(notional_amount) AS gross_notional,
        SUM(CASE WHEN side = 'BUY' THEN notional_amount ELSE -notional_amount END) AS net_notional
    FROM trades
    WHERE trade_date = CURRENT_DATE
    GROUP BY trader_id, trade_date, instrument_type
),
limits AS (
    SELECT trader_id, instrument_type, daily_limit
    FROM trader_limits
    WHERE effective_date <= CURRENT_DATE
      AND (expiry_date IS NULL OR expiry_date > CURRENT_DATE)
)
SELECT
    p.trader_id,
    p.instrument_type,
    p.gross_notional,
    l.daily_limit,
    ROUND(p.gross_notional / l.daily_limit * 100, 2) AS utilization_pct,
    CASE
        WHEN p.gross_notional > l.daily_limit THEN 'BREACH'
        WHEN p.gross_notional > l.daily_limit * 0.9 THEN 'WARNING'
        ELSE 'OK'
    END AS status
FROM daily_position p
JOIN limits l
  ON p.trader_id = l.trader_id
 AND p.instrument_type = l.instrument_type
WHERE p.gross_notional > l.daily_limit * 0.8
ORDER BY utilization_pct DESC;

参考資料:

コメント

まだコメントはありません。

ログインするとコメントできます