2012-02-21 53 views
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小时) 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

我不想让我的代码被写入,我只是想在这个数学函数上有一些帮助!非常感谢您的投票,我的问题已经很好地形成和清晰。你的评论真的没有意思! – Valky 2012-02-21 14:46:28

+0

而你删除了它...... ^^ – Valky 2012-02-21 14:47:34

+1

只是有些想法:看起来你打算用'buyOrder()'和'sellOrder()'函数来定价,这意味着它们是有效的限价单。考虑到这一点,逻辑应该是这样的:在收到给定价格的订单后,在数据库中搜索相应的“匹配”订单,并以“正确”的价格完成订单,即在每个订单。然后执行订单,从数据库中删除条目并更新最后售出的价格。 – Peter 2012-02-21 15:32:51

回答

2

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

  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美元。

+0

请注意,这是一个*非常简化的系统,但可能构成更现实/复杂的基础。 – Peter 2012-02-21 15:58:35

+0

非常感谢!我已经开发出销售“全部或部分”数量的系统。那么在你描述的情况下,不管股票的当前价格如何? ;-)用户打造市场?例如,A订单买20 * 10,B订单卖10 * 20,C订单卖15 * 5。结果是:买入$ 17.5 * 5(对于C)和买入$ 15 * 5(对于B),因此他获得10个单位的股票16.25美元,它也将是股票的市场价格,不是吗? ? – Valky 2012-02-21 16:09:48

+0

一般来说,“股票价格”是指最后交易执行的价格,所以是的,这是合理的。然而,股票价格/最近的交易价格通常不*表示*下一个*交易价格将会是什么,尤其是在波动/低流动性市场。 – Peter 2012-02-21 16:26:36