【问题标题】:Stock option price variations by users orders (buy/sell)用户订单的股票期权价格变化(买/卖)
【发布时间】:2023-03-13 20:20:01
【问题描述】:

关注这个问题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

图片中的结果(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       
}

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

【问题讨论】:

  • 我不想写我的代码,我只是想对数学函数有所帮助!非常感谢您的否决票,我的问题形式明确且清晰。你的评论真的不有趣!
  • 然后你删除了它... ^^
  • 只是一些想法:您似乎打算让buyOrder()sellOrder() 函数都接受价格,这意味着它们实际上是限价订单。考虑到这一点,逻辑应该是这样的:在收到给定价格的订单时,在数据库中搜索相应的“匹配”订单并以“正确”价格履行订单,即价格限制在每个订单。然后执行订单,从数据库中删除条目并更新最后卖出的价格。
  • 使用无限制(市场价格)订单,您会立即看到未结订单数据库中可用的内容并执行/履行。当您有多个未完成的市价订单时,就会出现问题。在这种情况下如何确定价格?这几乎就像模拟缺乏流动性一样,这可能会导致巨大的价格波动。
  • 你的cmets很有趣,我没有看到这样的东西。用户之间直接通过订单买卖价格,更加连贯!但是我应该与最终价格有什么关系?...就像你说的那样,它应该会导致巨大的价格波动。用户之间交换的平均价格和行动价格?

标签: php math stocks stockquotes


【解决方案1】:

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

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

【讨论】:

  • 请注意,这是一个极其简化的系统,但可能构成更现实/更复杂的事物的基础。
  • 非常感谢!我已经开发了销售“全部或部分”数量的系统。那么在您描述的情况下,无论股票的当前价格如何? ;-) 用户创造市场?例如,A 订单买入 $20*10,B 订单卖出 $10*20,C 订单卖出 $15*5。结果将是:A 买入 $17.5*5(给 C),A 买入 $15*5(给 B),所以他得到 10 个单位的股票 16.25 美元,这也是股票的市场价格,不是吗? ?
  • 一般来说,“股票价格”是指最后一笔交易执行的价格,所以是的,这是有道理的。但是,股票价格/最后交易价格通常指示下一个交易价格将是多少,尤其是在波动/流动性低的市场中。
  • 我已经更新了关于您工作的问题中的算法。如果我也想要当前的卖出/买入量价格变化怎么办?因为一个10个单位的订单和一个10000个单位的订单对股价的影响肯定不会一样,不是吗?
  • 好点。然而,在实际市场中,使用“最后交易价格”通常是有意义的,因为交易速度如此之快,以至于对价格产生影响的小额交易被其他交易量所抵消。并回答您的问题:在异常情况下,小额交易会对股价产生巨大影响。请参阅这篇关于 2010 年 5 月“闪崩”的文章:thestreet.com/story/10757383/…
猜你喜欢
  • 2017-09-26
  • 2010-12-12
  • 1970-01-01
  • 2021-06-07
  • 2011-03-15
  • 1970-01-01
  • 1970-01-01
  • 2013-05-26
  • 1970-01-01
相关资源
最近更新 更多