2017-01-16 65 views
3

我已经研究了股票利润最大化算法,取决于具体情况。股票获利最大化给予多个股票

对于只有一种股票并且可以买入/卖出一次或多次的情况的策略对我来说是清楚的。您分别使用最大差异和最大子数组。

但是,当给定两只股票和它们各自的波动价格时会发生什么?你不能同时持有两只股票,卖出一只和买入另一只股票会导致交易成本。

示例:给出的回报最大化股票A和B.股票价格在期间内波动。因此,如果给定一个数组,A和B的每个数组中的指数表示特定时间的股票价格。考虑到你不能同时持有两种股票,买入A和卖出B导致交易成本,最佳的策略是什么?

+0

告诉我们到目前为止你已经尝试了什么?这味道像一个家庭作业/面试问题... –

+0

我认为你的老师正在寻找你说“动态规划”。 – Adam

+0

你能举个例子吗?我并不十分清楚你是否有初始预算,购买股票是否会最初减少你的利润。 – IVlad

回答

1

令:

dp[i, j] = maximum worth obtainable at period i if we currently hold 
      stock j 

假设t[i] = transaction cost at period i

我们:

dp[0, A] = A[0] # buy the best at time 0 
dp[0, B] = B[0] # you said only buying A and selling B induces a cost, 
       # you didn't say buying B induces a cost. If it does, 
       # just subtract t accordingly below 
dp[i, A] = max(
      dp[i - 1, B] + A[i] - t[i], # sell B, buy A 
      A[i]      # buy A alone 
      )        # we buy A no matter what 

dp[i, B] = max(
      dp[i - 1, A] + B[i],  # sell A, buy B, - t[i] if needed 
      B[i]      # buy B alone 
      ) 

答案是:

max{dp[i, A], dp[i, B]} 
i 
+0

在你的交易成本数组t中,你是否假设从股票A切换到股票B,反之亦然导致相同的成本? – Codor

+1

@Codor我只假设卖'B'和购买'A'会产生成本,反之亦然。如果反过来也适用,可以很容易地更改第二个'dp'更新。第一次更新中也有一个小小的错误,在这个评论之后立即修复。 – IVlad

+0

我不太确定这是否是_exactly_原始问题中的含义,但答案似乎基本正确。 – Codor