【BruceAshbey的回答(10票)】: 謝邀。這個(gè)事情上只能靠自己,你要很清楚知道數(shù)據(jù)的狀態(tài)。 舉例來(lái)說(shuō): 股票收盤(pán)價(jià)是下午3點(diǎn)才有的,但是開(kāi)盤(pán)價(jià)上午9點(diǎn)半就可以了。 所以你的策略如果是盤(pán)中的不可以用收盤(pán)價(jià)信息但是可以用開(kāi)盤(pán)價(jià)信息。 同樣類(lèi)似的財(cái)務(wù)報(bào)告信息,你知道國(guó)內(nèi)的財(cái)務(wù)報(bào)告是披露日的收盤(pán)以后公布的 所以當(dāng)財(cái)務(wù)披露時(shí)間是2014-8-3日的時(shí)候,你就知道在2014-8-3日是不能用的,要在2014-8-4才能用這個(gè)信息。更進(jìn)一步,財(cái)務(wù)數(shù)據(jù)又分調(diào)整數(shù)據(jù)和非調(diào)整數(shù)據(jù),調(diào)整數(shù)據(jù)時(shí)下一期才公布的,所以比如你現(xiàn)在雖然能看到2014年的中報(bào),但是看不到2014年中報(bào)的調(diào)整數(shù)據(jù)。 這些東西如何避免只能靠你自己對(duì)數(shù)據(jù)的理解,積累相應(yīng)的知識(shí),然后避免。 如果我們看的再細(xì)一點(diǎn),在行情里面也是很有多未來(lái)數(shù)據(jù)的,比如說(shuō)你看到交易所14:00:00的行情 等你收到已經(jīng)是14:00:01了,那么對(duì)你來(lái)說(shuō)也可能是未來(lái)數(shù)據(jù),類(lèi)似的情況也很多。還有諸如數(shù)據(jù)更正之類(lèi)的事情,過(guò)了很久你已經(jīng)很難分辨出真正的數(shù)據(jù)時(shí)間了。所以如果要真正的避免未來(lái)數(shù)據(jù),把細(xì)節(jié)摳的很細(xì)也是一個(gè)刻舟求劍的情況,完全沒(méi)有必要。 這里就牽涉到另外一個(gè)層面的東西了,對(duì)你的策略的理解,需要估計(jì)你用的數(shù)據(jù)對(duì)你的策略收益率會(huì)有多少影響,這個(gè)就完全是經(jīng)驗(yàn)上面的東西了。 同樣的還有一步很重要的就是樣本外的模擬測(cè)試,這個(gè)模擬測(cè)試不是指樣本外測(cè)試,而是模擬的每天更新你的策略再跑一段時(shí)間,看看效果到底怎么樣。 從策略研發(fā)--樣本外測(cè)試--模擬測(cè)試--小資金實(shí)戰(zhàn)--大資金實(shí)戰(zhàn) 再加不斷的調(diào)整,這些過(guò)程和步驟是不能少的。 【楊影楓的回答(7票)】: 謝邀 我這里舉例說(shuō)明好了,給大家講講一些在K線(xiàn)結(jié)構(gòu)下常見(jiàn)的用到未來(lái)函數(shù)的錯(cuò)誤例子。 策略1: 在K線(xiàn)上,在最高價(jià)賣(mài)出,在最低價(jià)買(mǎi)入。 錯(cuò)誤隱蔽性:★ 錯(cuò)誤解釋?zhuān)猴@然在K線(xiàn)內(nèi)每一時(shí)刻,我都無(wú)法判斷該時(shí)刻是在最低價(jià)/最高價(jià),所以我們也就無(wú)法進(jìn)行策略1。 策略2: 在當(dāng)前K線(xiàn)上,如果最低價(jià)大于上一K線(xiàn)的最低價(jià),那么在最高價(jià)突破上一K線(xiàn)的最高價(jià)時(shí)買(mǎi)入,反之則賣(mài)空。 錯(cuò)誤隱蔽性:★★ 錯(cuò)誤解釋?zhuān)涸蚺c策略1類(lèi)似,但具有一定的隱蔽性,我們似乎在邏輯上有了確定的買(mǎi)入點(diǎn),但實(shí)際上我們無(wú)法確定最高點(diǎn)/最低點(diǎn)出現(xiàn)的先后順序,所以這個(gè)買(mǎi)入點(diǎn)是假的,并無(wú)法在真實(shí)交易中確定。 策略3: 在當(dāng)前K線(xiàn)上,如果最高價(jià)突破前一最高價(jià),同時(shí)K線(xiàn)成交量大于上一K線(xiàn)成交量時(shí)買(mǎi)入。 錯(cuò)誤隱蔽性:★★ 錯(cuò)誤解釋?zhuān)撼山涣恳彩菚?huì)隨著時(shí)間變化的數(shù)值,所以在K線(xiàn)結(jié)構(gòu)上我們無(wú)法確定在突破一瞬間成交量的比較情況。 總結(jié)1:在K線(xiàn)結(jié)構(gòu)的量化交易時(shí),一旦用到在最高/最低/某突破點(diǎn)位做交易時(shí)一定要特別注意,比較安全的選擇是用當(dāng)前收盤(pán)價(jià)或下一K線(xiàn)開(kāi)盤(pán)價(jià)價(jià)格進(jìn)行交易。 策略4: 采用ZIGZAG指標(biāo),在折線(xiàn)的低點(diǎn)買(mǎi)入,在頂點(diǎn)賣(mài)出。 錯(cuò)誤隱蔽性:★★★ 錯(cuò)誤解釋?zhuān)篫IGZAG是延遲類(lèi)指標(biāo),只有在行情走出一定時(shí)間/幅度后才可以確定是否是頂點(diǎn)/低點(diǎn),所以單純使用指標(biāo)而不理解指標(biāo)的算法會(huì)導(dǎo)致使用未來(lái)函數(shù)的可能性。 策略4: 如果當(dāng)前價(jià)格大于MA60(60K線(xiàn)均線(xiàn)),那么在最高價(jià)突破前20根K線(xiàn)最高價(jià)時(shí)買(mǎi)入。 錯(cuò)誤隱蔽性:★★★ 錯(cuò)誤解釋?zhuān)篗A60計(jì)算時(shí),已經(jīng)用到了當(dāng)前K線(xiàn)成交價(jià),所以如果此時(shí)還用最高價(jià)突破時(shí)價(jià)格買(mǎi)入就用到了未來(lái)函數(shù)。 總結(jié)2:在用到指標(biāo)時(shí)一定要清楚其算法,明白其使用了哪些變量,才能避免使用到未來(lái)函數(shù)。 策略5: 在做tick級(jí)別策略時(shí),假設(shè)我的策略是以當(dāng)前tick的最新成交價(jià)成交。 錯(cuò)誤隱蔽性:★★★★★ 錯(cuò)誤解釋?zhuān)号袛喑山徊粌H僅是價(jià)格問(wèn)題,同時(shí)也要考慮掛單的排隊(duì)先后。好比搶小米手機(jī),我在12點(diǎn)下單搶和我最后能成功搶到是兩個(gè)概念。 總結(jié)3:在涉及到逐筆數(shù)據(jù)時(shí),價(jià)格從單純的最新價(jià)變化為了bid/ask價(jià)格,同時(shí)還引入了排隊(duì)問(wèn)題,復(fù)雜度大大增加。同時(shí)在真實(shí)交易中由于報(bào)單速度問(wèn)題,使得成交與否變得更加難以確定。 【知乎用戶(hù)的回答(2票)】: 謝邀 不是有個(gè)方法叫Rolling Window么?就是滾動(dòng)時(shí)間窗,比如基于1-30得出31,然后基于2-31得出32,然后繼續(xù)滾動(dòng)滾動(dòng)…… 以前我用SAS搞回測(cè)時(shí),先刪未來(lái)數(shù)據(jù),或者說(shuō)先把能用的數(shù)據(jù)取出來(lái)放到一個(gè)臨時(shí)表中,然后只能基于這些數(shù)據(jù)得出這一時(shí)期的結(jié)論(比如即期收益率),最終再把一個(gè)個(gè)結(jié)論整合到一張統(tǒng)計(jì)表上分析。這樣從根本上杜絕了使用未來(lái)數(shù)據(jù),就是效率低。不過(guò)我不搞高頻,因此一般速度還行。 此外,有些行情軟件提供“逐k線(xiàn)模式”,這樣使用內(nèi)置回測(cè)時(shí)k線(xiàn)是一根根刷出來(lái),而非直接全出來(lái),因此更加準(zhǔn)確。不過(guò)這對(duì)程序本身的計(jì)算邏輯有一定要求,有時(shí)需要自行修改dll。 其實(shí)我已經(jīng)好幾個(gè)月沒(méi)碰過(guò)回測(cè)了,感覺(jué)那是用來(lái)測(cè)試機(jī)械交易系統(tǒng)的玩意兒,畢竟搞機(jī)械交易系統(tǒng)的人都不知道有沒(méi)有效,因此回測(cè)回測(cè),兼優(yōu)化參數(shù)。 【知乎用戶(hù)的回答(3票)】: 關(guān)鍵還是回測(cè)框架的問(wèn)題,把歷史數(shù)據(jù)當(dāng)成數(shù)據(jù)流,保證發(fā)出交易信號(hào)前用到的數(shù)據(jù)都已知 通常,初步測(cè)試會(huì)為了速度,采用簡(jiǎn)化的測(cè)試方法,這時(shí)候很容易用到未來(lái)數(shù)據(jù) 同時(shí)兼顧回測(cè)效率和質(zhì)量(主要是未來(lái)數(shù)據(jù)的避免)的框架是很麻煩的 如果沒(méi)有很好的經(jīng)驗(yàn)和團(tuán)隊(duì),還是直接使用市場(chǎng)上的軟件或者API吧 【知乎用戶(hù)的回答(1票)】: 謝邀。坦白講這個(gè)答案對(duì)不起邀請(qǐng)?!逗}斀灰追▌t》已經(jīng)講得很清楚,我就不班門(mén)弄斧了。而且回測(cè)總是難免過(guò)度擬合,回測(cè)優(yōu)異的系統(tǒng)還得經(jīng)模擬交易和后續(xù)一系列應(yīng)急預(yù)案,所以并沒(méi)有在這上面作深入的學(xué)習(xí)。 【袁梓謙的回答(1票)】: 瀉藥,其實(shí)每個(gè)問(wèn)這種問(wèn)題的人自己心理都有答案了。 一般來(lái)說(shuō)策略都是不斷完善的,所謂的完善,其實(shí)就是覺(jué)得收益率不夠,修改的過(guò)程中,其實(shí)從開(kāi)始思路就錯(cuò)了,開(kāi)始胡亂添加一些無(wú)用指標(biāo),其中一些屬于過(guò)度擬合,另一些就是完完全全的未來(lái)指標(biāo)了。 怎么有效避免肯定要看自己對(duì)你自己開(kāi)發(fā)的策略的信任程度,你總覺(jué)得收益不夠,然后在特定的行情試圖添加一些未來(lái)指標(biāo)使得回測(cè)收益很高,而實(shí)際運(yùn)行完全一塌糊涂,看似可以說(shuō)服你自己。這類(lèi)的人就很容易陷入未來(lái)指標(biāo)里。 新手往往會(huì)被未來(lái)指標(biāo)誤導(dǎo),而老手還擺脫不了未來(lái)指標(biāo)就是自己心態(tài)的問(wèn)題了。 【何子垠的回答(1票)】: 謝邀。 不過(guò)很抱歉,關(guān)于數(shù)據(jù)過(guò)度優(yōu)化的問(wèn)題,我不是專(zhuān)業(yè)的,無(wú)法給出合理的解決方法。 看過(guò)前面幾位朋友的解答,有給出具體方法的,有的給出理念上的想法。我只是想說(shuō),大道至簡(jiǎn),程序越復(fù)雜,用的指標(biāo)越多,未來(lái)信息出現(xiàn)的機(jī)會(huì)就越大,避免不了,優(yōu)化只是減少回測(cè)與實(shí)際交易的差距,但本源未變,結(jié)果也變不了太多。 指標(biāo)不是不能用,是盡量少用,因?yàn)榻^大部分指標(biāo)都是價(jià)格均線(xiàn)的變形,分類(lèi)細(xì)化,都是同源的,用多了,重復(fù)不說(shuō),還互相制約。不妨試試只用KD,MACD,VOL配合K線(xiàn)形態(tài)判斷走勢(shì),或者只靠均線(xiàn)系統(tǒng)和量能配合判斷,如果練成了,那一切就簡(jiǎn)單了。K線(xiàn)形態(tài)是最不好用計(jì)算機(jī)語(yǔ)言描述的,但確實(shí)走勢(shì)最直觀(guān)的體現(xiàn),是后市判斷的依據(jù)。 我看過(guò)很多朋友的程序,自己也找人寫(xiě)過(guò)了,成績(jī)參差不齊,從年化30%到幾倍的都有,市場(chǎng)環(huán)境出現(xiàn)變化,相應(yīng)指標(biāo)參數(shù)就要做調(diào)整,調(diào)整后又會(huì)出現(xiàn)問(wèn)題。后來(lái)我就在想,為什么要用程序,程序化能為我們帶來(lái)什么好處,把這個(gè)問(wèn)題想清楚了,問(wèn)題也就解決了。 我的理解,不用把程序化交易說(shuō)的如此高大上,只是用計(jì)算機(jī)代替人工判斷,省事省力而已。計(jì)算機(jī)程序也并不是人工智能,只是把歷史經(jīng)驗(yàn)套在現(xiàn)實(shí)走勢(shì)中,看看一樣不一樣,一樣就做,不一樣就等,想讓程序做出超出人類(lèi)經(jīng)驗(yàn)水平的成績(jī),不是不能,只是現(xiàn)在還不行,有的程序化做過(guò)一年幾倍的成績(jī),但再過(guò)幾年還能不能保證就不知道了。 舉一個(gè)例子,國(guó)際象棋人與機(jī)器對(duì)決,最后還是人贏了,可那臺(tái)機(jī)器——深藍(lán),是臺(tái)超級(jí)計(jì)算機(jī),你能保證你的算法能有深藍(lán)那樣的精密?chē)?yán)謹(jǐn)嗎? 現(xiàn)在大部分人認(rèn)為程序交易就是量化交易,而量化交易就是高頻交易,這是概念性的誤區(qū)。程序交易只是輔助交易員判斷,或者做些簡(jiǎn)單重復(fù)的模型交易,當(dāng)然收益率不會(huì)太高,但風(fēng)險(xiǎn)低且穩(wěn)定。而想用程序博得高收益,這是鉆牛角尖了,不會(huì)有太好的成績(jī)。 我現(xiàn)在的狀態(tài),幾套程序輔助,年化收益在30-50%間,但大部分資金還是人工手動(dòng)交易。 【無(wú)窮大的回答(0票)】: 謝邀。 個(gè)人經(jīng)驗(yàn),程序跑到到某一刻時(shí)確認(rèn)用到的所有原始數(shù)據(jù)都是在這之前就已知的,這樣就能確保不會(huì)用到未來(lái)信息。 另外,如果結(jié)果出奇得好就非常值得懷疑了,自己陷入思維定勢(shì)查不出就找別人double check 【slevinlee的回答(0票)】: 如果題主的問(wèn)題是如何避免回測(cè)程序不小心寫(xiě)入未來(lái)函數(shù) 這種問(wèn)題是程序化入門(mén)的初級(jí)問(wèn)題~ 主要是個(gè)人對(duì)自己寫(xiě)的程序理解不夠~ 連價(jià)格信號(hào)出現(xiàn)時(shí)間先后都不清楚的話(huà) 建議認(rèn)真學(xué)習(xí)下面這篇文章比較好~ 看下面回答還有人寫(xiě)個(gè)未來(lái)函數(shù)目的是用來(lái)自己騙自己的 服了... 畫(huà)個(gè)完美信號(hào)圖是用來(lái)擼管的么? 【梁力鍇的回答(0票)】: 1.真金白銀放進(jìn)去. 出一次問(wèn)題,一輩子記得 2.仿真,多數(shù)情況下只需要腦子里模擬一些惡(e)劣(xin)的走勢(shì)或事件,看看和模型是否一致. 3.把一些中間變量輸出來(lái),類(lèi)似debug,看是否和自己的思路一致. 【葛枰的回答(0票)】: 說(shuō)到未來(lái)數(shù)據(jù)人人都是避之不及,先拋開(kāi)問(wèn)題,你明確的知道為什么不能用未來(lái)數(shù)據(jù)么?比如在一定周期的低點(diǎn)介入,介入后在一定周期的高點(diǎn)賣(mài)出,這本身是個(gè)廢話(huà),但你能否用操作的手段達(dá)到這種目標(biāo),比如資金管理,比如做好風(fēng)控,也許達(dá)不到最高最低,但可以接近。但有些未來(lái)數(shù)據(jù)的使用卻是致命的,比如用z字轉(zhuǎn)向函數(shù)編寫(xiě)的涉及交易點(diǎn)的指標(biāo),以及過(guò)濾回填指標(biāo),這些畫(huà)畫(huà)圖形自我理解可以,但是以此為信號(hào)操作卻會(huì)出問(wèn)題。 所以我認(rèn)為,某些未來(lái)數(shù)據(jù)如果能夠用可操作的辦法接近,配以較大的滑點(diǎn),可以使用,前提是你對(duì)操作方法以及未來(lái)指標(biāo)使用后對(duì)你系統(tǒng)的風(fēng)險(xiǎn)有全面的評(píng)測(cè)。如果沒(méi)有這些基礎(chǔ),那未來(lái)數(shù)據(jù)就是致命的。 【錢(qián)盛林的回答(0票)】: 這個(gè)跟你使用的工具有很大關(guān)系,好的平臺(tái)會(huì)讓你無(wú)法使用未來(lái)數(shù)據(jù),如果沒(méi)有這個(gè)功能那就只有自己注意了,目前國(guó)內(nèi)流行的tb和mc都是可以使用未來(lái)數(shù)據(jù),有的是故意有的是無(wú)意,用tick回放行情就能識(shí)別是否用未來(lái),這個(gè)多數(shù)情況還是只能靠自己小心,多寫(xiě)點(diǎn)代碼就差不多了 【阮澤雨的回答(0票)】: 上面的已經(jīng)介紹了很多,補(bǔ)充一點(diǎn)就是盡量使用固定的價(jià)格交易,比如最高價(jià)、最低價(jià)和開(kāi)盤(pán)、收盤(pán)價(jià)等~ 【Victor的回答(0票)】: 其實(shí)你用了未來(lái)函數(shù)去測(cè)試可以,但寫(xiě)交易邏輯的時(shí)候自己就知道了吧。 【W(wǎng)ongjason的回答(0票)】: 謝邀。如果回測(cè)結(jié)果很好很牛b,基本上就是不小心用了未來(lái)函數(shù)。too good to be true |
|