量化面試綠皮書:20. 正態生成

文中內容僅限技術學習與代碼實踐參考,市場存在不確定性,技術分析需謹慎驗證,不構成任何投資建議。

20. 正態生成

Q: 如何生成兩個標準正態分布(N(0,1))的隨機變量,使它們之間的相關系數為p,假設你有一個標準正態分布的隨機數生成器?

A: 要生成兩個標準正態分布(即 N ( 0 , 1 ) N(0,1) N(0,1))的隨機變量 X X X Y Y Y,并使它們之間的相關系數為 p p p(其中 p p p 是一個給定的常數,且 ∣ p ∣ ≤ 1 |p| \leq 1 p1),假設你已有一個標準正態分布的隨機數生成器(可以生成獨立的 N ( 0 , 1 ) N(0,1) N(0,1) 隨機變量),可以按照以下步驟操作。該方法基于線性組合的原理,確保 X X X Y Y Y 均服從 N ( 0 , 1 ) N(0,1) N(0,1),且相關系數 Corr ( X , Y ) = p \text{Corr}(X,Y) = p Corr(X,Y)=p

步驟

  1. 生成兩個獨立的標準正態隨機變量
    使用你的隨機數生成器生成兩個獨立的 N ( 0 , 1 ) N(0,1) N(0,1) 隨機變量,記為 Z 1 Z_1 Z1? Z 2 Z_2 Z2?。即:

    • Z 1 ~ N ( 0 , 1 ) Z_1 \sim N(0,1) Z1?N(0,1)
    • Z 2 ~ N ( 0 , 1 ) Z_2 \sim N(0,1) Z2?N(0,1)
    • Cov ( Z 1 , Z 2 ) = 0 \text{Cov}(Z_1, Z_2) = 0 Cov(Z1?,Z2?)=0(獨立)。
  2. 定義 X X X Y Y Y

    • X = Z 1 X = Z_1 X=Z1?
    • Y = p ? Z 1 + 1 ? p 2 ? Z 2 Y = p \cdot Z_1 + \sqrt{1 - p^2} \cdot Z_2 Y=p?Z1?+1?p2 ??Z2?

驗證

  • 分布性質
    • X = Z 1 X = Z_1 X=Z1? 顯然服從 N ( 0 , 1 ) N(0,1) N(0,1)
    • Y Y Y Z 1 Z_1 Z1? Z 2 Z_2 Z2? 的線性組合。由于 Z 1 Z_1 Z1? Z 2 Z_2 Z2? 獨立且服從標準正態分布, Y Y Y 的期望和方差計算如下:
      • 期望: E [ Y ] = E [ p ? Z 1 + 1 ? p 2 ? Z 2 ] = p ? 0 + 1 ? p 2 ? 0 = 0 E[Y] = E[p \cdot Z_1 + \sqrt{1 - p^2} \cdot Z_2] = p \cdot 0 + \sqrt{1 - p^2} \cdot 0 = 0 E[Y]=E[p?Z1?+1?p2 ??Z2?]=p?0+1?p2 ??0=0

      • 方差:

        Var ( Y ) = Var ( p ? Z 1 + 1 ? p 2 ? Z 2 ) = p 2 ? Var ( Z 1 ) + ( 1 ? p 2 ) ? Var ( Z 2 ) = p 2 ? 1 + ( 1 ? p 2 ) ? 1 = 1 \begin{align*} \text{Var}(Y) &= \text{Var}(p \cdot Z_1 + \sqrt{1 - p^2} \cdot Z_2) \\ &= p^2 \cdot \text{Var}(Z_1) + (1 - p^2) \cdot \text{Var}(Z_2) \\ &= p^2 \cdot 1 + (1 - p^2) \cdot 1 \\ &= 1 \end{align*} Var(Y)?=Var(p?Z1?+1?p2 ??Z2?)=p2?Var(Z1?)+(1?p2)?Var(Z2?)=p2?1+(1?p2)?1=1?

        因為 Cov ( Z 1 , Z 2 ) = 0 \text{Cov}(Z_1, Z_2) = 0 Cov(Z1?,Z2?)=0。 因此, Y ~ N ( 0 , 1 ) Y \sim N(0,1) YN(0,1)

  • 相關系數
    • 協方差:

      Cov ( X , Y ) = Cov ( Z 1 , p ? Z 1 + 1 ? p 2 ? Z 2 ) = p ? Cov ( Z 1 , Z 1 ) + 1 ? p 2 ? Cov ( Z 1 , Z 2 ) = p ? Cov ( Z 1 , Z 1 ) + 1 ? p 2 ? Cov ( Z 1 , Z 2 ) = p ? Var ( Z 1 ) + 0 = p ? 1 = p \begin{align*} \text{Cov}(X, Y) &= \text{Cov}(Z_1, p \cdot Z_1 + \sqrt{1 - p^2} \cdot Z_2) \\ &= p \cdot \text{Cov}(Z_1, Z_1) + \sqrt{1 - p^2} \cdot \text{Cov}(Z_1, Z_2) \\ &= p \cdot \text{Cov}(Z_1, Z_1) + \sqrt{1 - p^2} \cdot \text{Cov}(Z_1, Z_2) \\ &= p \cdot \text{Var}(Z_1) + 0 \\ &= p \cdot 1 \\ &= p \end{align*} Cov(X,Y)?=Cov(Z1?,p?Z1?+1?p2 ??Z2?)=p?Cov(Z1?,Z1?)+1?p2 ??Cov(Z1?,Z2?)=p?Cov(Z1?,Z1?)+1?p2 ??Cov(Z1?,Z2?)=p?Var(Z1?)+0=p?1=p?

    • 相關系數: Corr ( X , Y ) = Cov ( X , Y ) σ X σ Y = p 1 ? 1 = p \text{Corr}(X, Y) = \frac{\text{Cov}(X, Y)}{\sigma_X \sigma_Y} = \frac{p}{1 \cdot 1} = p Corr(X,Y)=σX?σY?Cov(X,Y)?=1?1p?=p(因為標準差 σ X = σ Y = 1 \sigma_X = \sigma_Y = 1 σX?=σY?=1)。

注意事項

  • 參數 p p p 的范圍 p p p 必須在 [ ? 1 , 1 ] [-1, 1] [?1,1] 內,否則 1 ? p 2 \sqrt{1 - p^2} 1?p2 ? 可能不是實數(例如,如果 ∣ p ∣ > 1 |p| > 1 p>1,該方法無效)。
  • 特殊情況
    • 如果 p = 1 p = 1 p=1,則 Y = Z 1 Y = Z_1 Y=Z1?,所以 X = Y X = Y X=Y,相關系數為 1。
    • 如果 p = ? 1 p = -1 p=?1,則 Y = ? Z 1 Y = -Z_1 Y=?Z1?,相關系數為 -1。
    • 如果 p = 0 p = 0 p=0,則 Y = Z 2 Y = Z_2 Y=Z2?,所以 X X X Y Y Y 獨立(相關系數為 0)。
  • 實現:在編程時(如 Python 中使用 numpy.random.randn),確保生成的 Z 1 Z_1 Z1? Z 2 Z_2 Z2? 是獨立的。每次生成一對 ( X , Y ) (X, Y) (X,Y) 時,都需要新的獨立 Z 1 Z_1 Z1? Z 2 Z_2 Z2?

Python 實現

以下是使用 Python 實現生成相關系數為 p 的兩個標準正態分布隨機變量的代碼:

import numpy as np
from typing import Tupledef generate_correlated_normals(correlation: float, sample_size: int = 1
) -> Tuple[np.ndarray, np.ndarray]:"""生成兩個相關系數為給定值的標準正態分布隨機變量。此函數使用線性變換方法生成一對相關隨機變量:X = Z?Y = ρ·Z? + √(1 - ρ2)·Z?其中 Z? 和 Z? 是獨立的標準正態隨機變量,ρ 是指定的相關系數。示例:>>> X, Y = generate_correlated_normals(correlation=0.7, sample_size=1000)>>> np.corrcoef(X, Y)[0, 1]  # 應接近0.70.7012Args:correlation (float): 目標相關系數,必須在 [-1, 1] 范圍內sample_size (int, optional): 要生成的樣本數量. Defaults to 1.Returns:Tuple[np.ndarray, np.ndarray]: 包含兩個NumPy數組的元組 (X, Y),每個數組的形狀為 (sample_size,)"""# 驗證相關系數范圍if abs(correlation) > 1:raise ValueError(f"相關系數必須在 [-1, 1] 范圍內。收到: {correlation}")# 生成兩個獨立的標準正態隨機變量z1: np.ndarray = np.random.standard_normal(size=sample_size)z2: np.ndarray = np.random.standard_normal(size=sample_size)# 計算縮放因子(避免重復計算)scale_factor: float = np.sqrt(1 - correlation**2)# 構造相關變量x: np.ndarray = z1y: np.ndarray = correlation * z1 + scale_factor * z2return x, ydef verify_distribution(x: np.ndarray, y: np.ndarray, expected_correlation: float
) -> None:"""驗證生成變量的分布屬性。Args:x (np.ndarray): 第一個隨機變量數組y (np.ndarray): 第二個隨機變量數組expected_correlation (float): 預期的相關系數"""# 計算實際相關系數actual_correlation: float = np.corrcoef(x, y)[0, 1]# 計算統計量stats = {"X 均值": np.mean(x),"X 標準差": np.std(x),"Y 均值": np.mean(y),"Y 標準差": np.std(y),"目標相關系數": expected_correlation,"實際相關系數": actual_correlation,"絕對誤差": abs(actual_correlation - expected_correlation),}# 打印驗證結果print("\n驗證結果:")for stat, value in stats.items():print(f"{stat}: {value:.6f}")# 示例用法
TARGET_CORRELATION: float = 0.6
SAMPLE_SIZE: int = 10_000# 生成相關正態變量
x_data, y_data = generate_correlated_normals(correlation=TARGET_CORRELATION, sample_size=SAMPLE_SIZE
)# 驗證分布屬性
verify_distribution(x_data, y_data, TARGET_CORRELATION)

這道面試題的本質是考察候選人對金融隨機過程的數學建模能力在量化系統中實現統計屬性的工程能力,這兩項能力直接對應量化金融中的風險因子生成、蒙特卡洛定價模型和資產相關性模擬等核心場景。

🔑 核心知識點

  1. 概率論基礎

    • 標準正態分布的性質(均值0、方差1)
    • 相關系數ρ的數學定義: ρ X , Y = Cov ( X , Y ) σ X σ Y \rho_{X,Y} = \frac{\text{Cov}(X,Y)}{\sigma_X\sigma_Y} ρX,Y?=σX?σY?Cov(X,Y)?
    • 隨機變量線性變換的期望與方差計算
  2. 統計模擬技術

    • 獨立隨機變量的組合構造相關性(Cholesky分解的二維特例)
    • 協方差矩陣的隱含約束( ∣ ρ ∣ ≤ 1 |\rho| \leq 1 ρ1
  3. 量化金融應用

    • 多資產價格路徑模擬(如期權定價中的相關布朗運動)
    • 投資組合風險模型中因子相關性的生成
    • 信用風險中的聯合違約概率建模

📊 面試評估維度

考察維度具體表現要求本題對應點
數學推導能力將統計概念轉化為數學表達式推導 Y = ρ X + 1 ? ρ 2 Z Y = \rho X + \sqrt{1-\rho^2} Z Y=ρX+1?ρ2 ?Z 的構造過程
工程實現嚴謹性邊界條件處理與數值穩定性檢測 ∣ ρ ∣ > 1 |\rho|>1 ρ>1 的異常輸入,避免 1 ? ρ 2 \sqrt{1-\rho^2} 1?ρ2 ? 的浮點誤差
金融直覺理解相關性在量化場景的意義解釋生成變量在蒙特卡洛模擬中的用途(如相關資產價格)
驗證思維設計統計檢驗方法驗證結果通過樣本均值/方差/相關系數檢查分布屬性

🧩 典型回答框架

  1. 數學原理闡述

    • 定義兩個獨立標準正態變量 Z 1 , Z 2 ~ N ( 0 , 1 ) Z_1, Z_2 \sim N(0,1) Z1?,Z2?N(0,1)
    • 構造線性組合:
      X = Z 1 X = Z_1 X=Z1?
      Y = ρ Z 1 + 1 ? ρ 2 Z 2 Y = \rho Z_1 + \sqrt{1-\rho^2} Z_2 Y=ρZ1?+1?ρ2 ?Z2?
    • 證明 Var ( Y ) = 1 \text{Var}(Y)=1 Var(Y)=1 Cov ( X , Y ) = ρ \text{Cov}(X,Y)=\rho Cov(X,Y)=ρ
  2. 代碼實現要點

    # 1. 輸入驗證:|ρ|≤1
    # 2. 生成獨立正態變量 (vectorized)
    # 3. 應用變換矩陣 [1, 0; ρ, √(1-ρ2)] 
    # 4. 返回 (X,Y) 數組
    
  3. 統計驗證方法

    • 計算生成數據的樣本相關系數 ρ ^ \hat{\rho} ρ^?
    • KS檢驗正態性
    • 可視化散點圖與理論密度對比

💡 核心洞察

  • 隱藏考點

    • ρ → ± 1 \rho \to \pm 1 ρ±1 時,算法退化為完全相關( Y = ± X Y= \pm X Y=±X),暴露候選人對極端值處理的敏感性
    • 向量化實現效率(如同時生成10萬組變量)反映大規模金融模擬的工程能力
  • 業務連接

    • 此方法實際是高斯copula的二維特例,在CDO定價中用于模擬關聯違約事件。
    • 若候選人能指出“此方法僅適用于正態分布,而真實市場需用t-copula或秩相關”,則展現高階認知。
  • 進階挑戰

    • 如何擴展至生成N維相關正態變量?(期待Cholesky分解或PCA的答案)
    • 若要求相關系數隨時間變化 ρ ( t ) \rho(t) ρ(t),如何修改?(考察隨機微分方程的應用)

風險提示與免責聲明
本文內容基于公開信息研究整理,不構成任何形式的投資建議。歷史表現不應作為未來收益保證,市場存在不可預見的波動風險。投資者需結合自身財務狀況及風險承受能力獨立決策,并自行承擔交易結果。作者及發布方不對任何依據本文操作導致的損失承擔法律責任。市場有風險,投資須謹慎。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/85230.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/85230.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/85230.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Arduino入門教程:10、屏幕顯示

飛書文檔https://x509p6c8to.feishu.cn/docx/N45Pd0tA1oaC4CxUWZjc8Ekyn0b 屏幕應用場景 課程使用的SSD1306是一款128*64像素可以使用IIC驅動的OLED屏幕。 SSD1306 Oled顯示模塊共有4個引腳,標記為GND, VCC, SCL和SDA。這種Oled顯示模塊可以使用3.3V到5V輕松上電。…

華為云Flexus+DeepSeek征文|體驗華為云ModelArts快速搭建Dify-LLM應用開發平臺并創建自己dify釘釘群聊機器人

華為云FlexusDeepSeek征文|體驗華為云ModelArts快速搭建Dify-LLM應用開發平臺并創建自己dify釘釘群聊機器人 什么是華為云ModelArts 華為云ModelArts ModelArts是華為云提供的全流程AI開發平臺,覆蓋從數據準備到模型部署的全生命周期管理,幫…

【Pytorch】(1)Pytorch環境安裝-①創建虛擬環境

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄 前言一、創建Pytorch的虛擬環境 前言 提示:以下是本篇文章正文內容,下面案例可供參考 一、Anaconda環境基礎操作 1.1 啟動Anaconda Prompt …

如何自定義WordPress登錄頁面,提升用戶體驗和安全性

WordPress是目前最受歡迎的網站搭建平臺之一,無論是個人博客、企業網站,還是電商平臺,很多人都選擇用它來搭建自己的網站。不過,很多WordPress用戶會發現默認的登錄頁面相對普通,無法體現自己網站的特色。其實&#xf…

Coze扣子 - AI生成數字人口播視頻

一、數字人介紹 數字人(Digital Human)是指利?先進的數字技術和??智能創建的虛擬人 類形象,能夠模擬?類的外貌、?為和情感。數字?不僅可以在視覺上表 現出真實的?類特征,還可以通過?然語?處理與?戶進?互動。 Coze通過全…

【請關注】真實案例pg及kong安裝部署

# 前提需要安裝好nfs KONG_NAMESPACE="kong-api" PG_NAMESPACE="pg-ha" HARBOR_IP="harbor.rancher.com" 一、安裝pg高可用####################################################################################### kubectl creat…

SSRF7 SSRF漏洞的檢測方式

我們可以進入bp利用bp模塊collaborator,進行檢測: 我們點擊復制到剪切板: 然后再到目標網站進行構造URL: http://192.168.112.12/pikachu-master/vul/ssrf/ssrf_curl.php?urlmvluewtgs390alohzqjakhu2qtwkkc81.oastify.com 然…

C++ 函數的使用

C中的函數是實現代碼復用和模塊化的基本單元。下面從定義、調用、參數傳遞、常見樣式、聲明和分文件編寫等方面進行介紹。 1. 函數定義 函數定義包括返回類型、函數名、參數列表和函數體: 返回類型 函數名(參數列表) {// 函數體return 返回值; // 如果返回類型不是…

一文講清輻射傳輸模型

一、為什么需要進行輻射傳輸反演? 遙感影像中,我們看到的是從地表和大氣混合后到達傳感器的總輻射信號。這個信號既包含了地物反射,也包含了大氣分子和氣溶膠的散射吸收、以及地表自身或大氣的熱發射。若要從中定量獲得植被生理參數、水體理…

視頻編碼怎么選?H.264、H.265、VP9、AV1全解析

你有沒有遇到過這樣的情況:下載了一個高清電影,卻發現播放器打不開;或者上傳視頻到網站時提示“格式不支持”?其實,這背后和視頻編碼格式密切相關。 那么問題來了:視頻編碼格式哪個好? 今天簡鹿…

單例模式:全局唯一實例的設計藝術

引言:為什么需要單例模式 在軟件開發中,某些對象只需要一個全局實例: 數據庫連接池配置管理器日志記錄器線程池緩存系統 使用new關鍵字多次創建這些對象會導致: #mermaid-svg-TyfdXbNvcmqwnA6C {font-family:"trebuchet m…

性能優化 - 案例篇:11種優化接口性能的通用方案

文章目錄 Pre1. 加索引:最低成本,最大收益常見問題:工具命令:建議: 2. SQL 優化:比加索引再進階一步常見 5 類問題:實用建議: 3. 遠程調用:從串行改并行,性能…

Kafka - 并發消費拉取數據過少故障分析

文章目錄 背景與問題描述原理與原因分析參數優化思路示例配置驗證與監控實踐注意事項與風險總結 背景與問題描述 場景描述 使用 Spring Boot Spring Kafka,注解 KafkaListener(topics..., id..., ...),批量監聽(方法簽名為 public void doHa…

開源 Arkts 鴻蒙應用 開發(二)封裝庫.har制作和應用

文章的目的為了記錄使用Arkts 進行Harmony app 開發學習的經歷。本職為嵌入式軟件開發,公司安排開發app,臨時學習,完成app的開發。開發流程和要點有些記憶模糊,趕緊記錄,防止忘記。 相關鏈接: 開源 Arkts …

Qt基礎相關

模態對話框和非模態對話框 在一個頁面進行交互時彈出的一個新頁面,新頁面不堵塞舊頁面的交互,這就是非模態對話框。 模態對話框 模態對話框就是當該對話框彈出后會阻塞其他窗口的響應事件,必須先關閉該對話框,其他窗口才會繼續…

《匯編語言:基于X86處理器》第2章 x86處理器架構

本章重點是與 x86 匯編語言相關的底層硬件。有說法認為,匯編語言是直接與機器交流的理想軟件工具。如果是真的,那么匯編程序員就必須非常熟悉處理器的內部結構與功能。本章將討論指令執行時處理器內部發生的一些基本操作,以及操作系統如何加載…

最小生成樹算法的解題思路與 C++ 算法應用

一、最小生成樹算法針對問題類型及概述 先來簡要陳述一下樹的概念:一個由 N N N 個點和 N ? 1 N-1 N?1 條邊組成的無向連通圖。由此,我們可以得知生成樹算法的概念:在一個 N N N 個點的圖中找出一個由 N ? 1 N-1 N?1 條邊組成的樹。…

feign.FeignException$NotFound: [404 ] during [POST] to [http://ti/ti/v1/i/se

feign.FeignException$NotFound: [404 ] during [POST] to [http://ti/ti/v1/i/send 原因:多個地方注冊 FeignClient(name “ti”, path “/ti/v1/i/send/repeat”) 解決:刪除一個即可

Mac m1 通過docker鏡像安裝kafka

kafka依賴zookeeper,因此需要使用docker同時安裝zookeeper和kafka。 macOS的docker在容器和宿主之間無法通過ip直接通信,因此在安裝的時候需要特殊注意與ip相關的設置。當容器需要訪問宿主ip時,需要使用docker.for.mac.host.internal或者host…

01初始uni-app+tabBar+首頁

初始uni-apptabBar首頁 1. uni-app1.1 新建uni-app項目1.2 目錄結構1.3 把項目配置運行到微信開發者工具 2. tabBar3.1 首頁3.1 配置網絡請求3.2 輪播圖區域3.3 分類導航區域3.4 樓層區域 1. uni-app ? uni-app 是使用 Vue.js 開發前端應用的框架。開發者編寫一套代碼&#x…