首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于指标计算利润的数据模型

基于指标计算利润的数据模型
EN

Stack Overflow用户
提问于 2016-05-25 00:58:22
回答 1查看 76关注 0票数 0

简单的解释:,我的目标是找出如何获得下面显示的利润栏。我试图计算每一对变化值(-1到1和1到-1)在val中的差异。

  1. 如果启动indicator为1或-1,则存储该值。
  2. 查找与之相反的下一个indicator (第3行中的SO-1)。救这个瓦尔。从其中减去第一个值(.85.-.84)。保存在利润栏中。
  3. 重复

特定于这种情况

  1. 一直走到下一个对面val (在第4行)。保存此值。减去值,保存在“利润”栏中。()
  2. 一直走到下一个对面val (在第8行)。保存此值。减去值,保存在“利润”栏中。财务解释(如果有用的话),,我正在尝试编写一个函数来计算利润,给出一列价值和一列指标(买入/卖出/持有)。我知道这是在一些大型软件包(quantmod,quantstrat)中实现的,但我似乎找不到一个简单的方法来实现它。 df<- data.frame(val=c(.84,.83,.85,.83,.83,.84,.85,.81),indicator=c(1,0,-1,0,1,1,1,1,1,1,1)) df val指标利润1 0.84 1 NA 2 0.83 0 NA 3 0.85 -1 .01:(0.85-.84)从1 1到-1 4 0.83 1 .02基于(0.85-.83)从-1到1 5 0.83 0 NA 6 0.84 1 NA 7 0.85 1 NA 8 0.81 -1 -.02基于(.81-.83)从上次更改(第4行)到现在

备注

  • 多个指示符应该被忽略(1111)意味着在第一个应该存储的指示器之外没有任何东西。(第4行存储,第5行、第6行、第7行不在)
  • 忽略0,持有不更改利润计算

我很高兴提供更多的信息,如果需要。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-25 06:40:48

在将问题分成两个部分之后,我更容易在头脑中解决这个问题,这两个部分对应于下面所示的两个循环。第一部分涉及标记指示值发生变化的行,而第二部分涉及从相关行(即第1部分中选择的行)中减去val。当然,我想你是想在你的例子中把-.02放在第4行吗?如果没有,那么在计算利润时,请澄清哪些行被减去了哪些行。

代码语言:javascript
复制
data.frame(val=c(.84,.83,.85,.83,.83,.84,.85,.81),
           indicator=c(1,0,-1,1,0,1,1,-1)) -> x

x$num <- seq_along(x$val)
x$rollingProf <- NA
# start with indicator = 1

indicator <- 1
value <- .84

for (i in 1:(nrow(x) - 1)) {        
    x[i + 1, "indicator"] -> next_
    if (indicator * -1 == next_) {
        1 -> x[i + 1, "rollingProf"]
        indicator <- next_
    } 
}

x[!is.na(x$rollingProf), c("val", "num")] -> q
for (i in 2:nrow(q)) {
    q[i, "val"] - q[i - 1, "val"] -> q[i, "change"]
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37426214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档