量化交易策略

計算簡單交易策略的利潤(回測)

  • January 19, 2017

我開發了一種交易算法,本質上非常簡單(我確實從將機器學習應用到這個問題的宏偉計劃開始,因為我是一名交易數據科學家)。

我會將程式碼放在這裡,但我想做一些適當的回測,然後再將其公開以供同行評審。無論如何,我看到的準確性predicted_trading_signalperfect_insight $ +80% $ 橫跨許多 russell 2000 小組,其中作為一名數據科學家和一個理性的人似乎好得令人難以置信。為此,我想知道這是否是一個合適的測試

這是一些虛擬碼:

# generate trading signal up onto data[i]
predicted_trading_signal = some_algo(data[:i])

# generate perfect insight signal
perfect_insight = another_algo(data[i], data[i+1])
# where data[i+1] is say the next day
if some_statistical_property_of_data > lambda:
   if  predicted_trading_signal == perfect_insight:
       correct+=1
   else:
       incorrect+=1

# after running over all windows of interest for a particular stock 
accuracy = 100.0* correct /float(correct + incorrect)

我希望我可以更具體地使用程式碼!

  • 這是計算準確性的有效方法嗎
  • 以截至今天的資訊為條件,並使用接下來幾天的價格測試策略中的典型價格,而不會洩露數據(對於像我這樣的交易中天真的人來說,這是一個微妙的問題)
  • 有更好的方法嗎?

我的最後一個問題(希望這被認為是更大問題的一部分 - 我討厭 mathstackexchange 上的一篇文章中的多個問題)

我可以將損益計算確定為

$$ P_i = \text{trading_signal}{i-1}\left(S{i} - S_{i-1}\right)\cdot C_{i-i} $$ 這裡

  • $ C_{i-1} $ 是投入的初始資本。
  • $ S_i $ 股票價格
  • $ \text{trading_signal}_{i-1} $ 是初始交易信號

首先,我假設您的交易策略會產生類似的輸出 - 買入、賣出、中性

粗略一瞥,您的計算似乎很好,您可以查看以下幾點

  • 為什麼完美洞察只關注增量變化?許多交易想法都依賴於路徑 - 因此,如果您添加歷史記錄,請重新檢查您最適合的操作是否會發生變化。
  • 據我了解,準確性參數是策略交易中獲勝的百分比。對此更常用的術語是“命中率”。然而,命中率是一個誤導性的數字。應始終結合“平均盈利交易/平均虧損交易”數字查看命中率。只有這樣,您才能達到預期值。可能發生的情況是,您的策略具有 80% 的命中率,但您的平均贏/平均損失為 0.1,這意味著總體而言,該策略正在產生負回報。
  • 我看到你在數據上使用了一個統計條件——我希望這能解釋交易成本——比如,只有當交易價格足夠高於入場價格時,交易才被稱為贏利。

至於您對利潤計算的查詢,您錯過了分割因子。

$ P_i=trading_signal_{i−1}.\frac{(S_i−S_{i−1})}{S_{i−1}}⋅C_{i−i} $

引用自:https://quant.stackexchange.com/questions/31963