2017-01-16 87 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