【问题标题】:Find Matches Between UnSorted Arrays AND Retrieve Corresponding Values for Matches Found查找未排序数组之间的匹配项并检索找到的匹配项的对应值
【发布时间】:2021-11-04 17:28:34
【问题描述】:

我有两个数据透视表(称为 1 和 2),分别包含当前和前一天的期权数据。我使用这些表中的数据组合进行了几次计算,在所有情况下,匹配键都是期权合约(执行价)价格。

我试图解决的问题发生在期权行使合约每天不同时。例如,可以以以前不存在的新价格引入合约(或相反——当不再向市场提供的合约被逐日删除时)。这两种情况都会导致表格行数据之间出现偏移。

使用 INDEX 和 MATCH 似乎是一个可行的解决方案,其中当日执行价格是匹配的关键。如果两个表中都存在该键,则打印相应的当前和前一天的值并将此输出用于比较公式。

我创建了一个包含简化测试数据here 的文件。 G-I 列包含 INDEX MATCH 语句,应该说明我需要在输出方面完成什么,并且我突出显示了受合同创建的行偏移量影响的行每天都不相同。

我尝试了几种解决方案;这不是我的驾驶室,可以使用一些帮助。谢谢

【问题讨论】:

    标签: google-sheets indexing match


    【解决方案1】:

    根据两个表之间的键匹配打印值所需的解决方案。

    根据我使用的数据,表行之间的不可控偏移是经常发生的。出于这个原因(如原帖中所述),INDEX MATCH、VLOOKUP 等的使用在这种情况下不起作用,因为它们在相应的单元格中寻找匹配项。

    我发现的解决方案涉及使用 SUPERSQL,这是一对支持使用 SQL 的应用脚本(即 SELECT 和 JOIN 语句)。

    我用this视频了解SUPERSQL的用法;如果有人遇到与我类似的需求,它的描述会包含一个安装视频的链接。

    【讨论】:

      【解决方案2】:

      使用 puts 作为主键,

      您的问题是您使用行使价来决定购买,但是购买是由看跌价值定义的。这是我观察到的数据示例。

      https://docs.google.com/spreadsheets/d/17Lkib1tCFEw9upEIUmpubhWUVGbQ4RDXboGe9nR4Qdg/edit?usp=sharing

      行使价和看跌价之间存在 100% 的匹配。因此,如果您尝试比较某个购买,则可以查看看跌价值。

      【讨论】:

      • 如前所述,这是示例数据。如果需要,我可以添加全套。您对逻辑的最初评论是在用于比较目的的前一天数据必须关闭当天数据中发现的。但是,罢工必须是关键,因为看跌和看涨合约都可以以行使价存在。例如,如果罢工显示变化,则相关计算显示看跌或看涨合约的未平仓头寸变化。理想的解决方案:如果前一天数据中存在当天数据中的罢工,则从两组中检索所需的值。如果没有,则不会打印任何内容。
      【解决方案3】:

      从逻辑上讲,使用最新数据是有意义的。

      如果您的公式必须依赖单个值进行某种比较。

      您在第 V 列中使用的公式是

      =IF(OLD_STRIKE=NEW_STRIKE,OLD_STRIKE,FALSE)
      

      我建议,如果您需要进行比较,最近的输入很可能是最正确的。所以你可以使用

      =IF(OLD_STRIKE=NEW_STRIKE,OLD_STRIKE,NEW_STRIKE)
      

      另一种选择是将两者取平均值,我不建议这样做,因为如果一夜之间发生了剧烈变化,或者数据中存在某种异常值(如流浪 0),它可能会丢弃您的数据。但无论哪种方式都是该选项。

      =IF(OLD_STRIKE = NEW_STRIKE, OLD_STRIKE, AVERAGE(OLD_STRIKE, NEW_STRIKE))
      

      【讨论】:

      • 感谢您的浏览。执行价格是绝对的 - 它不能被平均。它是衍生品(即股票期权)合约在行使时以及在指定的到期日之前可以买卖的设定价格。期权交易商根据他们认为的需求以执行价格引入合约,这可能每天都在发生。因此,当向市场提供以前不存在的合同时,我描述了管理实例的需要,或者反过来 - 不再提供以前存在的合同。
      • 根据您的回复,我意识到我提供的信息量不足以描述需求及其条件。我认为这可以更好地描述为未排序数组之间的查找函数。我会看看这会导致什么。
      • 我根据对我要解决的问题的更好理解更新了原帖,并进一步简化了测试数据以说明问题和需要的解决方案。
      猜你喜欢
      • 2012-06-20
      • 2020-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-09
      • 1970-01-01
      • 2021-07-04
      • 1970-01-01
      相关资源
      最近更新 更多