蒙特卡洛量化分析方法

2023-10-26

蒙特卡洛方法主要思想:对于一个随机系统,输出随输入变化是随机的,那么通过重复采样的方法可以得到输出的具体分布,进而再对输出分布形式进行分析。

大数定律:当在试验不变的条件下,重复试验多次,随机事件的频率近似于它的概率。

将上述思想用于量化分析:

(1)假设股票收盘价符合正态分布。

(2)根据历史数据计算正态分布均值和方差。

(3)假设历史数据的均值和方差来在预测周期内近似不变,确定正态分布参数。

(4)假设预测周期为N,那么每运行一次正态分布函数会得到一组数据,这些数据是随机的。

(5)将第(4)步重复M次,那么会得到M结果。

(6)统计M个结果中最终涨幅的分布概率就可以得到预测的不同价格下的概率。

参考代码:

# -*- coding: utf-8 -*-
"""
Created on Sat Aug 21 22:06:30 2021

@author: Administrator
#参考:https://mp.weixin.qq.com/s/hBs3gMI0SXdTpX-5h2iHmQ
"""
import sys
import math
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import tushare as ts
from tqdm import tqdm

ts.set_token('xxxxxxxxxxxx')
pro = ts.pro_api()


def get_kdata(stock_code='603396.SH', start_date='20210701', end_date='20210821', reload=False):
    if reload:
        df = pro.daily(ts_code=stock_code, start_date=start_date, end_date=end_date)
        df = df.iloc[::-1]
        df.to_csv(stock_code+'.csv')
    else:
        df = pd.read_csv(stock_code+'.csv')
    return df

if __name__ == '__main__':
    #定义预测周期T
    T = 11
    
    #K线获取
    kdata = get_kdata(stock_code='603396.SH', start_date='20210101', end_date='20210821', reload=True)
    
    #总的交易日数
    days = len(kdata)
    
    #周期数量
    N = days // T
    
    #提取整数周期
    kdata = kdata.iloc[days%T:, :]
    
    #定义待预测的周期
    Pth = min(N, N) 
    
    #获取参考数据,需根据参考数据对预测周期进行预测
    #定义参考开始周期
    Sth = 1
    ref_data = kdata.iloc[(Sth-1)*T:(Pth-1)*T, :]
    
    #获取参考周期内的平均周期增长率
    mu = ((((ref_data.close.iloc[-1]) / ref_data.close.iloc[0])) ** (T/len(ref_data))) - 1
    print ("平均周期增长率:", str(round(mu,4)*100)+"%")
    
    #计算平均周期波动率
    ref_data['Returns'] = ref_data.close.pct_change()
    vol = ref_data['Returns'].std()*np.sqrt(T)
    print ("平均周期波动率:", str(round(vol,4)*100)+"%")

    S = ref_data.close.iloc[-1]
    result = []
    
    # 模拟次数
    for i in tqdm(range(10000)):
        # 正态分布生成
        daily_returns = np.random.normal(mu/T,vol/math.sqrt(T),T)+1

        #设置起始价格
        price_list = [S]

        for x in daily_returns:
            price_list.append(price_list[-1]*x)

        #绘制曲线
        plt.plot(price_list)

        #当前模拟状态下的最终价格
        result.append(price_list[-1])

    # 显示图片
    plt.show()

    # 绘制直方图,即各种最终价格出现的次数统计分布
    plt.hist(result,bins=50)
    plt.show()

    #平均价格,即预测的目标价格,依据大数定律
    print('当前日期: ', ref_data.trade_date.iloc[-1])
    print('当前价格: ', S)
    pred_price = np.mean(result)
    print('预测的目标价格: ', round(pred_price, 2))
    print('预测的目标涨幅: ', str(round((pred_price-S)/S, 4)*100)+"%")

    # 绘制直方图,即各种最终价格出现的次数统计分布
    plt.hist(result,bins=100)
    
    #获取目标价格下跌的概率
    delta = np.inf
    percentage =  0
    for i in range(101):
        p = np.percentile(result, i)
        if abs(p-S) < delta:
            delta = abs(p-S)
            percentage = i
            
    print('目标价格下跌的概率: ', percentage, '%')    
    print("5% 概率低于:",np.percentile(result,5))
    print("5% 概率高于:",np.percentile(result,95))
    
    plt.axvline(S, color='b', linestyle='dashed', linewidth=2)
    plt.axvline(np.percentile(result,5), color='r', linestyle='dashed', linewidth=2)
    plt.axvline(np.percentile(result,95), color='r', linestyle='dashed', linewidth=2)
    plt.show()

运行结果:

随机走势图:

最终结果分布图:

 结果:

当前日期:  20210805
当前价格:  106.95
预测的目标价格:  114.32
预测的目标涨幅:  6.890000000000001%
目标价格下跌的概率:  34 %
5% 概率低于: 89.23284241851933
5% 概率高于: 143.09267477654623

ps:

1、公众号实时查询股票涨幅,无需打开交易软件,方便查看;

2、量化知识和策略分享。

请关注“量化之窗”公众号,如有疑问,请在文章下方留言,欢迎使用!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

蒙特卡洛量化分析方法 的相关文章

  • 什么是吉布斯采样(Gibbs Sampling)

    目录 1 蒙特卡洛方法 1 1 蒙特卡洛方法的作用 1 2 非均匀分布采样 1 3 分布p x 不好采样怎么办 2 什么是吉布斯采样 2 1 马尔可夫链 2 1 1 什么是马尔可夫链呢 2 1 2 为什么我们要引入马尔可夫链 2 1 3 对
  • 期末考试复习笔记(标红表示重要)

    目录 相关系数的比较 数据的类型 回归模型的统计检验与统计意义 参数检验 非参数检验 统计距离 量表 李克特量表 权重 聚类图分析 聚类分析简介 聚类的用途 聚类方法 两步聚类法 TwoStep Cluster 箱线图分析 中心位置的作用
  • 【机器学习】线性回归【上】朴素最小二乘估计

    有任何的书写错误 排版错误 概念错误等 希望大家包含指正 由于字数限制 分成两篇博客 机器学习 线性回归 上 朴素最小二乘估计 机器学习 线性回归 下 正则化最小二乘估计 提醒 下文中的 alpha 和 lambda
  • [概率论与数理统计-5]:一元连续随机变量=>几何图形=>样本空间=>组合样本=>长度/面积/体积=>几何概率

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 123727473 目录 第1章 什么是
  • Applications(4)

    CONTENTS Other Applications In this section we cover a few other types of applications of deep learning that are differe
  • 【Basis】变分推断以及VIEM

    在包含隐变量 latent variables 的推断问题中 针对连续性随机变量的情况 隐变量的高维以及被积函数 intergrand 的复杂度使积分 intergration 无法进行 而针对离散型随机变量 隐变量呈指数 exponent
  • 4.抽样分布的概念与Python实现抽样

    1 总体与样本 在实际中 总体的分布一般是未知的 或只知道它具有某种形式而其中包含着未知参数 这时 常用的办法就是根据样本来推断总体 总体 个体 样本 总体 通常把研究对象的全体称为总体 一个总体对应于一个随机变量X 个体 把组成总体的每个
  • 概率论【离散型二维变量与连续性二维变量(上)】--猴博士爱讲课

    5 离散型二维变量与连续性二维变量 上 1 8 已知二维离散型分布律 求 离散型直接看表 做题方法参考如下 2 8 已知二维离散型分布律 判断独立性 如果满足p xy p x p y 那么相互独立 则我们只需要验证每一个p xy p x p
  • 抽样技术--不等概率抽样

    文章目录 不等概抽样 放回不等概抽样 只抽取一个样本单元的不等概抽样 估计量 有放回不等概整群抽样 两阶段有放回不等概抽样 多阶段有放回不等概抽样 不放回不等概抽样 两阶段不放回不等概抽样 不等概抽样 提高估计精度 放回的PPS抽样简化方差
  • 蓝桥杯算法训练-印章

    这一题是10月份新加的题 网上也没啥答案 标签为dp动态规划 实际上我觉得不用动态规划也能做 毕竟python是自带了求组合数的函数 下面来看一下吧 试题 算法训练 印章 资源限制 时间限制 1 0s 内存限制 256 0MB 问题描述 共
  • 深度学习——时间序列模型评价指标总结

    大Y老师 小X 你做的这个时间序列模型用什么指标评价啊 小X 直接把这篇甩给老师 老师您看哪个指标顺眼 就选哪个指标 最近在实现基于深度学习的时间序列模型时 需要对模型进行评价 总结了一些常用的和不常用的评价指标 还有相关概念的辨析 上面是
  • 2 拉普拉斯分布

    2 拉普拉斯分布 一元拉普拉斯分布的密度函数为 p x 1 2
  • KaTeX数学公式输入

    序号 运算符 输入 举例 举例代码 1 x y
  • 蓝桥杯2021年第十二届真题第一场-砝码称重

    题目 题目链接 题解 动态规划 状态定义 dp i j 表示前i个砝码是否能称出重量为j的物品 状态转移 对于第i个砝码 选和不选两种情况 对于选又可以分为放在左边和放在右边 看样例 存在加和减的情况 也就是放在左边和右边的情况 我们规定放
  • 布隆过滤器(Bloom Filter)

    1 引言 通常我们会遇到很多要判断一个元素是否在某个集合中的业务场景 一般想到的是将集合中所有元素保存起来 然后通过比较确定 链表 树 散列表 又叫哈希表 Hash table 等等数据结构都是这种思路 但是随着集合中元素的增加 我们需要的
  • 多维随机变量及其分布(四):

    一 二维随机变量及其分布函数 1 二维随机变量 设随机变量 Z X Y 则有 Z X Y 一个随机变量是有两个随机变量决定的 2 联合分布函数的基本性质 单调性 F x y 分别对x 或y是单调不减的 即 对任意固定的y 当 x1 lt x
  • 概率论【离散型二维变量与连续性二维变量(下)】--猴博士爱讲课

    6 连续型二维变量 下 1 7 求边缘分布函数 边缘概率密度 边缘概率密度 2 7 求边缘密度函数 边缘概率密度 3 7 判断连续型二维变量的独立性 F x y Fx X Fy Y 那么X Y互相独立 f x y fx X fy Y 那么X
  • 【概率】概率论中具有可加性的分布及性质:二项、泊松、正态、卡方

    目录 一 可加性 二 相关结论 三 小结 一 可加性 可加性 指对于某种变换来说 特定的 加法 和该变换的顺序可颠倒而不影响结果 这样一种性质 wiki 分布的可加性 指同一类型分布的独立随机变量和的分布仍属于此类分布 1 注 前提是同类型
  • 决策树之用信息增益选择最优特征

    决策树之用信息增益选择最优特征 熵 熵的定义 熵 sh ng 热力学中表征物质状态的参量之一 用符号S表示 其物理意义是体系混乱程度的度量 在决策树中 信息增益是由熵构建而成 表示的是 随机变量的不确定性 不确定性越大 代表着熵越大 随机变
  • 2021.9.5笔试题

    第一题 题目 找x y target 数字特别大 可能会溢出 代码 include

随机推荐

  • 开源web终端ssh解决方案

    1 首先来说一下为什么要 web ssh 许多人不是说 有了 xshell secureRT putty 等众多的 ssh 终端 为嘛还要弄个 web 的 ssh 不是够二的吗 难道是为了装像么 有个 web 的 ssh 的确没有多大作用
  • 解决win10下TensorFlow2.0/2.1出错:Loaded runtime CuDNN library: 7.5.0 but source was compiled with: 7.6.0

    解决TensorFlow2 0 2 1出现问题 Loaded runtime CuDNN library 7 5 0 but source was compiled with 7 6 0 电脑系统及CUDA版本 本人电脑win10系统 早前
  • 【科技英雄传】华为背后的任正非

    惶者才能生存 偏执才能成功 任正非 江湖中曾有这样的传闻 有一年华为的销售人员拜会边疆某地电信局领导 聊天中 对方颇多感慨 说十年前你们华为就有人来过这里 那个人背着军绿色旧书包 敲开门问我们买不买交换机 这位销售带着故事回到总部 讲给上年
  • ubuntu使用记录(4)使用xshell5连接跳板机,出现问题: “服务器发送了一个意外的数据包”received:3,expected:20...

    xshell5访问报错 服务器发送了一个意外的数据包 received 3 expected 20 1 排除了网络 防火墙等因素 2 查看sshd服务状态 3 在 etc ssh sshd config配置文件最后面添加下面一行 KexAl
  • 清华大学:人工智能之知识图谱(附PPT)

    来源 笑看国际风云 导读 知识图谱 Knowledge Graph 是人工智能重要分支知识工程在大数据环境中的成功应用 知识图谱与大数据和深度学习一起 成为推动互联网和人工智能发展的核心驱动力之一 基于此背景 人工智能之知识图谱 Resea
  • 什么是频率响应

    频率响应 系统信号的振幅和相位受频率变化而变化的特性就叫频率响应 由定义可知 频率响应由幅频特性和相频特性组成 幅频特性 表示增益的增减同信号频率的关系 相频特性 表示不同信号频率下的相位畸变关系 频率响应的作用 根据频率响应可以比较直观地
  • YARN详解(ResourceManager/ApplicationMaster/NodeManager/Container)

    一 YARN基本思想 YARN是Hadoop2 0中的资源管理系统 它的基本思想是将JobTracker的两个主要功能 资源管理和作业调度 监控 分离 主要方法是创建一个全局的ResourceManager RM 和若干个针对应用程序的Ap
  • jmeter+ant+jenkins接口自动化测试框架

    大致思路 Jmeter可以做接口测试 也能做压力测试 而且是开源软件 Ant是基于Java的构建工具 完成脚本执行并收集结果生成报告 可以跨平台 Jenkins是持续集成工具 将这三者结合起来可以搭建一套Web HTTP接口测试的持续构建环
  • 超详细的Docker常用命令演示步骤和说明

    文章目录 一 帮助命令 二 镜像命令 三 容器命令 四 常用其他命令 五 常用命令图解 六 命令练习 Docker安装Nginx Docker安装Tomcat 一 帮助命令 docker version 显示docker的版本信息 dock
  • 纹理(Textures)

    纹理 Textures 原文 Textures 作者 JoeyDeVries 翻译 Django 校对 Geequlim BLumia 我们已经了解到 我们可以为每个顶点使用颜色来增加图形的细节 从而创建出有趣的图像 但是 如果想让图形看起
  • [MysSQL8笔记]-Access denied; you need (at least one of) the PROCESS privilege(s) for this opera

    出现这个原因是 当前用户没有PROCESS权限 使用root用户给当前用户授予PROCESS权限即可 以root身份登录 root centos01 mysql uroot p Enter password Welcome to the M
  • 【无标题】

    这里写自定义目录标题 怎么清除掉Excel图表的边框线 怎么清除掉Excel图表的边框线 你好 这是你第一次使用 Markdown编辑器 所展示的欢迎页
  • 【C++刷题笔记】函数指针与仿函数:自定义排序规则

    C 刷题笔记 函数指针与仿函数 自定义排序规则 方法一 传函数指针的方式 方法二 传仿函数的方式 自带的less和greater priority queue的情况 C 中的sort函数性能十分强大 有时我们需要自定义排序方式 sort的第
  • 单片机软件系统框架和多任务调度

    这里我用的单片机算是中颖的 芯片 UART底层驱动相关函数 UART相关寄存器初始化 void Uart Init void PCON 0x00 选择SSTAT0 SCON 0x50 01000000 方式一 SBRTL u8int SBR
  • 顺序表的C语言实现

    头文件 SeqList h pragma once include
  • 正大国际期货:期货市场到底难在哪儿?

    正大国际金融控股有限公司 简称 正大国际 成立于2019年11月4日 为香港证监会辖下之持牌法团 证监会中央编号 BOP620 从事第2类及第5类受规管活动及期货合约交易及就期货合约提供意见 主要从事商品期货经纪 金融期货经纪业务 致力于提
  • 程序员如何晋级管理层

    在技术领域 程序员们往往是团队中的核心力量 但是 在职场上 技术过硬并不意味着可以永远待在技术岗位上 程序员们很可能在职场中遇到瓶颈 希望获得更高的职位 那么 作为一名程序员 如何晋升到管理层呢 加强团队合作想要晋升管理层 首先需要具备团队
  • hadoop遇到的问题: org.apache.hadoop.ipc.Client: Retrying connect to server异常的解决

    今天在用pig脚本在hadoop运行时 出现如下错误 前提 hadoop能正常启动 pig的参数也正常配置好了 但是运行脚本就出现org apache hadoop ipc Client Retrying connect to server
  • 中国开源走向第二梯队!

    作者 彭慧中 责编 屠敏 出品 CSDN ID CSDNnews 开源已成为迄今为止最先进 最广泛 最活跃的协同创新模式 近年来 中国开源的发展已成为全球最快 中国在国际社区中的贡献度日益提升 在国际开源生态中的影响力日渐增强 在蓬勃发展之
  • 蒙特卡洛量化分析方法

    蒙特卡洛方法主要思想 对于一个随机系统 输出随输入变化是随机的 那么通过重复采样的方法可以得到输出的具体分布 进而再对输出分布形式进行分析 大数定律 当在试验不变的条件下 重复试验多次 随机事件的频率近似于它的概率 将上述思想用于量化分析