量化交易策略
計算簡單交易策略的利潤(回測)
我開發了一種交易算法,本質上非常簡單(我確實從將機器學習應用到這個問題的宏偉計劃開始,因為我是一名交易數據科學家)。
我會將程式碼放在這裡,但我想做一些適當的回測,然後再將其公開以供同行評審。無論如何,我看到的準確性
predicted_trading_signal
與perfect_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} $