我正在使用一张处理大宗商品未来数据的表格(财务数据,几乎像股票数据一样,但每月的到期日期可能长达两到三年)。
我的数据有符号、到期价和收盘价,大约有600行。例如,每种商品都有一个两个字符的代码;
商品代码/符号
S&P 500 E-Mini ES
纳斯达克100指数E-Mini NQ
罗素2000 E-Mini RTY
道琼斯期货迷你YM
黄金GC
玉米ZC
大豆ZS
每种商品都有多个月的到期日,最长可达3年或更长时间,但我只想工作两年。每个月都有一个字符代码,表示一个月和年份的最后两位数字。例如,2024年1月被编码为“F24”。
月份:一月二月三月四月五月六月七月八月九月十月十一月十二月
符号:F G H J K M N Q U V X Z
准备数据表(固定表)的懒惰方式:
[延迟到期日历数据:图像](
https://i.sstatic.net/nSp9NBQP.png
)
在惰性方法四年(48列“月”)日历中,表示未来到期月份,“锚定列C4”中只有动态值是年。月份列有固定的月份代码,从一月代码“F”开始,以此类推;
|â Current year - 1 â|â Current year â | â Current year+1 â |â Current year+2 â|
一个明显的问题是,例如,当当前月份是八月“Q”时,前8列是空的,我想在另一张紧凑的工作表中显示此日历的范围,因此空值对工作表没有好处!
**动态数据表(Dynamic SHEET):**
为了显示24个月的价值数据(约两年),锚定列B1(用于月份)和B2(用于月份和年份代码)将第一列中的当前月份作为月份(NOW()),然后使用此公式计算C1至Z1中的下一个24个月;
=月份(EOMONTH(NOW(),0)+30+(如果(MOD(B1,2)=1,1,0))
后续立柱将在30、60、90、120天内锚固立柱B1。如果一个月有31天,则通过公式If(MOD(B1,2)=1,1,0)增加一天
为了对年份和月份代码的最后2位数字进行编码,我在锚列B2中使用了这个公式;
=选择(B1、“F”、“G”、“H”、“J”、“K”、“M”、“N”、“Q”、“U”、“V”、“X”、“Z”)&右(年份(现在),2)
则后续到期列C2、D2…Z2的计算如下:
=选择(C1、“F”、“G”、“H”、“J”、“K”、“M”、“N”、“Q”、“U”、“V”、“X”、“Z”)&右(年(EOMONTH(NOW(),0)+30+(如果(MOD(A1,2)=1,1,0)),2)
为了自动计算年份,我增加了额外的天数30,30..720。
要玩图纸,请复制一份:
https://docs.google.com/spreadsheets/d/1ThGY8cH0zRTQSWM2k7aHCwZrnVpd88gXXS7jgx9Iy2s/edit?usp=sharing
到目前为止,我的应用程序正在工作,我正在用它来交易期货合约,我想知道我是否可以提高性能或效率。