4

按照这个问题生成一个虚构的股票期权价格变化

我希望模拟价格变化,同时用户下达买入或卖出订单,就像真实的证券交易所一样。(我做了一个用户案例来帮助你理解。)

初始状态“股票期权示例”

X 公司,股票期权价格 20,000 美元

CRON 任务每秒都会产生价格变化,使用这个 PHP 脚本:

function stockVariation($price,$max_up,$max_down)
{
    // Variation calculate, with volatility max (10 to 100)
    $ratio=(mt_rand(0,$max_up)-mt_rand(0,$max_down))/10000;
    // New price
    $price+=$ratio; 

    return round($price,5);
}

波动性是由随机消息造成的,这使得 $max_up > $max_down 或 $max_up < max_down 随机时间。之间,$max_up = $max_down。

图片中的结果(1小时/分钟) 股票期权价格变动

用户案例“购买示例”

  • 用户发送订单以 18,000 美元购买 1000 份该期权
  • 系统将订单存入数据库
  • CRON 任务每分钟验证一次,如果价格 <= 购买订单,则在最后一分钟
  • 当此期权的价格<=此订单时,用户获得此股票期权。

用户案例“销售示例”

  • 用户发送订单以 22,000 美元的价格出售 1000 份该期权
  • 系统将订单存入数据库
  • CRON 任务每分钟验证一次,如果价格 >= 卖单,最后一分钟
  • 当该期权的价格>=该订单时,用户卖出该股票期权。

我的问题

它运行良好,但它不是证券交易所市场的真正变体。

我的问题

如何根据订单的价格和数量进行价格变动?

就像“供求规律”一样。

例如(关于彼得答案的编辑):

function stockOrder($orderPrice,$orderQuantity,$type)//$type= buy or sell
{
    // Record the order in database (ok)
    // Compare with other orders (ok) 
    // $orderPrice<=$dbSellPrice or $orderPrice>=$dbBuyPrice
    if checks
       // Buy and sell at the best prices 
       // for quantities available holded by users (ok)
       // Record/update the holding of the stock (ok)
       // Update the price of the stock
    end if       
}

也许我有点疯狂地认为它可以自动化,但我相信它,任何帮助将不胜感激。

4

1 回答 1

3

只是想进一步扩展我的评论。这是一个基本场景;假设我们从数据库/系统中的零个未完成订单开始。

  1. 用户 A 提交 20 单位股票 X 的限价卖单,价格为 10 美元。
  2. 用户 B 提交 10 单位股票 X 的限价买单,价格为 12 美元。

在第 1 步之后,您将在系统中有一个未完成的订单,因为没有可匹配的未结订单。

在第2步之后,用户B提交的订单可以通过系统中的未结订单来履行。(为简单起见,假设用户 A 的订单可以分解,即不是全有或全无的订单)

用户 B 的买单能够被执行的原因有以下两个:

  1. 有一个数量大于或等于买单数量的未平仓卖单。
  2. 限价买入价大于等于限价卖出价,可以约定成交价。

用户 A 不想以低于 10 美元的价格出售,而用户 B 不想以超过 12 美元的价格购买。所以在这种情况下,有一个合适的交易价格范围,即10-12美元之间的任何价格都是合适的。

问题是找到合适的交易价格。如何确定?选择范围的中间?这只是一种解决方案。(在一个流动性很大的市场中,您可能不会遇到同样的问题,因为会有很多不同价格的未平仓订单,有些是市场价格。)

举例来说,假设您选择了 11 美元的交易价格,即合适范围的中间值。用户 B 的订单现在将被履行,由于用户 A 的订单仅部分履行,系统中将剩下一个未结订单:用户 A 以 10 美元的价格出售剩余的 10 个单位。最后交易价格将更新为 11 美元。

于 2012-02-21T15:58:01.960 回答