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

关注这个问题
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小时分钟)
用户案例“购买示例”:

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

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

最佳答案 只是想扩展我的评论.这是一个基本情景;假设我们从数据库/系统中的未完成订单开始.

>用户A提交20单位股票X @ 10美元的限价卖单.
>用户B提交10个股票X @ 12美元的限价买入订单.

在步骤1之后,您将在系统中有一个未完成的订单,因为没有要打开的订单.

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

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

>对于大于或等于买单数量的数量,存在未平仓卖出卖单.
>限价买入价格大于或等于限价卖出价格,因此可以商定交易价格.

用户A不想以低于10美元的价格出售,而用户B不想以超过12美元的价格购买.因此,在这种情况下,存在一系列合适的交易价格,即10-12美元之间的任何价格都是合适的.

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

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

点赞