用户订单的股票期权价格变化(买入/卖出)

时间:2012-02-21 14:28:45

标签: php math stocks stockquotes

关注此问题Generate a fictitious stock option price variation

我希望模拟价格变化,而用户会给出买入或卖出的订单,就像真实的股票交易所一样。 (我提出了一个用户案例来帮助您理解。)

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

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

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

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小时分钟) Stock option price variation

用户案例“购买示例”

  • 用户发送订单以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       
}

也许我有点疯狂地认为可以自动化,但我相信,任何帮助都会受到高度赞赏。

1 个答案:

答案 0 :(得分:2)

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

  1. 用户A提交20个X股10美元的限价卖单。
  2. 用户B提交10个库存X @ 12美元的限价购买订单。
  3. 在第1步之后,您将在系统中有一个未履行的订单,因为没有要打开的订单。

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

    用户B的购买订单可以实现的原因有以下两个原因:

    1. 如果数量大于或等于买单数量,则有未平仓卖出卖单。
    2. 限购价格大于或等于限价卖价,因此交易价格可以达成协议。
    3. 用户A不想以低于10美元的价格出售,而用户B不想以超过12美元的价格购买。因此,在这种情况下,有一系列合适的交易价格,即10-12美元之间的任何价格都是合适的。

      问题在于找到合适的交易价格。怎么判断出来?选择范围的中间?这只是一种解决方案。 (在流动性很大的市场中,你可能没有同样的问题,因为会有很多不同价格的开放订单,有些是市场价格。)

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