楼主: casey_c
1484 3

[程序分享] Python金融数据分析:统计方法在金融方面的应用(一) [推广有奖]

  • 0关注
  • 10粉丝

博士生

92%

还不是VIP/贵宾

-

威望
0
论坛币
96 个
通用积分
2.0091
学术水平
2 点
热心指数
15 点
信用等级
2 点
经验
11502 点
帖子
278
精华
0
在线时间
94 小时
注册时间
2016-11-22
最后登录
2022-5-2

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币



以下内容转自 数析学院,只节选了部分,有需要的同学可以直接查看原文

主要内容包括:


几何布朗运动生成蒙特卡洛路径以及对数收益率
检验时间序列的正态性
检验 4 个真实时间序列数据的正态性
熟悉均值-方差投资组合理论(MPT)基本原理
使用 scipy 求解投资组合优化问题

一、正态检验


1、基准案例


  1. import numpy as np
  2. np.random.seed(1000)
  3. import scipy.stats as scs
  4. import statsmodels.api as sm
  5. import matplotlib as mpl
  6. import matplotlib.pyplot as plt
  7. %matplotlib inline
复制代码
  1. def gen_paths(S0, r, sigma, T, M, I):
  2.     ''' Generate Monte Carlo paths for geometric Brownian motion.
  3.    
  4.     Parameters
  5.     ==========
  6.     S0 : float
  7.         initial stock/index value
  8.     r : float
  9.         constant short rate
  10.     sigma : float
  11.         constant volatility
  12.     T : float
  13.         final time horizon
  14.     M : int
  15.         number of time steps/intervals
  16.     I : int
  17.         number of paths to be simulated
  18.         
  19.     Returns
  20.     =======
  21.     paths : ndarray, shape (M + 1, I)
  22.         simulated paths given the parameters
  23.     '''
  24.     dt = float(T) / M
  25.     paths = np.zeros((M + 1, I), np.float64)
  26.     paths[0] = S0
  27.     for t in range(1, M + 1):
  28.         rand = np.random.standard_normal(I)
  29.         rand = (rand - rand.mean()) / rand.std()
  30.         paths[t] = paths[t - 1] * np.exp((r - 0.5 * sigma ** 2) * dt +
  31.                                          sigma * np.sqrt(dt) * rand)
  32.     return paths
复制代码
  1. S0 = 100.
  2. r = 0.05
  3. sigma = 0.2
  4. T = 1.0
  5. M = 50
  6. I = 250000
复制代码
  1. paths = gen_paths(S0, r, sigma, T, M, I)
复制代码
  1. # 几何布朗运动的10条模拟路径
  2. # 标签: normal_sim_1
  3. plt.plot(paths[:, :10])
  4. plt.grid(True)
  5. plt.xlabel('time steps')
  6. plt.ylabel('index level')
复制代码
<matplotlib.text.Text at 0x7f5162835f10> 1.jpg
  1. log_returns = np.log(paths[1:] / paths[0:-1])
复制代码
  1. paths[:, 0].round(4)
复制代码
array([ 100.    ,   97.821 ,   98.5573,  106.1546,  105.899 ,   99.8363,        100.0145,  102.6589,  105.6643,  107.1107,  108.7943,  108.2449,        106.4105,  101.0575,  102.0197,  102.6052,  109.6419,  109.5725,        112.9766,  113.0225,  112.5476,  114.5585,  109.942 ,  112.6271,        112.7502,  116.3453,  115.0443,  113.9586,  115.8831,  117.3705,        117.9185,  110.5539,  109.9687,  104.9957,  108.0679,  105.7822,        105.1585,  104.3304,  108.4387,  105.5963,  108.866 ,  108.3284,        107.0077,  106.0034,  104.3964,  101.0637,   98.3776,   97.135 ,         95.4254,   96.4271,   96.3386])
  1. log_returns[:, 0].round(4)
复制代码
array([-0.022 ,  0.0075,  0.0743, -0.0024, -0.059 ,  0.0018,  0.0261,        0.0289,  0.0136,  0.0156, -0.0051, -0.0171, -0.0516,  0.0095,        0.0057,  0.0663, -0.0006,  0.0306,  0.0004, -0.0042,  0.0177,       -0.0411,  0.0241,  0.0011,  0.0314, -0.0112, -0.0095,  0.0167,        0.0128,  0.0047, -0.0645, -0.0053, -0.0463,  0.0288, -0.0214,       -0.0059, -0.0079,  0.0386, -0.0266,  0.0305, -0.0049, -0.0123,       -0.0094, -0.0153, -0.0324, -0.0269, -0.0127, -0.0178,  0.0104,       -0.0009])

以上内容转自 数析学院,如需完整内容可以直接查看原文

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:python 金融数据分析 统计方法 数据分析 金融数据

沙发
abigail12635 发表于 2017-10-24 11:43:03 |只看作者 |坛友微信交流群
去哪里查看原文呢?楼主~

使用道具

藤椅
casey_c 发表于 2017-10-27 10:41:31 |只看作者 |坛友微信交流群
abigail12635 发表于 2017-10-24 11:43
去哪里查看原文呢?楼主~
百度搜索数析学院

使用道具

板凳
abigail12635 发表于 2017-10-27 11:16:40 |只看作者 |坛友微信交流群
casey_c 发表于 2017-10-27 10:41
百度搜索数析学院
哦~ 谢谢楼主

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-3 20:29