首页 > 其他分享 >一个简单的价格模拟工具

一个简单的价格模拟工具

时间:2024-10-16 14:31:58浏览次数:1  
标签:log 波动 252 简单 np 工具 data 模拟 volatility

模拟交易价格对于量化分析建模很重要,下面是一个简单的价格模拟工具:

首先, 要找到标的的价格波动属性,而标的的波动每天都不一样,下面这个代码可以直观地绘制出价格波动的变化情况:

def calculate_volatility():

    # 取日线数据
    data = get_data(symbol="rb", duration_seconds=60*60*24, start_dt="2023-01-01", end_dt="2024-10-15")

    # 计算波动率
    data["pct_change"] = data["close"].pct_change()

    volatility = data["pct_change"].std() * np.sqrt(252)  # 假设一年有252个交易日

    print(f"波动率: {volatility:.4f}")

    # 计算对数收益率
    data["log_return"] = np.log(data["close"] / data["close"].shift(1))

    # 计算对数收益波动率
    log_volatility = data["log_return"].std() * np.sqrt(252)  # 假设一年有252个交易日

    print(f"对数收益波动率: {log_volatility:.4f}")

    # 计算滚动的波动率
    data["rolling_volatility"] = data["log_return"].rolling(window=20).std()  #* np.sqrt(252)  # 假设一年有252个交易日

    # 计算 Parkinson 波动率    
    data["parkinson_volatility"] = np.sqrt((1 / (4 * np.log(2))) * (data["high"] / data["low"]).apply(np.log).rolling(window=20).mean() ** 2)    

    # 绘制 Parkinson 波动率曲线 和价格曲线,波动率曲线用左轴,价格曲线用右轴
    fig, ax1 = plt.subplots(figsize=(10, 6))

    ax1.plot(data["parkinson_volatility"], label="Parkinson Volatility", color="blue")
    ax1.plot(data["rolling_volatility"], label="Rolling Volatility", color="green")
    ax1.set_ylabel("Parkinson Volatility", color="blue")
    ax1.tick_params(axis="y", labelcolor="blue")

    ax2 = ax1.twinx()
    ax2.plot(data["close"], label="Price", color="red")
    ax2.set_ylabel("Price", color="red")
    ax2.tick_params(axis="y", labelcolor="red")

    plt.title("Parkinson Volatility and Price")
    plt.xlabel("Date")
    plt.legend()
    plt.show()

  

上文计算了两个不同的波动率,可以看出,在不同的行情下,波动率计算不完全一致,但差别不是很大。

然后用下列函数模拟:

def price_process(sigma,dt, s0=100, total_time=1):
    prices = s0 + np.cumsum(sigma * np.sqrt(dt) * np.random.choice([1, -1],  int(total_time / dt)))
    return np.insert(prices, 0, s0)    

  

 

标签:log,波动,252,简单,np,工具,data,模拟,volatility
From: https://www.cnblogs.com/kingkaixuan/p/18469907

相关文章

  • 敏捷转型中的敏捷实践:Leangoo领歌scrum工具私有部署解决方案
    近年来,敏捷开发逐渐成为企业项目管理中的热门话题。无论是互联网公司还是传统制造业,越来越多的企业通过敏捷方法,提升了项目的交付效率和团队的协作能力。在这个背景下,如何选择合适的敏捷管理工具,并确保其安全性和灵活性,成为了不少企业关注的焦点。 很多团队在讨论敏捷实践时,会......
  • DevEco Studio:使用模拟器运行应用
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(MaoistLearning)➤博客园地址:为敢技术(https://www.cnblogs.com/strengthen/ )➤GitHub地址:https://github.com/strengthen➤原文地址:https://www.cnblogs.com/strengthen/p/......
  • 怎么将pdf文件拆分为一页(或任意页)的小文件-免费工具
    怎么把PDF文件拆分成一页一页序言    目前市面上有关pdf处理的工具有很多,不过绝大多数的PDF处理工具都需要付费使用,且很多厂商甚至连试用的机会也不给用户,有试用的,也是限制在几页内,这样就导致用户还没有办法确认你的软件是否满足需要,就要先付费购买会员或者授权,跟强......
  • 怎么将PDF文件页面转换成图片-免费工具分享
    怎么将PDF文件页面转换成图片序言目前市面上有关pdf处理的工具有很多,不过绝大多数的PDF处理工具都需要付费使用,且很多厂商甚至连试用的机会也不给用户,有试用的,也是限制在几页内,这样就导致用户还没有办法确认你的软件是否满足需要,就要先付费购买会员或者授权,这极大的影响了用......
  • 图论day61:最小生成树|最小生成树理论基础:prim算法、kruskal算法(思维导图版)、53.寻宝(卡
    图论day61:最小生成树|最小生成树理论基础:prim算法、kruskal算法(思维导图版)、53.寻宝(卡码网第七期模拟笔试)最小生成树理论基础(思维导图版)53.寻宝(卡码网第七期模拟笔试)1.prim法2.kruskal法最小生成树理论基础(思维导图版)53.寻宝(卡码网第七期模拟笔试)题目描述在......
  • DevEco Studio:预览数据模拟
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(MaoistLearning)➤博客园地址:为敢技术(https://www.cnblogs.com/strengthen/ )➤GitHub地址:https://github.com/strengthen➤原文地址:https://www.cnblogs.com/strengthen/p/......
  • shiro反序列化简单利用-1
    https://www.bilibili.com/video/BV1iF411b7bD?t=16.0环境搭建gitclonehttps://github.com/apache/shiro.gitcdshirogitcheckoutshiro-root-1.2.4编辑shiro/samples/web目录下的pom.xml,将jstl的版本修改为1.2流程分析静态分析尝试登录并抓包username和Password都......
  • 全能转码工具(免费,记得收藏)
    今天有小伙伴问我要ts转mp4的转换工具:添加图片注释,不超过140字(可选)这一提到格式转换,我第一想到的当然是格式工厂,需要格式工厂的小伙伴移步至——>>2024最新版,国产软件牛批!我测试可以转换,但今天给大家推荐另外一款音频视频格式转换软件,完全免费,也是非常好用!软件介绍今......
  • CSP 模拟 48
    A限速(speed)对于边权小于等于\(k\)的,尽量选大的,对于边权大于\(k\)的,尽量选小的,然后按这两个条件排序后kruskal,如果边权小的能组成生成树,那么答案就是小于等于\(k\)的最大的数和第一个大于\(k\)的数的较小代价。否则最后的生成树代价就是答案。有六十分的数据边权全部小......
  • CSP2024 前集训:csp-s模拟11
    前言T1挂了,后面几道赛时都不那么可做,T2读假题了浪费太多时间,T3没调出来。T4是原,但是整个机房只有一个人当时改了,所以还是没人写,因为T4是原,还加了个T5,也不太可做。T1玩水对于一个点\((i,j)\),若\(s_{i+1,j}=s_{i,j+1}\)则称其为分点,若一个分店后面还有分点或两个分......