【问题标题】:Weighted average cost of short-term stock trading短期股票交易的加权平均成本
【发布时间】:2022-06-11 21:15:28
【问题描述】:

我是编程新手,正在尝试学习 Julia。我尝试像以前在 R 中那样计算短期股票交易活动的加权平均成本。我在 Julia 中重写了代码,不幸的是,它以数据框格式返回了不正确的结果。 我试图通过将return vwavg 更改为println([volume[i], s, unitprice[i], value[i], t, vwavg[i], u]) 来调查每个迭代步骤的结果,并且输出是正确的。是四舍五入的问题吗? 非常感谢您的帮助

# create trial dataset
df = DataFrame(qty = [3, 2, 2, -7, 4, 4, -3,-2, 4, 4, -2, -3],
                price = [100.0, 99.0, 101.0, 103.0, 95.0, 93.0, 90.0, 90.0, 93.0, 95.0, 93.0, 92.0])
# create function for weighted average cost of stock price
function vwacost(volume, unitprice)
    value = Vector{Float64}(undef, length(volume))
    vwavg = Vector{Float64}(undef, length(volume))
    for i in 1:length(volume)
        s = 0
        t = 0
        u = 0
        if volume[i]>0
            value[i] = (volume[i]*unitprice[i]) + t
            volume[i] = volume[i] + s
            vwavg[i] = value[i]/volume[i]
            u = vwavg[i]
            s = volume[i]
            t = value[i]
        else
            volume[i] = volume[i] + s
            value[i] = u * volume[i]
            s = volume[i]
            t = value[i]
            vwavg[i] = u
        end
    return vwavg
    end
end

out = transform(df, [:qty, :price] => vwacost)

【问题讨论】:

    标签: julia stock trading weighted-average


    【解决方案1】:

    简单错误:

        for i in 1:length(volume)
            ...
        return vwavg
        end
    

    应该是:

        for i in 1:length(volume)
            ...
        end
        return vwavg
    

    您当前正在第一次循环迭代后返回结果,这就是为什么您生成的 vwawg 向量只有一个(第一个)计算条目,而所有其他条目为零/创建 @ 时内存中的任何内容首先是 987654324@ 向量。

    【讨论】:

    • 我的错,谢谢你,特别是详细的解释。没想到,函数只在第一次运行时正确,我尝试使用select()transform()的不同语法,错误仍然存​​在。经过一番检查,我发现每次应用该函数时,该函数都会替换原始 df 的“数量”列。我再次在 R 上测试等效函数,无论我将函数应用到同一个 df 多少,它都会返回正确的结果
    【解决方案2】:

    好的,第二个修改原始df导致结果不正确的问题可以通过copy(df)解决:

    out = select(copy(df), [:qty, :price] => vwacost => :avgcost)
    

    因此,原始df不会改变,结果会随着时间的推移保持一致。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-11
      • 1970-01-01
      • 1970-01-01
      • 2019-10-26
      • 1970-01-01
      相关资源
      最近更新 更多