นี่คือคอลเลกชันสมุดบันทึก Jupyter ตามหัวข้อต่างๆ ในด้านการเงินเชิงปริมาณ
เกือบ! -
นี่เป็นเพียงการรวบรวมหัวข้อและอัลกอริธึมที่น่าสนใจในความคิดของฉัน
ประกอบด้วยหัวข้อต่างๆ มากมายที่ไม่ได้รับความนิยมในปัจจุบัน แต่อาจมีประสิทธิภาพมาก โดยปกติแล้ว หัวข้อต่างๆ เช่น วิธี PDE กระบวนการ Lévy วิธีฟูริเยร์ หรือตัวกรองคาลมาน ไม่ได้รับความนิยมมากนักในหมู่ผู้ปฏิบัติงาน ซึ่งชอบทำงานกับเครื่องมือมาตรฐานมากกว่า
จุดมุ่งหมายของสมุดบันทึกเหล่านี้คือการนำเสนอหัวข้อที่น่าสนใจเหล่านี้ โดยการแสดงการใช้งานจริงผ่านการใช้งาน Python แบบโต้ตอบ
ไม่ใช่สำหรับผู้เริ่มต้นอย่างแน่นอน
หัวข้อเหล่านี้ต้องการความรู้พื้นฐานเกี่ยวกับแคลคูลัสสุ่ม คณิตศาสตร์การเงิน และสถิติ ความรู้พื้นฐานเกี่ยวกับการเขียนโปรแกรมหลามก็เป็นสิ่งจำเป็นเช่นกัน
ในสมุดบันทึกเหล่านี้ ฉันจะไม่อธิบายว่าอะไรคือตัวเลือกการโทร หรือกระบวนการสุ่มคืออะไร หรือสมการเชิงอนุพันธ์ย่อยคืออะไร
อย่างไรก็ตาม ทุกครั้งที่ฉันจะแนะนำแนวคิด ฉันจะเพิ่มลิงก์ไปยังหน้าวิกิที่เกี่ยวข้องหรือไปยังคู่มืออ้างอิงด้วย ด้วยวิธีนี้ผู้อ่านจะสามารถเข้าใจสิ่งที่ฉันพูดถึงได้ทันที
หมายเหตุเหล่านี้มีไว้สำหรับนักศึกษาในสาขาวิทยาศาสตร์ เศรษฐศาสตร์ หรือการเงินที่เรียนหลักสูตรระดับปริญญาตรีในสาขาคณิตศาสตร์และสถิติทางการเงินอย่างน้อยหนึ่งหลักสูตร
นักเรียนหรือผู้ปฏิบัติงานที่เรียนรู้ด้วยตนเองควรอ่านหนังสือคณิตศาสตร์การเงินเบื้องต้นอย่างน้อยหนึ่งเล่ม
ก่อนอื่นนี่ไม่ใช่หนังสือ!
โน้ตบุ๊กทุกเครื่อง (เกือบ) เป็นอิสระจากโน้ตบุ๊กอื่นๆ จึงสามารถเลือกได้เฉพาะโน้ตบุ๊กที่สนใจเท่านั้น!
- Every notebook contains python code ready to use!
ไม่ใช่เรื่องง่ายที่จะพบตัวอย่างโมเดลทางการเงินที่ใช้ใน python บนอินเทอร์เน็ตซึ่งพร้อมใช้งานและมีเอกสารประกอบอย่างดี
ฉันคิดว่าผู้เริ่มต้นในด้านการเงินเชิงปริมาณจะพบว่าสมุดบันทึกเหล่านี้มีประโยชน์มาก!
นอกจากนี้ โน้ตบุ๊ก Jupyter ยังเป็นแบบอินเทอร์แอกทีฟ เช่น คุณสามารถเรียกใช้โค้ดภายในโน้ตบุ๊กได้ นี่อาจเป็นวิธีที่ดีที่สุดในการศึกษา!
หากคุณเปิดสมุดบันทึกด้วย Github หรือ NBviewer บางครั้งสูตรทางคณิตศาสตร์อาจแสดงไม่ถูกต้อง ด้วยเหตุนี้ ฉันขอแนะนำให้คุณโคลน/ดาวน์โหลดพื้นที่เก็บข้อมูล
เลขที่!
ฉันจะอัปโหลดสมุดบันทึกเพิ่มเติมเป็นครั้งคราว
ในขณะนี้ ฉันสนใจในด้านของกระบวนการสุ่ม ตัวกรองคาลมาน สถิติ และอื่นๆ อีกมากมาย ฉันจะเพิ่มสมุดบันทึกที่น่าสนใจในหัวข้อเหล่านี้ในอนาคต
หากคุณมีคำถามใดๆ หรือหากคุณพบข้อผิดพลาด หรือมีข้อเสนอแนะสำหรับการปรับปรุง โปรดติดต่อฉันได้ตลอดเวลา
1.1) วิธีการเชิงตัวเลขของ Black-Scholes (การแจกแจงแบบล็อกนอร์มัล, การเปลี่ยนแปลงการวัด, มอนติคาร์โล, วิธีทวินาม)
1.2) การจำลองและสถิติ SDE (การสร้างเส้นทาง ช่วงความเชื่อมั่น การทดสอบสมมุติฐาน การเคลื่อนที่แบบบราวเนียนเรขาคณิต กระบวนการ Cox-Ingersoll-Ross วิธีออยเลอร์มารุยามะ การประมาณค่าพารามิเตอร์)
1.3) วิธีการผกผันฟูริเยร์ (สูตรผกผัน, การผกผันตัวเลข, การกำหนดราคาออปชั่น, FFT, สูตรลูอิส)
1.4) SDE, โมเดล Heston (การเคลื่อนที่แบบบราวเนียนที่สัมพันธ์กัน, เส้นทาง Heston, การแจกแจงแบบ Heston, ฟังก์ชั่นลักษณะเฉพาะ, การกำหนดราคาออปชั่น)
1.5) SDE, กระบวนการเลวี (Merton, Variance Gamma, NIG, การสร้างเส้นทาง, การประมาณค่าพารามิเตอร์)
2.1) Black-Scholes PDE (การแยกส่วน PDE, วิธีการโดยนัย, บทช่วยสอนแบบกระจัดกระจายเมทริกซ์)
2.2) ออปชั่นแปลกใหม่ (ไบนารี่ออปชั่น, บาริเออร์ออปชั่น, ออปชั่นเอเชีย)
2.3) ทางเลือกแบบอเมริกัน (PDE, การออกกำลังกายช่วงต้น, วิธีทวินาม, Longstaff-Schwartz, Perpetual put)
3.1) Merton Jump-Diffusion PIDE (การแยกส่วนโดยนัย-ชัดเจน, การบิดแบบไม่ต่อเนื่อง, ข้อจำกัดของโมเดล, มอนติคาร์โล, การผกผันฟูริเยร์, สูตรกึ่งปิด)
3.2) ความแปรปรวน Gamma PIDE ( PIDE การแพร่แบบกระโดดโดยประมาณ, มอนติคาร์โล, การผกผันฟูริเยร์, เปรียบเทียบกับ Black-Scholes)
3.3) Normal Inverse Gaussian PIDE (ประมาณ PIDE การแพร่แบบกระโดด, มอนติคาร์โล, การผกผันฟูริเยร์, คุณสมบัติของการวัดเลวี)
4.1) การกำหนดราคาด้วยต้นทุนการทำธุรกรรม (แบบจำลอง Davis-Panas-Zariphopoulou, ปัญหาการควบคุมเอกพจน์, ความไม่เท่าเทียมกันของการเปลี่ยนแปลง HJB, การกำหนดราคาที่ไม่แยแส, แผนผังทวินาม, ประสิทธิภาพ)
4.2) รอยยิ้มผันผวนและการสอบเทียบแบบจำลอง (รอยยิ้มผันผวน วิธีการค้นหาราก วิธีการสอบเทียบ)
5.1) การถดถอยเชิงเส้นและตัวกรองคาลมาน (การทำความสะอาดข้อมูลตลาด วิธีการถดถอยเชิงเส้น การออกแบบตัวกรองคาลมาน การเลือกพารามิเตอร์)
5.2) การติดตามความสัมพันธ์อัตโนมัติของคาลมาน - กระบวนการ AR (1) (กระบวนการถอยอัตโนมัติ, วิธีการประมาณค่า, ตัวกรองคาลมาน, คาลมานนุ่มนวลขึ้น, การติดตามความสัมพันธ์อัตโนมัติของตัวแปร)
5.3) การติดตามความผันผวน (การจำลองแบบเฮสตัน, การทดสอบสมมติฐาน, การปรับการกระจาย, วิธีการประมาณค่า, GARCH(1,1), ตัวกรองคาลมาน, คาลมานนุ่มนวลกว่า)
6.1) กระบวนการและการประยุกต์ใช้ Ornstein-Uhlenbeck (การประมาณค่าพารามิเตอร์, เวลาในการตี, Vasicek PDE, ตัวกรอง Kalman, กลยุทธ์การซื้อขาย)
7.1) Classical MVO (การปรับค่าความแปรปรวนเฉลี่ย, การเขียนโปรแกรมกำลังสอง, เฉพาะสูตรปิดแบบยาวและแบบยาว-สั้น)
ก.1) ภาคผนวก: สมการเชิงเส้น (LU, Jacobi, Gauss-Seidel, SOR, Thomas)
A.2) ภาคผนวก: การเพิ่มประสิทธิภาพโค้ด (cython, รหัส C)
A.3) ภาคผนวก: การทบทวนทฤษฎีกระบวนการเลวี (คำจำกัดความพื้นฐานและสำคัญ ที่มาของราคา PIDE)
สภาพแวดล้อมเสมือนจริง:
ที่นี่ฉันอธิบายวิธีสร้างสภาพแวดล้อมเสมือนจริงด้วย Anaconda และโมดูล python venv
คุณสามารถสร้างสภาพแวดล้อมเสมือน conda ที่ทดสอบแล้วของฉันใหม่ได้ด้วย:
conda env create -f environment.yml
pip install -e .
บรรทัดแรกจะสร้างสภาพแวดล้อมเสมือนขึ้นใหม่และติดตั้งแพ็คเกจทั้งหมด
ด้วยบรรทัดที่สองเราเพิ่งติดตั้งแพ็คเกจท้องถิ่น FMNM
.
หากคุณต้องการสร้างสภาพแวดล้อมใหม่ด้วยเวอร์ชันล่าสุดของ Python คุณสามารถทำได้:
conda create -n FMNM python
conda activate FMNM
PACKAGES= $( tr ' n ' ' ' < list_of_packages.txt | sed " s/arch/arch-py/g " )
conda install ${PACKAGES[@]}
pip install -e .
โดยในบรรทัดที่สาม เราแทนที่ arch
ชื่อแพ็คเกจด้วย arch-py
ซึ่งเป็นชื่อที่ใช้โดย conda
หากคุณต้องการสร้าง venv
ที่ใช้ python 3.11.4 คุณสามารถทำได้ดังนี้:
python3.11.4 -m venv --prompt FMNM python-venv
source python-venv/bin/activate
python3 -m pip install --upgrade pip
pip install --requirement requirements.txt
pip install -e .
หากคุณต้องการใช้เวอร์ชัน python ที่ติดตั้งอยู่แล้วในระบบของคุณ คุณเพียงแค่ต้องเรียกใช้
pip install --requirement list_of_packages.txt
pip install -e .
จากนั้นเข้าไปในเชลล์ jupyter-notebook
หรือ jupyter-lab
:
อย่างไรก็ตาม หากคุณใช้เวอร์ชันเก่า อาจเกิดปัญหาความเข้ากันได้
นักเทียบท่า:
ที่นี่เรารันโน้ตบุ๊กด้วย jupyterlab:
คุณสามารถใช้ docker-compose เพื่อสร้างคอนเทนเนอร์:
docker-compose up --build -d
แล้วจึงหยุดภาชนะด้วย
docker-compose down
และเปิดเบราว์เซอร์ที่ http://localhost:8888/lab
หรือคุณสามารถ
docker build -t fmnm .
docker run --rm -d -p 8888:8888 --name Numeric_Finance fmnm