C# 实现均值回归模型

我们可以使用 Ornstein-Uhlenbeck 过程来模拟价格的均值回归,首先我们需要确定一些基本的参数:长期均值(μ)、均值回归的速度(θ)、波动率(σ)以及时间步长。

我们将通过生成随机数来模拟这个过程,每次迭代中,价格会朝着均值回归,加入随机扰动来模拟市场的随机波动。

C# 实现均值回归模型(Ornstein-Uhlenbeck 过程)

using System;

namespace MeanReversionSimulation
{
    class Program
    {
        static void Main(string[] args)
        {
            // 参数设置
            double mu = 100;    // 长期均值(μ)
            double theta = 0.1; // 均值回归速度(θ)
            double sigma = 1;   // 波动率(σ)
            double initialPrice = 110; // 初始价格
            double timeStep = 0.01; // 时间步长
            int numSteps = 1000; // 模拟的步骤数

            // 模拟均值回归过程
            double price = initialPrice;
            Random rand = new Random();
            for (int t = 0; t < numSteps; t++)
            {
                // 随机扰动(正态分布)
                double randomNoise = NormalRandom(rand, 0, 1); 

                // Ornstein-Uhlenbeck 过程的公式
                price += theta * (mu - price) * timeStep + sigma * Math.Sqrt(timeStep) * randomNoise;

                // 打印当前价格
                Console.WriteLine($"Step {t + 1}: Price = {price:F2}");
            }
        }

        // 生成标准正态分布的随机数
        static double NormalRandom(Random rand, double mean, double stdDev)
        {
            double u1 = 1.0 - rand.NextDouble(); // Uniform(0,1) random doubles
            double u2 = 1.0 - rand.NextDouble();
            double randStdNormal = Math.Sqrt(-2.0 * Math.Log(u1)) * Math.Sin(2.0 * Math.PI * u2); // Box-Muller transform
            return mean + stdDev * randStdNormal;
        }
    }
}

代码解析

  1. 初始化参数

    • mu: 价格的长期均值。我们假设价格最终会回到 mu
    • theta: 均值回归的速度,表示价格回归均值的速度。
    • sigma: 表示市场的波动性,控制随机扰动的幅度。
    • initialPrice: 初始价格。
    • timeStep: 模拟的时间步长(通常为小时间单位,如天数、小时等)。
    • numSteps: 模拟的总步骤数,即模拟的时间段。
  2. 模拟过程

    • 每一步价格会根据公式 price += theta * (mu - price) * timeStep + sigma * Math.Sqrt(timeStep) * randomNoise; 更新。theta * (mu - price) 使价格朝着均值 mu 回归,sigma * Math.Sqrt(timeStep) * randomNoise 加入了随机扰动,使得价格在均值回归的同时有一定的波动。
  3. 生成标准正态分布随机数

    • NormalRandom 方法使用 Box-Muller 变换生成标准正态分布(均值为0,标准差为1)的随机数,然后根据提供的 meanstdDev 对其进行转换,以生成符合正态分布的扰动项。
  4. 打印价格变化

    • 每一轮的模拟中,价格都会根据均值回归过程发生变化,并打印当前价格。

运行结果

该程序会模拟资产价格的均值回归过程,并输出每个时间步的价格变化。例如,假设长期均值为 100,初始价格为 110,均值回归速度为 0.1,波动率为 1,模拟 1000 次价格更新。随着时间推移,价格会逐渐回归到 100。

扩展和改进

  1. 可视化

    • 如果希望可视化模拟过程,可以将价格记录到一个列表中,然后使用图表(如 OxyPlotLiveCharts)绘制价格随时间的变化。
  2. 参数优化

    • 可以通过调整 muthetasigma 等参数来研究不同市场条件下的均值回归行为。
  3. 多资产模拟

    • 如果想模拟多个资产的均值回归,可以使用相同的模型对多个资产的价格进行模拟,或添加资产之间的相关性。

通过该模拟,您可以深入理解均值回归过程在金融市场中的应用,尤其是如何通过数学模型对资产价格进行建模和预测。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值