非重组二叉树节点索引通用公式及持有期收益计算咨询
非重组二叉树n期持有期收益的节点索引公式
二叉树节点生成逻辑
你提供的非重组二叉树生成代码如下:
def arbolno(t,S0,u,d): S=[S0] for i in range(1,2**(t+1)-1): if i%2==0: S.append(np.round(S[int(i/2-1)]*u,3)) elif i%2!=0: S.append(np.round(S[int((i-1)/2)]*d,3)) return S
节点层级与索引的对应关系:
- 时间0(初始层):仅1个节点,索引
0 - 时间1:2个节点,索引
1(d分支)、2(u分支) - 时间2:4个节点,索引
3(d→d)、4(d→u)、5(u→d)、6(u→u) - ...
- 时间k:共
2^k个节点,起始索引为2^k -1,结束索引为2^(k+1)-2
父节点与子节点的索引映射:
- 父节点
p的d分支子节点索引:2p +1 - 父节点
p的u分支子节点索引:2p +2
通用索引公式推导
假设在时间k买入索引为idx_k的节点,持有n期后在时间k+n卖出对应路径的节点,可按以下规则计算目标节点索引:
1. 全路径通用公式
从idx_k出发的任意路径(共2^n种,每步可选d或u),目标节点索引为:
idx_{k+n} = 2^n * idx_k + (2^n -1) + q
其中:
q是0到2^n -1的整数,对应路径的二进制编码:将q转为n位二进制数,每一位0代表选d分支,1代表选u分支。
2. 极端路径简化公式
- 全程选u分支(
q=2^n -1):
对应你给出的示例:idx_{k+n} = 2^n * (idx_k + 2) - 2idx_k=2,n=2,代入得2^2*(2+2)-2=14,与示例完全匹配。 - 全程选d分支(
q=0):idx_{k+n} = 2^n * (idx_k +1) -1
收益计算示例
以持有期2、买入节点2(S[2])、卖出节点14(S[14])为例,收益计算代码为:
return = (S[14] - S[2]) / S[2]
内容的提问来源于stack exchange,提问作者Agustin Amador Ehrman
相关产品推荐
相关产品推荐

