2017年3月20日 星期一

[pmm指令] 全域變數

[前言]

Multicharts的Portfolio Trader現在有一些指令可以做投組的資金管理、變數互傳,以往的ADE只能做變數單向傳送,而現在的投組指令(因為都是pmm開頭以後就叫他pmm指令好了),可以做雙向傳送,也就是策略A傳給策略B,計算完後再傳給策略A,最近要做一些選股的模型,也把常用到的pmm指令寫在這當做給自己的一個複習。

[Pmm指令]

pmm_set_global_named_num:設定全域變數。
pmm_get_global_named_num:取得全域變數。

[觀念解釋]

<全域變數>

通常pmm_set_global_named_num、pmm_get_global_named_num是會一起使用的,只單獨使用一個沒有任何意義。全域變數的意思就是這個投組在跑的時後,這個變數可以被所有策略呼叫,也可以被所有策略修改,只要使用pmm_set_global_named_num("A",xxx),就是把全域變數「A」設定為xxx。使用pmm_get_global_named_num(A)則是取得全域變數的值。

[範利]



Test1程式碼:
========================================
pmm_set_global_named_num("GlobalVar", C);
========================================

Test2程式碼:
========================================
value1=pmm_get_global_named_num("GlobalVar");
Print(datestr(d)," TWSE:",value1," TXF:",C);
========================================

輸出結果:



2017年3月10日 星期五

閒聊2017.03.11

最近異想天開的想用機器學習篩選進場點位,我的想法是這樣:

Step1. 先用一個簡單的策略做進出場,並記錄當下特徵狀態

這邊說的特徵其實就是可以量化的各種東西,
RSI數值、Put Call Ratio、公債殖利率...等都可以拿來當做特徵

這樣整理後會出現類似下表


Step2. 將獲利做為分類目標,嘗試是否有特徵可良好完成分類

也就是看看是不是在某些特定情況下,該策略會有較良好的獲利
如果有的話,以後這些特定情況出現時,我也會較有信心進場

以上圖來說,RSI數值似乎可以當做一個不錯的特徵,
我可以選定以後RSI大於20的話我的口數進場兩倍

但真實世界沒這麼簡單,目前隨便嘗試一下,分類正確率都跟射飛鏢一樣。
這個結果也可能是我沒有真正學習過機器學習的關係,目前就是會使用一些現成套件,並把資料倒進去看看效果如何,看來要真正使用機器學習還是要先了解一下背後的原理才行。

關於套件

我使用的是python的sklearn,下圖是sklearn官網上用svm分類的例子



可以看出真得非常簡單使用,不到五行就可以用聽起來超厲害的SVM(Support vector machine;支持向量機)做完分類

2017年3月3日 星期五

[策略驗證] 週選擇權樂透策略 2013~2016

[閒聊]

之前的週選擇權樂透策略只有測試2015年Q4,今天把2013年到2016年的測試做完。QUANT TRADE是由幾個好朋友組成的交易團隊,會想寫這個網誌一部份原因是強迫我們每個禮拜都能研究一點新東西。有時後一些策略結果不盡如人意,或是更新速度比較慢,就請大家多包涵了。

[策略]

利用週選擇權損益文件,回測波動率均值回歸特性。
MC程式碼:

var:Strike_Call(0),Strike_Put(0);

Strike_Call=Floor(C/100)*100+100;
Strike_Put=Floor(C/100)*100;

if highest(h,5)-lowest(l,5)<200 then begin
print(NumToStr(d+19000000,0),",","C",",",NumToStr(Strike_Call,0));
print(NumToStr(d+19000000,0),",","P",",",NumToStr(Strike_Put,0));
end;


[結果]


總損益點數:-761
下禮拜再來測試有沒有改進方法。