精华内容
下载资源
问答
  • 蒙特卡洛模拟法
    万次阅读
    2020-03-18 13:46:58

    思路简介

      每一次蒙特卡洛模拟,对资产组合中的每一资产按照随机过程公式模拟出下一个交易日的价格,公式中的ε可以假定服从t分布或正态分布(即资产收益率服从的分布),然后可以得到每一资产的收益率,乘以各自的权重和市值就能得到每一资产在下一个交易日的收益,全部相加就是该资产组合在下一个交易日的模拟收益。
    在这里插入图片描述
      比如蒙特卡罗模拟法的抽样次数是10000次,通过重复以上的步骤可以得到组合收益的10000个不同的样本值,持有期1天、置信水平95%的投资组合风险价值就对应于样本数值中排在第500位最大损失的取值。

    案例分析

      依然以(四十三)中的案例为例,计算该资产组合持有期为1天、置信水平为99%情况下的VaR,同时假定ε在模拟过程中服从正态分布或t分布。ε服从t分布时:

    import numpy as np
    I=10000
    e1=np.random.standard_t(df=len(R),size=I)#自由度为收益率数据长度的t分布
    e2=np.random.standard_normal(size=I)
    S0=np.array(data.iloc[-1])#每一资产最后一个交易日的价格
    Rmean=R.mean()*252#计算每一资产的μ
    Rvol=R.std()*np.sqrt(252)#计算每一资产的σ
    dt=1/252#时间间隔
    S=np.zeros(shape=(I,len(w)))#存放10000×5个模拟价格数据
    for i in range(len(w)):#代入随机过程
    	S[:,i]=S0[i]*np.exp((Rmean[i]-0.5*Rvol[i]**2)*dt+Rvol[i]*e1*np.sqrt(dt))
    #每一行∑资产收益率×相应权重市值就得到一个资产组合的收益,一共10000行
    Sp=(np.dot(S/S0-1,w))*1e8
    import matplotlib.pyplot as plt
    from pylab import mpl
    mpl.rcParams['font.sans-serif']=['SimHei']
    mpl.rcParams['axes.unicode_minus']=False
    plt.hist(Sp,bins=40,edgecolor='k')
    plt.xlabel('模拟的投资组合日收益额')
    plt.ylabel('频数')
    plt.title('蒙特卡洛模拟投资组合日收益额直方图(t分布)')
    plt.grid()
    VaR99_1day=abs(np.percentile(Sp,1))
    VaR99_1day
    Out[11]: 2017308.9989261786
    

    在这里插入图片描述
      ε服从正态分布时:

    S=np.zeros(shape=(I,len(w)))
    for i in range(len(w)):
    	S[:,i]=S0[i]*np.exp((Rmean[i]-0.5*Rvol[i]**2)*dt+Rvol[i]*e2*np.sqrt(dt))
    Sp2=(np.dot(S/S0-1,w))*1e8
    VaR99_1day=abs(np.percentile(Sp2,1))
    VaR99_1day
    Out[11]: 2008156.813210965
    

      从结果来看,当资产收益率服从正态分布时,蒙特卡洛模拟计算的组合VaR值低于服从t分布的VaR值(大部分情况下)。

    更多相关内容
  • 蒙特卡洛模拟法的简介,简单介绍了蒙特卡洛法,并给出了一个实例
  • 蒙特卡洛模拟法及其Matlab案例
  • 蒙特卡洛模拟法

    2018-10-13 16:24:05
    是一款蒙特卡洛的matlab程序实现软件,代码精简,效率高
  • 为增强微电网风险评估工作的针对性,采用故障树蒙特卡洛模拟法对孤岛微电网的薄弱环节进行识别。以网内不同用户供电中断为顶事件建立各用户的故障树模型,通过蒙特卡洛模拟法随机抽样建立孤岛微电网的两状态模型。从...
  • 压缩包为基于序贯蒙特卡罗模拟法的配电网可靠性评估的matlab实现,包含两部分: 1.IEEE RTBS系统参数 IEEE RBTS可靠性测试系统的原始参数PDF文件,IEEE33节点系统原始参数EXCEL文件,IEEE RBTS BUS6参数的matlab文件...
  • 用多种方法求解美式期权定价问题,其中包括二叉树方法,有限差分法,最小二乘蒙特卡洛模拟法(LSM法),并对这几种方法进行了对比
  • 之前的文章简单介绍了配电网可靠性评估解析法和模拟法的基本原理,分别以最小路法和非序贯蒙特卡洛模拟法为例进行介绍:配电网可靠性评估方法的matlab实现(一) 一、序贯和非序贯蒙特卡罗模拟法的区别 发出来之后很...

            之前的文章简单介绍了配电网可靠性评估解析法和模拟法的基本原理,分别以最小路法和非序贯蒙特卡洛模拟法为例进行介绍:配电网可靠性评估方法的matlab实现(一)

    一、序贯和非序贯蒙特卡罗模拟法的区别

            发出来之后很多朋友私信我有没有序贯蒙特卡洛模拟法的程序,以及非序贯蒙特卡洛模拟法和序贯蒙特卡洛模拟法的区别,闲下来就写了这篇博客,跟大家一起交流学习。其实非序贯和序贯蒙特卡洛模拟法原理和步骤比较相似,主要的区别有下面这些:

            (1)顾名思义,序贯蒙特卡洛模拟法是基于时序进行模拟的,而非序贯模拟法是基于事件进行模拟的,不考虑时序关系。近年来配电网的研究基本都离不开分布式电源、储能这些时序特性非常明显的设备,因此现在基本上文章都是采用序贯蒙特卡洛模拟法。

            (2)在故障场景抽样时,非序贯蒙特卡洛模拟法的每次模拟对应的时间都是一整年,序贯蒙特卡洛模拟法每次模拟的时间不等,是基于设备的TTR和TTF变化的。另外,统计负荷可靠性指标时,两种算法的计算公式也存在明显区别。

            具体来说,非序贯每次仿真时,要对每个设备产生一个随机数,如果这个随机数小于设备的故障率,就假定本次模拟中该设备发生故障,也就是在一年内设备会发生故障,这是重点,非序贯蒙特卡罗模拟法每次模拟对应的是时间是一年!!!最后统计负荷可靠性指标时,用累计的停电次数除以总仿真次数就可以得到年平均停电次数(因为一次仿真其实就对应一年),停电时间、失负荷量之类的指标也是同理。

            而采用序贯抽样时,每次仿真的时间是不确定的,取决于设备的TTF。对故障场景进行抽样时,故障设备的确定是基于自己设定的规则。一般的文章中都假设抽样时TTF最小的设备为故障元件,这是只考虑了一阶故障。也可以认为TTF最小的前n个设备为故障元件,这样考虑的就是n阶故障。最后统计负荷可靠性指标时,负荷的故障率=仿真中总停电次数/负荷的总正常工作时间,负荷的平均故障持续时间=仿真中总停电时间/仿真中总停电次数。

    二、序贯蒙特卡洛模拟法的基本步骤

            用序贯蒙特卡洛模拟法进行配电网可靠性评估的步骤如下:

            (1)初始化负荷可靠性指标和仿真参数;

            (2)计算每个设备的正常工作时间TTF,利用一定规则确定故障的设备;

            (3)确定故障设备的修复时间或者上级开关设备的切换时间;

            (4)确定因设备故障而停运的负荷,以及因开关设备切换而受影响的负荷,累加负荷的正常工作时间,停运次数、停运时间等。

            (5)仿真时间加上TTF和故障持续时间,判断是否达到仿真阈值,若是则进行下一步,否则返回步骤(2);

            (6)统计负荷可靠性指标和系统可靠性指标。

    matlab代码:

    clc
    clear
    close all
    %% 读取数据
    [line_num,line,load_num,load] = IEEE_RBTS_BUS6_F4;
    %生成图
    g=digraph(line(:,1),line(:,2),line(:,3));
    %% 利用节点网络分析法确定影响负荷的元件
    node_analyse;
    %% 序贯蒙特卡洛法
    load_users=load(:,5);
    load_fault=zeros(1,load_num);%故障次数
    load_fault_time=zeros(1,load_num);%故障时间
    load_power=zeros(1,load_num);%失负荷量
    Lambda=(line(:,3).*line(:,4))';
    Gamma1=line(:,5);
    Gamma2=line(:,8);
    power=load(:,3);
    N=500;%仿真的年数
    time=0;%初始化仿真时间
    load_normal=zeros(1,load_num);%正常工作时间
    while time<N*8760
        进行故障抽样
        %累加仿真时间
        time=time+min_TTF+max([TTR1,TTR2]);
    end
    %负荷停电次数
    Lambda_load=load_fault./load_normal;
    %负荷停电时间
    Gamma_load=load_fault_time./load_fault;
    U_load=Lambda_load.*Gamma_load;
    disp('**************系统可靠性指标**************')
    SAIFI=Lambda_load*load_users/(sum(load_users));
    disp(['SAIFI=',num2str(SAIFI),'次/(年·户)'])
    SAIDI=U_load*load_users/(sum(load_users));
    CAIDI=SAIDI/SAIFI;
    disp(['SAIDI=',num2str(SAIDI),'小时/(年·户)'])
    EENS=load_power*load_users/(sum(load_users))/N;
    disp(['EENS=',num2str(EENS),'MW/(年·户)'])
    ASAI=1-U_load*load_users/(sum(load_users*8760));
    disp(['ASAI=',num2str(ASAI*100),'%'])
    figure(1)
    bar(Lambda_load,'stack')
    title('负荷可靠性评估结果')
    xlabel('负荷节点');ylabel('年平均停电次数/次');
    figure(2)
    bar(U_load,'stack')
    title('负荷可靠性评估结果')
    xlabel('负荷节点');ylabel('年平均停电时间/h');
    Z=[SAIFI SAIDI CAIDI ASAI];
    figure(3)
    bar(Z,0.2)
    title('系统可靠性评估结果')
    set(gca,'XTickLabel',{'SAIFI','SAIDI','CAIDI','ASAI'});
    Lambda_load0=[1.6725 	1.6725 	1.6725 	1.6725 	1.6725 	1.7115 	1.7213 	2.5370 	2.5890 	2.5370 	2.5370 	2.5370 	1.6725 	1.7115 	1.6725 	2.5110 	2.5598 	2.5110 	2.5110 	2.5110 	2.2250 	2.2250 	2.2250 ];
    U_load0=[8.4015 	8.4015 	8.4015 	8.4015 	8.4015 	8.5965 	8.6453 	12.7240 	12.9840 	12.7240 	12.7240 	12.7240 	11.2875 	11.4825 	11.2875 	15.4800 	15.7238 	15.4800 	15.4800 	15.4800 	14.0500 	14.0500 	14.0500 ];
    SAIFI0=1.97781318681319;
    SAIDI0=11.074659340659341;
    CAIDI0=5.599446608253094;
    ASAI0=0.998735769481660;
    figure(4)
    bar(Lambda_load-Lambda_load0,'stack')
    title('模拟法误差分析-负荷年平均停电次数')
    xlabel('负荷节点');ylabel('年平均停电次数的误差');
    figure(5)
    bar(U_load-U_load0,'stack')
    title('模拟法误差分析-负荷年平均停电时间')
    xlabel('负荷节点');ylabel('年平均停电时间的误差');
    figure(6)
    Z0=[SAIFI0 SAIDI0 CAIDI0 ASAI0];
    bar(Z-Z0,0.4)
    title('系统可靠性评估误差')
    set(gca,'XTickLabel',{'SAIFI误差','SAIDI误差','CAIDI误差','ASAI误差'});

    三、运行结果

     

     

     四、完整代码 

             基于序贯蒙特卡洛模拟法的配电网可靠性评估的完整代码见:

    基于序贯蒙特卡洛模拟法的配电网可靠性评估

    展开全文
  • 利用蒙特卡洛模拟法计算随机潮流,计算电力系统安全性
  • 这是我个人的沙盒项目,让我学习一些Go!
  • 电力系统随机潮流概率潮流计算MATLAB程序包含蒙特卡洛模拟法、半不变量法+级数展开(Gram-Charlie,Cornish-Fisher 考虑光伏不确定性(Beta分布),以IEEE34节点为例,计算节点电压、支路潮流概率密度、累计概率并...

    电力系统随机潮流概率潮流计算MATLAB程序包含蒙特卡洛模拟法、半不变量法+级数展开(Gram-Charlie,Cornish-Fisher
    考虑光伏不确定性(Beta分布),以IEEE34节点为例,计算节点电压、支路潮流概率密度、累计概率并绘制曲线。

    有注释,附带参考文献,不不代做。

    缺点是该节点系统不是很具有代表性,因为仅存在一个发电机节点,附带该节点系统的拓扑数据供参考
    请添加图片描述
    请添加图片描述ID:6949653475056796
    请添加图片描述
    请添加图片描述
    请添加图片描述

    展开全文
  • 利用蒙特卡洛方法模拟股票价格路径,然后运用BS公式进行期权定价
  • 序贯蒙特卡洛法

    2018-12-02 11:10:47
    序贯蒙特卡洛法程序,可以参考的学习,对初学序贯蒙特卡洛法有很大帮助。
  • 其实风险评估就是在充分掌握资料的基础之...一、专家调查 在风险识别的基础之上,请专家对风险因素的发生概率和影响程度进行评价,再综合整体风险水平进行评价。老徐认为这类方法简单易行,但是大家在分析的时候最...

    其实风险评估就是在充分掌握资料的基础之上,采用合适的方法对已识别风险进行系统分析和研究,评估风险发生的可能性(概率)、造成损失的范围和严重程度(强度),为接下来选择适当的风险处理方法提供依据。今天老徐给大家介绍介绍常用的一些风险评估方法。

    一、专家调查法

    在风险识别的基础之上,请专家对风险因素的发生概率和影响程度进行评价,再综合整体风险水平进行评价。老徐认为这类方法简单易行,但是大家在分析的时候最好是在采用德尔菲法进行风险识别时同时进行,这样可以极大的节约成本和时间,但是其自身的缺点也比较明显,主观性强,可能会过度依赖于专家水平。

    二、蒙特卡洛模拟法

    蒙特卡洛模拟法的原理是将项目目标变量和各个风险变量综合在一个数学模拟模型内,每个风险变量用一个概率分布来描述,然后利用计算机产生随机数,并根据随机数在各个风险变量的概率分布中取值,算出目标变量值,经过多次运算即可得出目标变量的期望值、方差、概率分布等指标,绘制累计概率图,供决策者参考。老徐认为这种方法的优点是使用计算机模拟项目的自然过程,比历史模拟方法成本低,结果相对精确;可以处理多个因素非线性、大幅波动的不确定性,并把这种不确定性的影响以概率分布形式表示出来,克服了敏感性分析的局限性。不足之处是依赖于特定的随机过程和选择的历史数据,不能反映风险因素之间的相互关系,需要有可靠的模型,否则导致错误。

    三、计划评审技术(PERT)

    该方法是用网络图来体现项目中各项活动的进度和相互之间的关系,确定关键路径,计算总工期及概率,再综合考虑资源因素,得到最佳的项目计划方案。PERT主要用于对项目的进度管理,评价进度和费用方面的风险。它适用于评价缺乏历史经验资料的科研或产品研发项目风险以及与进度相关的项目风险。由于该方法的前提是假设项目每项活动的时间服从正态分布或β分布,总工期和关键路径都具有随机性,但是随着关键路径的确定,这一假设就失去意义,因此具有一定的缺陷。

    四、敏感性分析法

    敏感性分析法是指在假定其他风险因素不变的情况下,评估某一个(或几个)特定的风险因素变化对项目目标变量的影响程度,确定它的变动幅度和临界值,计算出敏感系数,据此对风险因素进行敏感性排序,供决策者参考。这种方法应用广泛,常用于项目的可行性研究阶段,有助于发现重要的风险因素,具体又可分为单因素敏感性分析和多因素敏感性分析。其缺点在于只能体现风险因素的强度而不能反映发生概率,也不能反映众多风险因素同时变化时对项目的综合影响。

    五、决策树法

    决策树法是指利用图解的形式,将风险因素层层分解,绘制成树状图,逐项计算其概率和期望值,进行风险评估和方案的比较和选择。这种方法层次清晰,不同节点面临的风险及概率一目了然,不易遗漏,能够适应多阶段情形下的风险分析,但用于大型复杂项目时工作量较大,也不适合用于缺乏类似客观数据的项目。

    六、影响图法

    影响图是指由风险结点集合和反映风险关系的有向弧集合构成的无环有向图,它是在决策树基础之上发展起来的图形描述工具,这种方法优点是概率估计、备选方案、决策者偏好等资料完整;图形直观、概念明确;计算规模随着风险因素个数呈线性增长。缺点是需要获取大量的概率和效用值,对于复杂问题建模困难。

    七、模糊综合评价法

    风险也具有模糊性,主要表现为风险的强度或大小很难进行明确的界定。模糊综合评价法将项目风险大小用模糊子集进行表达,利用隶属度及模糊推理的概念对风险因素进行排序,以改进的模糊综合评价法为基础,采用层次分析法(AHP)构建风险递阶层次结构,采用专家调查法确定各层次内的风险因素指标权重。

    补充说明:
    多标签分类的评价指标
    多标签分类作为多分类的一种推广,每个样本可以有多个类别,如下图的标签为:sea,sunset。所以其评价指标与多分类的也有差异,本文将介绍几种评价指标


     1.Hamming loss(汉明损失),表示所有label中错误样本的比例,所以该值越小则网络的分类能力越强。计算公式如下。


    其中:|D|表示样本总数,|L|表示标签总数,xi和yi分别表示预测结果和ground truth。xor表示异或运算。

    样例

     

     


    
     
    1. from sklearn.metrics import hamming_loss
    2. y_pred = [ 1, 2, 3, 4]
    3. y_true = [ 2, 2, 3, 4]
    4. hamming_loss(y_true, y_pred) #输出结果为0.25
    5. hamming_loss(np.array([[ 0, 1], [ 1, 1]]), np.zeros(( 2, 2))) #输出结果为0.75

    2. Jaccard index(杰卡德指数),概念挺陌生,公式是再熟悉不过了。其中:T表示ground truth,P表示预测结果。再观察这个公式,和检测算法中的IOU多么相近。


    3. 精度、召回率和F1值。其中精度计算公式为,召回率计算公式为,F1值的计算为精度和召回率的调和平均数。

    4. 准确匹配。这个是最严格的标准了,是预测结果和ground truth完全一致时的样本数与总的样本数的比值。


    参考文献:https://en.wikipedia.org/wiki/Multi-label_classification

    展开全文
  • 蒙特卡洛模拟法又可以分为序贯蒙特卡洛模拟法和非序贯蒙特卡洛模拟法。下面重点介绍非序贯蒙特卡洛模拟法。 非序贯蒙特卡洛模拟法基本原理如下: 首先假设配电系统中的每个元件都存在故障和正常运行两种状态,且每个...
  • 怎么用MATLAB编写mcmc方法,求指导。怎么用MATLAB编写mcmc方法,求指导。怎么用MATLAB编写mcmc方法,求指导。怎么用MATLAB编写mcmc方法,求指导。怎么用MATLAB编写mcmc方法,求指导。
  • 蒙特卡洛模拟法 VS 传统的多指标策略前言一、蒙特卡洛模拟法在股票上的预测效果如何?二、使用步骤1.引入库2.读入数据总结 一、蒙特卡洛模拟法在股票上的预测效果如何? 我们直接使用开源的代码简单修改后来观察...
  • 蒙特卡洛模拟

    2017-12-05 16:07:40
    用Python实现蒙特卡洛模拟( Monte Carlo simulation),蒙特·卡罗方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为...
  • 历史模拟与蒙特卡洛模拟One of the exciting things in the 1980’s was programming simulations to solve complex analytical problems, and one of the most useful techniques employed was running Monte Carlo...
  • 蒙特卡洛模拟的简单例子

    千次阅读 2021-04-23 09:46:41
    蒙特卡罗模拟法的理论基础是大数定律。其发展得益于计算能力的提升和计算成本的下降。蒙特卡罗模拟法在很多领域都有广泛的应用。引子图片来源:Wikipediamatrix67的《数学里也能耍流氓》一文,其中提到了旋轮线的...
  • 完整代码,可直接运行
  • MTH9821财务数值方法
  • 利用蒙特卡洛模拟求积分

    千次阅读 2021-09-09 16:38:49
    我们现在想通过蒙特卡洛模拟求下面这个积分的值,这个积分比较简单,我们当然可以计算出来为4。而对于复杂的定积分我们则可以通过蒙特卡洛模拟来求对应积分值。下面我们拿这个积分举例蒙特卡洛模拟如何求积分。 ...
  • 序贯蒙特卡洛matlab代码联合机会约束程序的顺序凸近似:蒙特卡洛方法 介绍 这是针对联合机会约束问题的顺序凸逼近算法的Matlab实现。 它包括条件风险值(CVaR)和风险值的顺序凸近似值(迭代dc)之间的比较。 使用...
  • 蒙特卡洛模拟法、半不变量法+级数展开(Gram-Charlie,Cornish-Fisher); 考虑光伏不确定性(Beta分布),以IEEE34节点为例,计算节点电压、支路潮流概率密度、累计概率并绘制曲线。 有注释,附带参考文献,直观...
  • 蒙特卡洛模拟方法的matlab实现

    万次阅读 多人点赞 2019-08-15 14:18:16
    蒙特卡洛模拟方法的matlab实现 这篇文章本来发在另一个号上的。。但是由于历史遗留的原因(id。微信号)把那个号注销了,结果忘记删除原文章,好像申请删除还挺麻烦的,所以不删了直接在这重新发一遍 蒙特卡洛模拟这...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,438
精华内容 1,775
关键字:

蒙特卡洛模拟法