虛擬股海大屠殺 優生學式尋覓最強「炒股基因」

上期發現樣本分析方法難以用常規方法處理後,源馬決定嘗試用「演進演算法」(Evolution Algorithm)方式,提煉有用的技術指標,並將指標放回backtesting工具測試,結果這個處於測試「此路是否通行」的algo,在78個技術指標出10個較通用指標,而且回測結果仍可接受。 TL;DR:收市價、10日平均線都高於50日平均線;50日線正在上升。陰陽燭:頂部十字星牛熊形態;黃昏之星(熊);吊人(熊);身懷六甲牛熊形態;陷阱牛熊形態;射擊之星(熊);短蠟燭牛熊形態。 事實上,由78個指標抽10個指標的組合,數學上用二項式系數(binomial coefficient)可知共有12,583億個組合,難以窮盡,但develop過程的測試表現比預期中大為穩定,雖然每次得出的指標有些微分別,但整體上RSI(30買/70沽)、MACD柱正負的「基因」大多都被自然淘汰,反而和移動平均線相關的幾個指標則是「優質基因」常客,大概是源於樣本中有多隻如SQQQ的爆跌股,移動平均線發揮到保護作用。 從結論開始,因為algo尋覓的是通用的策略,要在17隻股票樣本中總計獲得最好的成績,所以對比亂買亂賣的隨機群組表現時,會發現algo顧到頭顧到尾不顧中間,嘗試收窄在下跌股的虧蝕,並在強勢股中爭取較佳回報,甚至在不同測試中,表現較佳的強勢股亦不同──畢竟456兆個的組合過龐大了。不過對於想靠一招走遍天下的朋友來說,結果是殘酷的:algo顧到頭顧到尾時,中間的就顧不到,表現往往較隨機群組差。 從總結表中可以看出,優生學在處理強勢股Tesla、Apple、港視(1137)、港交所(388)、騰訊(700)裡,都跑贏隨機群組三成至近一倍。而下跌股方面則並不算十分突出,部份應歸因為優生學algo計分時包括沽空,但backtesting則不配容。 Algo中一個比較特別的地方是卓爾(2098),該股期內由經調整後的3元炒上11元,再瀉至0.5元,algo上演一幕股價跌8成(下圖灰線),但獲利達9成(綠線)的戲碼。這對algo整體策略有頗大影響,因為計分是所有樣本總和,而個股分數是買賣後結餘除以結束日收市價計算,意味algo假設11蚊沽貨,11除0.5相當22分,若以Tesla結束日收報676.88計,就要在30.76元位置買貨,才能獲得22分。 【AI股票bot使用需知】

用Tesla升跌情境trade港視 贏All in長坐多3成

上期試過用bot按指標模擬交易,今期我們將再製作程式,找尋哪些指標值得參考。不過這裡只簡單檢視SMA線、RSI和MACD,程式本身已夾帶如陰陽燭組合等較多指標,有興趣的讀者可自行下載修改作比較。 TL;DR:程式的分析的方法仍是非常初步,採用的指標亦較少,但概括講,不同股票顯然有不同特質,同一種買賣操作模式,在A、B股票上效果可能很好,但放到C股票就普普通通;同時同一情景,在A股票是買入訊號,在B股票亦可以是賣出訊號,似乎難一概而論。 今期會用另一個analyzer.py程式,統計SMA線、RSI和MACD的各種組合出現後,股票隨後升跌的次數,篩選出一些組合再放到python bot裡模擬交易backtesting,檢視成績。結果頗出人意表:同一套操作模式在不同樣本中表現可以非常飄忽。 使用analyzer分析Tesla升跌勢情境,會得到5組以數字代表的升勢情境,和3組跌勢情境,再放到回測工具測試,不意外發現「Tesla模式」在處理部份強勢股時表現不俗,在Tesla、港交所(388)都能相當追貼股票本身升幅,而港視(1137)的backtesting更跑贏股價本身,回報9.06倍,較同期港視升6.81倍多3成。 而如果用港視的升跌勢情境作測試,結果是bot在有「貓紙」下,回報擴大至10.77倍,而Tesla、港交所的成績亦略略高於股票本身表現。不過無論是「Tesla貓紙」抑或「港視貓紙」,處理下跌股時,表現就相當遜色。 用迪士尼的升跌情境backtesting,詭異地First Solar的結果非常良好,First Solar期內升60%,backtesting回報有142%,但其他樣本中則不算突出。 不過隨後測試並不理想,analyzer曾經有版本是用全部樣本生成升跌勢情境,究其原因,是同樣的情景,可在Tesla、Apple、嘉年華郵輪等是升勢情景,但到了SQQQ和數碼通等卻是跌勢情況;而若再加入更多指標精細化情境,會導致情境數量幾何級增加,曾試過1200交易日分割出900個情境,所以除非大幅增加樣本數目,否則分析會缺乏統計學意義,這個測試只好暫停。 最後解釋一下情境編碼的生成,程式檢查技術指標時會生成一系列如 [是, 是, 否, 是, 否] 的序列並變成11010形式的編號(程式檢查9個指標,這裡用5個說明),然後轉成方便人類閱讀的10進制。如Tesla其中一個升勢編碼355轉成二進制就是101100011,對應9個問題便是「現價高過5日線?是」、「5日線高過10日線?否」、「10日線高過50日線?是」………如果你用anaconda執行程式,在console裡打「flag(355)」就能查閱詳細資料。 【AI股票bot使用需知】

Python炒股bot實測近20股票 一個指標較亂買賺多倍

傳統股票分析,一般分基本面及技術面,基本面專注企業營運狀態,最知名當然屬股神畢菲特畢老,揀選優質公司買入股票,然後長期持有。技術面則主要為「睇圖」,分析股票走勢,發掘買入賣出訊號。之前我們用到具人工智能學習功能的AI bot,今回我們改用另一個不具機器學習的bot作模擬交易backtesting,先非常粗略檢視技術分析是否有參考意義。 作為武林兩大宗之中的技術分析,自然發展出林林總總的招式,如RSI、各種平均線、MACD等等方式,泡製出各項買入賣出點,然而各種指標是否真的有作用?Backtesting可視為檢視策略的好起步。 TL;DR:因為只是粗略檢視,未檢視太多指標,但相較「隨機群組」任意買賣,若將技術分析視為買賣紀律,撇開爆升股,一般而言可以較亂買亂賣表現更好。由於目前未打算將指標設計得非常精密,結果是價值投資法仍較適合質素好的股票,一注all in坐5年回報較出出入入好。程式依舊可以於github下載。 首先python bot和上回一樣,以17隻股票約5年數據作樣本,除比較股價本身表現及模擬根據指定技術分析作買賣的結果外,亦加入一項「散戶群組」作參照群組,bot的買賣決定完全隨機,重複100次並取平均數;若根據技術指標作買賣的backtesting結果,無法跑贏亂買亂賣的話,那看指標還不如擲骰仔。今次使用的機械人不具學習功能,只會根據既定指標模擬交易。 笑死畢菲特的RSI:不要買騰訊、不要買港視、不要買Tesla、不要買Apple 第一個測試的目標是RSI,取其簡單。一般而言RSI太低,會被視為超賣,將迎來反彈,vice versa。若我們使用RSI低於20時買入,RSI高於80時賣出的策略,第一項結果極出人意表:騰訊(700)、港視(1137)、Tesla和畢菲特重倉的Apple均出現5年零回報的結果,詳細檢視數據,發現: 過於強勢的股票,RSI從沒低過20,5年不超賣,於是bot呆等5年,仍在等待入場時機。 以RSI 20和80作指標backtesting港交所(388)時出現一個有趣狀況,Bot在大部份時間都能跑贏散戶(平均值),但在去年年尾急升的一段,由於Bot過早清倉,反而告別最大的升浪,反而被散戶群組後來居上。 MACD黃金交叉有戰績 惟仍會中大伏 再測試一個簡單技術指標:MACD黃金交叉。整體而言效果不俗,有約一半樣本除了跑贏隨機買賣的對照群組,當中MUR、SU、港交所表現更為亮眼,不少亦跑贏本身股價表現,但對暴升股如Tesla、Apple、港視(1137)、騰訊(700)來說,則仍追不上股價表現,其中騰訊的測試表現更較亂買亂賣差,若本身擅於揀股,與其跟指標出出入入,或許一注到尾更為實際。此外單單靠MACD黃金交叉作決定的話,同樣會遇上SQQQ 5年暴跌99%的災難:bot在期內大蝕95%。 目前我們檢視到此為此,因為這bot只負責模擬交易,下期我們會用其他程式,嘗試尋找具效益的技術指標。 【AI股票bot使用需知】

股海忌死牛一面頸 AI都學識要轉策略

上期簡介過Python AI bot熱量圖的概括解讀,這期主要針對美股第一太陽能(fslr)作逾2,000回合訓練,並解釋AI學到的策略,順便介紹一些Python AI bot的運作模式。選擇fslr的原因是樣本股票500回合訓練(包括bot開發及debug過程中多輪訓練)中,表現較為飄忽的,可以針對性了解。 首先複習熱量圖的讀法。熱量圖垂直的 Y 軸代表電腦作決定時的持倉水平,每格一成,第一格代表10%持倉以下,第二格代表10%-20%持倉,橫向的 X 軸代表改變去到哪水平持倉,同樣是每格一成。當XY相同,譬如X1Y1、X2Y2、X3Y3……代表持倉不變(的獎勵,以顏色代表),而這些方格左面代表沽貨到該水平(的獎勵,以顏色代表),右面則是增持到該水平(的獎勵,以顏色代表)。 這機制是AI強化學習(Reinforcement Learning)中的「Q網絡」模式,透過一個Q表格(Q-table)讓AI學習「處境(Y)—行動(X)」間的記憶和選擇。舉一個例子模擬WFH初期行山銀行IG自拍就較易明白Q表格的解讀法: 靜靜雞 selfie上IG WFH行山 +100 -100 WFH工作 0 +100 垂直Y軸是處境,橫向X軸是行動,格裏數字是獎勵。這個Q表格意思就是WFH去了行山的處境下,還是靜靜雞着數了不為人知好;selfie上IG,弄個滿城風雨,反而有懲罰。不過相反WFH工作的處境下,selfie上IG會給人努力工作的感覺,但靜靜雞做只是份內事,就無功也無過。 現在回頭解讀fslr的熱量圖,圖中獎勵最多是X2Y2,表示持倉20%至30%的獎勵值最多,也是最舒服的倉位。而在Y6那一行,即60%至70%持倉下,略為往左減持(行動)至X4,即40%-50%獎勵會較多,所以bot會揀選減貨。同理,你會看到Y5那一行,X6獎勵較多,反映bot在50%至60%持倉水平時,會輕微加倉。 當再考慮股價變化時,就能更了解bot的行動。因為持倉水平就是簡單公式「(股價 X 持股)/((股價 X 持股)+ 現金)」,而X2Y2是最優解,當bot持倉在20%到30%時,不會有動作,只有當股價波動,令持倉脫離該區間,電腦就會選擇其他行動。譬如股價下跌,令持倉處Y1時,bot記憶中最好的選擇是X1,即死守不動,或輕微撈底至X3水平;若股價上升,持倉升至Y3水平,bot則會追貨至X5水平。 最後可以看看bot在逾2000回合訓練中的「心路歷程變化」(https://www.facebook.com/algobug/posts/140752701432897),對比訓練結果圖可以看到,bot早段維持高持倉策略紅點主要於X7X7水平,其後約在1000回合時改變策略,導致訓練結果圖的藍線開始擴大波幅,並在1500回合後表現開始回穩,藍線已較少位於平均線橙線以下;灰線是回合結束時bot的持貨市值。 【AI股票bot使用需知】

一注到尾?逢高減?小注怡情?人工智能bot幫你搵策略

股海浮沉,揀股指標幾百個,但與其一直睇RSI、SMA、MACD、陰陽燭穿頭破腳……睇到頭都暈,然後實際落場損手爛腳,乖乖做被割的韭菜,何不先用現今進步的電腦,先分析股票性質?源馬就嘗試製作具AI強化學習機制的Python AI bot,再用多隻樣本股票,讓AI bot學習如何控制倉位,最大化回報。落場前跑一跑分,或可作落注前的參考。 TL;DR:Python AI bot在完全不預測股價走勢下,訓練成果尚算理想,可參考文尾列表,作為第一步的半完成品,算可堪一用。不過時間限制,每個樣本500回合的訓練暫見不足,估算2000回合會有較準確結果。bot完整source code已上載GitHub,懂programming的朋友可以自行修改訓練。 在總結結果之前,先簡單介紹AI bot運作,bot完全不預測股價走勢,追揸沽決定完全隨機,AI則負責學習不同倉位應作甚麼行動。重複訓練後,再以熱量圖打印出AI Bot的記憶。因時間關係,目前只訓練500回合,但熱量圖pattern的形式已見雛型。 靠顏色辨認好壞股 熱量圖中越紅的方格代表AI bot獲得越多獎勵(贏錢)嘅倉位,越藍反映獎勵最少的倉位,爆升股Apple、Tesla、港交所(388)、騰訊(700)等的熱量圖,右下方都偏向紅色,代表電腦記憶中買貨是較佳選擇。熱量圖垂直的 Y 軸代表電腦作決定時的持倉水平,每格一成,第一格代表10%持倉以下,第二格代表10%至20%持倉。橫向的 X 軸代表改變去到哪水平持倉,同樣是每格一成。當XY相同。譬如X1Y1、X2Y2、X3Y3……代表持倉不變,而這些方格左面代表沽貨到該水平(的獎勵,以顏色代表),右面則是增持到該水平(的獎勵,以顏色代表)。 長坐股代表:港交所 港交所熱量圖是藍紅最為分明的一張,代表bot無論在甚麼持倉水平,沽貨(左側)都會獲得不快經驗。程式的獎勵機制中,若沽貨後股價上升,bot會獲得負獎勵,也即懲罰,於是構成左上方一片藍。 炒騰訊要知進退 相比港交所,騰訊熱量圖左上方較港交所偏向紅,代表電腦的經驗是沽貨也有一定獎勵,雖然較買貨(右側)少。騰訊熱量圖較特別是X7Y7,在70%至80%持倉不動作會獲得很多懲罰,反而選擇較燈的位置較好,如向右加貨至X8或X9兩格(即80%至100%持倉水平),或沽貨至X5(50%-60%)、X6(60%-70%),都是愉快的體驗。至於實際加倉抑或減,似乎需要更多的訓練回合讓bot學習。 逢高沽:香港電訊 穩健派的公用股香港電訊(6823)意外地和爆升股帶給bot近似的記憶,訓練期內其股價表現並特別不出眾,約5年累計升28%,AI bot 500次培訓平均錄賺27.62%回報,表現相約。根據熱量圖,X8和X9(即最高兩行,代表80%至100%持倉),保持持倉不變(即X8Y8、X9Y9兩格)都不是好選擇,相反左邊更偏向紅色,即電腦學到的經驗,當股價上升,令持倉佔比增高至該水平後,沽貨是會獲得較多獎勵。 附帶一提,這是香港電訊500回合訓練結果,藍線代每回合總資產結餘。AI bot在約莫30至40回合時,已發展出大致的策略,藍線非常穩定,但在450回合左右,它開始感到舊策略回報不及理想,就嘗試修正策略,導致表現大幅波動。從代表回合結束時持貨總價值的灰線,看到AI bot開始嘗試減少持貨,若有更多回合,相信之後會再趨平穩。 心猿意馬的嘉年華郵輪 …