gpt4 book ai didi

simulation - 模拟股市行为的简单算法

转载 作者:行者123 更新时间:2023-12-03 09:44:47 24 4
gpt4 key购买 nike

我一直在使用 PHP 开发虚拟股票市场游戏。我一直用来决定股票价格的公式是

$price += $ran*0.001*$price + $ratio*0.005*$price

在哪里
$ran = rand(-1*$intensity, 2*$intensity)

$intensity 是一个介于 -5 到 5 之间的数字,取决于消息对公司是好是坏,以及
$ratio = (1.0*($buy-$sell))/($buy + $sell)

$buy 和 $sell 分别代表一家公司买入和卖出的股票数量。

这个公式的问题在于,即使强度为负(甚至 -5),比率项也总是被添加到价格中,这使得整体项增加。价格每 10 秒刷新一次,并且根据上述公式,价格会不断上涨,永远不会下降。那么,谁能帮我解决这个公式,使其与实际股票市场的变化更接近?

最佳答案

如果我理解正确的话,您正在尝试定义一种算法,以根据当前价格、一些市场事件和随机输入来确定逻辑下一个价格。这称为 Random Walk ,并且链接的页面信息量很大。

In economics, the "random walk hypothesis" is used to model shares prices and other factors. Empirical studies found some deviations from this theoretical model, especially in short term and long term correlations.



我们很难为您提供精确的函数,因为您期望的函数的确切行为本质上是特定于应用程序的。但是,可以通过将其拉出到自己的方法中并对其进行调整直到看到您想要的行为来测试行为并对其进行改进。

我建议将您定义的这种行为拉入 SSCCE (或单元测试,但假设您还没有设置 PHP 单元测试框架,一个示例就可以了)并创建一些测试用例,然后您可以在真空中调整您的算法并找到您喜欢的行为。

这是一些开始的样板:
<?php

function nextPrice($price, $intensity, $buy, $sell, $rand) {
// TODO
}

// Can tweak these values between runs, or put them in a loop if you want
$testPrice = 10.0;
$testBuy = 10000;
$testSell = 10000;

for ($i = -5; $i <= 5; $i++) {
// random float, from http://stackoverflow.com/a/14155720/113632
// set to a constant if you want to isolate the randomness and test other variables
$testRand = mt_rand(0, mt_getrandmax() - 1) / mt_getrandmax();
echo "<p>Intensity: $i - Rand: $testRand = ".
nextPrice($testPrice, $i, $testBuy, $testSell, $testRand)."</p>";
}

?>

一些额外的想法:
  • 您的 $ran定义肯定有问题,如果$intensity-5你正在执行 $ran = rand(5, -10);这会生成警告并且不会返回您想要的值。 这可能是您问题的根源 ,作为任何负面 $intensity基本上将设置 $ran到零。
  • 此外您的 $ran定义偏向于正数,这意味着即使有坏消息,价格也会很快上涨。我建议确保你的随机值同样有可能降低股票和提高它的值(value),如果你打算让股票随着时间的推移而上涨(这对我来说似乎是个坏主意)设置一个单独的 $longTermGrowthFactor与随机性分开,总是以该因素增加库存。
  • Turn on warning reporting in PHP - 因为您大概没有看到与您的 rand() 相关的警告调用,您可能会关闭警告和其他错误类型,这很可能意味着您的代码中隐藏着其他您不知道的错误,如果没有报告,它们将很难被发现。
  • 使用 mt_rand() 而不是 rand() ,后者已弃用,并且 mt_rand()是一种替代品,提供更好的随机性。
  • 关于simulation - 模拟股市行为的简单算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19302365/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com