Lumaktaw papunta sa nilalaman
Lahat ng estratehiya

Mga Estratehiya

Buwanang pagpili ng stock gamit ang neural network na pinapatakbo ng mga katangian ng liquidity ng China A-share

Resulta: Inabandona

CneqFrozenLiquidityNeuralBasket

Buod ng Resulta

Sinubukan ng CneqFrozenLiquidityNeuralBasket ang pinaikli at long-only na bersiyon ng ideya mula sa isang papel: niraranggo ng neural network ang mga stock gamit ang mga feature ng liquidity at volatility upang hulaan ang buwanang kita ng mga ito; dito, inilapat ito sa 12 malaking A-share stock at pinanatiling hindi nagbabago ang modelo bago ang evaluation. Sa buong kasaysayan mula 2021 hanggang 2026, nalugi ito ng 17.6% (Sharpe -0.46, 105 trade, karaniwang trade na -0.70%), samantalang kumita ng 16.7% ang equal-weight na basket at walang natukoy na impormasyong taglay ang mga forecast nito. Pagkaraan ng tatlong pag-ulit, iniwan ito ng analyst sa pagsusuri ng backtest dahil negatibo ang expectancy, kaya hindi ito umabot sa optimization. Itinala ng analyst na ang tinatanggihan lamang nito ay ang pinaikling bersiyon sa basket ng mga nakaligtas na stock, hindi ang pinagmulang papel, at binanggit para sa follow-up ang hindi pa napatunayang isyu ng serong komisyon sa accounting.

Hypothesis

Kunin ang partikular na mekanismo ng artikulo: gamitin ang makasaysayang mga katangian ng liquidity at volatility upang hulaan ang kita ng bawat stock sa humigit-kumulang susunod na isang buwan, at ayusin ang portfolio batay sa ranggo ng mga hula. Panatilihin ang merkado ng mga stock sa China at gumamit ng pang-araw-araw na CNEQ. Dahil long-only na cash account ang CNEQ, tahasang iangkop ang long-short na portfolio ng papel bilang long-only na portfolio ng mga nangungunang stock ayon sa hula, at panatilihin sa……Magpakita ng higit paMagpakita ng mas kaunti

Kunin ang partikular na mekanismo ng artikulo: gamitin ang makasaysayang mga katangian ng liquidity at volatility upang hulaan ang kita ng bawat stock sa humigit-kumulang susunod na isang buwan, at ayusin ang portfolio batay sa ranggo ng mga hula. Panatilihin ang merkado ng mga stock sa China at gumamit ng pang-araw-araw na CNEQ. Dahil long-only na cash account ang CNEQ, tahasang iangkop ang long-short na portfolio ng papel bilang long-only na portfolio ng mga nangungunang stock ayon sa hula, at panatilihin sa cash ang natitirang pondo. Walang kumpletong kahulugan ng 108 feature, detalye ng pagsasanay ng modelo, o makasaysayang stock pool sa buod ng papel; kaya pinaikling eksperimento ito na hango sa source, hindi reproduksiyon ng papel, at hindi nito inaangkin ang mga pahayag nito tungkol sa kita. Ifi-fit ang modelo sa makasaysayang training segment bago magsimula ang bawat evaluation window at pananatilihing hindi nagbabago sa evaluation segment; bubuo ng signal mula sa nakumpletong daily bar at magsusumite ng market order sa pagsasara ng araw ng signal, nang hindi hinihingi ang fill sa bukas ng susunod na araw ng trading.

Walang laman ang corpus_concentration, kaya hindi maaaring sabihing hindi pa nasubukan ang mga stock na ito. 0.2% lamang ng eksperimento ang CNEQ; nakatutulong ang nakapirming portfolio ng maraming stock na mabawasan ang konsentrasyon sa iisang instrument. Bagaman lumampas na sa limitasyon ang long-only na direksiyon, dapat igalang ng adaptasyong ito ang mga paghihigpit ng cash account sa China A-share; huwag basta lumipat sa mga crypto derivative o magdagdag ng short na hindi maipapatupad para lamang maabot ang quota. Ang nakapirming labindalawang stock ay tumutukoy lamang sa paunang itinakdang basket ng mga nakaligtas na stock na ito, hindi sa mga bumubuo sa makasaysayang沪深300, at hindi nito inaalis ang survivor bias.

negative_expectancy: Tanggihan ang nakapirming operationalization na ito ng liquidity/volatility neural ranking sa CNEQ basket ng 12 stock na 105 saradong posisyon sa loob ng mahigit limang taon: karaniwang kita kada trade na -0.699% kumpara sa minimum na +0.15% sa pagsusuri, PF 0.652 at kabuuang kita na -17.602%. Lumilitaw na ang mga lugi bago pa isama ang mga komisyon. Walang tiyak na depekto sa code o awtorisadong saklaw ng pag-tune na sumusuporta sa pag-ulit. Tinatanggihan nito ang pinaikling eksperimento sa basket ng mga nakaligtas na stock, hindi ang pinagmulang papel o ang paghula sa stock batay sa liquidity sa pangkalahatan. Hiwalay dito, itugma ang paglalapat ng komisyon ng CNEQ; hindi independiyenteng napatunayan dito ang ugat ng problema.

Implementasyon

Pinipili ng nakapirming liquidity/volatility neural model ang hanggang tatlong nangungunang stock mula sa labindalawang CNEQ stock kada 21 araw sa kalendaryo. Nililimitahan sa 60% ang gross exposure at sa 20% ang bawat posisyon; iginagalang ng stop na batay sa pagsasara ng 8% ang T+1 at mga guard sa execution. Gumagamit ang mga desisyon sa merkado ng mga naisarang daily bar at pinupunan ang order sa bukas ng susunod na session. Sinusubukang muli ang mga nakabinbing aksiyon sa rotation kapag napalaya ng aktuwal na fill ang cash.

Pinananatili ang dating naka-freeze na modelo at mga tuntuning itinakda ng pananaliksik. Itinatama ang paghahambing ng stop sa percentage point, iniimbak bilang scalar ang mga nakabinbing pangalan para sa entry/exit, inilalaan ang mga binibiling order laban sa cash at gross exposure, pinananatili ang rank at threshold sa araw ng pagpili, at pinapalitan ang snapshot ng mga holiday ng mga session.is_trading_day Hindi awtomatikong muling binibili ang mga stock matapos mag-trigger ang stop bago ang susunod na rotation. Natukoy ang pagkakaiba sa bayarin: ibinabalik ng src/backtesting/runner.py _apply_fees ang lahat ng Equity instrument nang hindi nagbabago bago ilapat ang CNEQ bayaring 0.0005 bawat side. Wala sa saklaw na maaaring baguhin ang runner; kailangang ayusin ang pag-post ng bayarin sa platform bago ituring na netong kakayahang kumita ang 0.584%. Eksperimentong survivor-basket ito na hango sa pinagmulan, hindi replikasyon ng papel.

Mga Resulta ng Beripikasyon

Bumuo ng mga feature at stop bawat stock mula sa mga leg na magkakatugma. Alisin lamang sa ranking at execution ang mga sinuspindeng pangalan, sa halip na laktawan ang buong bar.

Maagang nagbabalik ang calculate_signal kapag walang bar na may timestamp na katumbas ng ts_init ng pangunahing bar ang alinman sa 11 karagdagang leg. Isang sinuspindeng stock lang (maaaring tumagal nang ilang linggo ang suspensyon ng A-share), o isang nawawalang 600519 bar, ay magpapatigil sa buong basket sa mga araw na iyon: walang pag-update ng feature, pagsusuri ng stop, o rotation. Malalaktawan ang rotation session na pasok sa gayong puwang hanggang sa susunod na index % 21 == 0, mga isang buwan pagkaraan. Hindi ito look-ahead (tamang hinaharangan ng equality guard ang luma o panghinaharap na karagdagang bar), pero maaaring hindi masuri ang mga stop habang may suspensyon.

Banggitin sa paglalarawan na hindi maaaring i-trade ang 600519 kapag mas mababa sa antas na iyon ang equity, o mag-log kapag ni-round pababa sa serong lot ang napiling pangalan.

Gumagamit ang sizing ng lot na 100 share at alokasyong 20% ng equity bawat pangalan. Sa presyong humigit-kumulang CNY 1,500-2,000 bawat share, nagkakahalaga ng CNY 150-200k ang isang lot na 600519. Maliban kung lampas sa humigit-kumulang CNY 750k-1M ang equity, niro-round pababa ng pangunahing instrument ang dami sa 0 lot at hindi ito kailanman mabibili; tahimik nitong ginagawang 11 ang uniberso ng 12 pangalan. Dito, ginagaya ng laki ng lot ang tunay na tuntunin ng A-share at hindi ito bug.

Gamitin ang helper ng petsa ng session upang hindi umasa sa offset na UTC ang tuntunin ng T+1.

Inihahambing ng _can_sell ang mga numero ng araw ng UTC upang ipatupad ang T+1. Gumagana ito dahil pumapatak sa parehong petsa ng UTC gaya ng lokal na petsa ng trading ang pagsasara sa Shanghai na 15:00 (07:00 UTC) at ang fill sa bukas ng susunod na araw (01:30 UTC). Nakasalalay ito sa pagkakataong iyon, hindi sa sessions.session_date_of.

Sandbox total_commission = 0 kahit nakatakda ang CNEQ sa 0.05% bawat panig. Iniulat ng developer na hindi binabago ng runner._apply_fees ang mga Equity instrument, at ganoon din ang nakita sa pagsusuri ng ShanghaiMaCompressionKdjBasket. Kaya hindi isinama ng 1.28% avg_trade_return_pct ang humigit-kumulang 0.10% round-trip na komisyon, at hindi talaga minomodelo ang stamp duty. Hindi ito dapat gaanong makaapekto sa 21-session na paghawak, pero kailangang ayusin ang platform fee bago ituring na totoo ang mga netong numero. Maliit din ang sample: humigit-kumulang 67 saradong leg at Sharpe CI na [-0.63, 1.55]. Karamihan ng kita ay mula sa stressed-vol tercile (+15.1%), samantalang negatibo ang calm tercile. Kumikilos ang nakapirming basket ng 12 natirang pangalan (8 sa 12 ay mga bangko o insurer) bilang taya sa sektor, at sinasabi mismo ito ng hypothesis.

Pagsusuri ng Backtest

Sharpe
-0.46
Kabuuang Return
-17.60%
Max Drawdown
23.87%
Kabuuang Trade
105
Win Rate
45.7%
Profit Factor
0.65

Sinusuportahan ng mga rekord ng trade ang execution ng long-only na basket: 105 saradong posisyon, lot na 100 share, walang round trip sa iisang araw, at halos buwanang rotation. Nagfi-fit ang code bago ang evaluation at pinananatiling hindi nagbabago ang modelo.

Ipinakikita ng mga resulta mula Mayo 2021 hanggang Oktubre 2026 ang negatibong expectancy: kita na -17.602%, Sharpe na -0.464, PF 0.652, at karaniwang kita kada trade na -0.699% kumpara sa minimum na +0.15% sa pagsusuri na CNEQ.

Kumita ng +16.724% ang equal-weight benchmark, na may humigit-kumulang 32.537% drawdown sa sinample na kurba nito. 23.865% ang drawdown ng strategy; -0.463 ang information ratio.

Nakumpirma ang alalahanin ng QA tungkol sa serong komisyon. Mas magpapalala sa mga dati nang lugi ang mga hindi isinamang komisyon; hindi nagpatuloy sa buong kasaysayan ang positibong ekonomiks ng smoke test.

Nakapirmi ang mga parameter ng kontrata. Walang naipakitang depekto sa implementasyon o suportadong landas ng pag-tune na nagbibigay-katwiran sa pag-ulit. Walang positibong predictive na suporta ang forecast IC 0.0084 (t=0.06).

Kasaysayan ng Iterasyon

Bumagsak ang beripikasyon (Layer 1 — static analysis): - Ipinagbabawal na import: src.data.market_calendar — ang mga strategy ay maaari lamang mag-import ng mga batayang klase at helper ng framework (src.strategies.base_template, src.strategies.rolling_options_template, src.strategies.polymarket_series_template, src.strategies.helpers); labas sa sandbox ang mga collector, database, backtest engine at registry. (linya 10)

Nabigo ang beripikasyon (Layer 4 — pagsusuri ng QA) [class=code_defect]: - [edge_concern] Zero ang Sandbox total_commission kahit naka-configure ang CNEQ sa 0.05% bawat side. Itugma ang pag-post ng bayarin bago bigyang-kahulugan ang iniulat na 0.584% average netong kita kada trade; hindi batayan ng hatol na ito ang kakayahang kumita sa sandbox. - [critical] Ibinabalik ng get_position_pnl_pct() ang mga percentage point (base_template.py:1525), pero fraction ang stop_loss_fraction=0.08. Nagti-trigger ang exit sa……Magpakita ng higit paMagpakita ng mas kaunti

Nabigo ang beripikasyon (Layer 4 — pagsusuri ng QA) [class=code_defect]: - [edge_concern] Zero ang Sandbox total_commission kahit naka-configure ang CNEQ sa 0.05% bawat side. Itugma ang pag-post ng bayarin bago bigyang-kahulugan ang iniulat na 0.584% average netong kita kada trade; hindi batayan ng hatol na ito ang kakayahang kumita sa sandbox. - [critical] Ibinabalik ng get_position_pnl_pct() ang mga percentage point (base_template.py:1525), pero fraction ang stop_loss_fraction=0.08. Nagti-trigger ang exit sa pagkaluging 0.08%, sa halip na sa itinakdang pagkaluging 8%; halimbawa, nag-e-exit ang -1.0 <= -0.08 sa pagkaluging 1%. (line 267) — ayusin: Ihambing ang resulta ng helper sa -100.0 * stop_loss_fraction, o hatiin ang resulta nito sa 100 bago ihambing sa fraction. Panatilihin ang itinakdang halagang 0.08. - [critical] Hindi nakukumpleto ang mga rotation exit at kapalit na entry matapos ang mga asynchronous fill. Kumokonsumo ng gross exposure ang mga kasalukuyang hawak, kasama ang mga nakabinbing benta, sa line 278, kaya halos wala nang kapasidad para sa entry ang basket na halos -60% ang investment kapag umiikot ito sa tatlong bagong nangungunang stock. Matapos mapunan ang mga benta sa bukas ng susunod na session, pinipigilan ng line 274 ang pagbili sa mga napiling kapalit hanggang sa susunod na rotation na 21 session. Gayundin, hindi na kandidato sa exit ang hawak na inalis sa pagpili kapag hindi nagawa ang bentang hinadlangan ng T+1 o ng execution guard at hindi na aktibo ang rotation (line 268), maliban kung mag-trigger ang stop nito. Binabago nito ang buwanang portfolio ng mga napiling stock tungo sa naantalang o lipas nang mga hawak. (line 274) — ayusin: Panatilihin ang basket ng target na pinili ayon sa kalendaryo at ang mga nakabinbing aksiyon ng rotation. Subukang muli ang mga exit na inalis sa pagpili at pondohan ang mga napiling kapalit sa mga susunod na kwalipikadong bar matapos aktuwal na mapunan ang mga order at mailabas ang cash at exposure. Panatilihin ang mga petsa ng pagpili ayon sa kalendaryo, pigilan ang mga dobleng order, at panatilihin ang umiiral na mga limitasyon sa cash/gross. - [warning] Inuulit ng kinopyang snapshot ng mga holiday ang kalendaryo ng platform at wala itong mga pagsasara pagkatapos ng Hunyo 2026. Maluluma ang hiwalay na session index na ito at maililihis ang grid ng rotation na 21 session kapag may anumang susunod na update sa kalendaryong XSHG ng platform. (line 46) — ayusin: Ilista ang mga session gamit ang aprubadong helper na src.strategies.helpers.sessions.is_trading_day, sa halip na mag-import ng src.data o magpanatili ng hiwalay na snapshot ng mga pagsasara.

Ihambing ang resulta ng helper sa -100.0 * stop_loss_fraction, o hatiin ang resulta nito sa 100 bago ihambing sa fraction. Panatilihin ang nakakontratang value na 0.08.

Nagbabalik ang get_position_pnl_pct() ng percentage point (base_template.py:1525), pero fraction ang stop_loss_fraction=0.08. Nagti-trigger ng exit ang luging 0.08% sa halip na nakakontratang luging 8%; halimbawa, nag-e-exit ang -1.0 <= -0.08 sa luging 1%.

Panatilihin ang target basket na pinili ayon sa kalendaryo at ang mga nakabinbing aksiyon sa rotation. Subukang muli ang mga inalis na exit at pondohan ang mga napiling kapalit sa mga susunod na karapat-dapat na bar matapos mapalaya ng aktuwal na fill ang cash at exposure. Panatilihin ang mga petsa ng pagpili sa kalendaryo, pigilan ang mga dobleng order, at panatilihin ang umiiral na limitasyon sa cash/gross.

Hindi nakukumpleto ang mga exit sa rotation at mga kapalit na entry pagkatapos ng asynchronous fill. Kumokonsumo ng gross ang mga kasalukuyang hawak, kasama ang mga nakabinbing sell, sa linya 278; kaya halos walang kapasidad sa entry ang basket na halos -60% na ang na-invest kapag umiikot ito papunta sa tatlong bagong nangungunang stock. Pagkapuno ng mga sell sa bukas ng susunod na session, pinipigilan ng linya 274 ang pagbili sa mga napiling kapalit hanggang sa susunod na 21-session na rotation. Gayundin, hindi na kandidato sa exit ang inalis sa pagpili na hawak na ang sell ay hinaharangan ng T+1 o execution guard kapag naging false ang rotation (linya 268), maliban kung ma-trigger ang stop nito. Binabago nito ang buwanang portfolio ng mga napiling stock at nagiging naantalang o lipas na mga hawak.

Ilista ang mga session gamit ang pinahihintulutang helper na src.strategies.helpers.sessions.is_trading_day, sa halip na mag-import ng src.data o magpanatili ng hiwalay na snapshot ng mga pagsasara.

Inuulit ng kinopyang snapshot ng holiday ang kalendaryo ng platform at wala itong mga pagsasara pagkalipas ng Hunyo 2026. Anumang susunod na update sa kalendaryo ng platform na XSHG ay magiging sanhi upang maluma ang hiwalay na session index na ito at lumihis ang grid ng rotation nito na 21 session.

Buod ng Resulta

Walang nasusukat na predictive na impormasyon ang mga liquidity/volatility feature sa maliit at nakapirming basket ng mga nakaligtas na large-cap stock (IC humigit-kumulang 0), at hindi tumagal sa buong kasaysayan ang positibong ekonomiks ng smoke test. Kailangan ding itugma ang paglalapat ng komisyon ng CNEQ, na nagpakita ng serong komisyon dito, bago mapagkatiwalaan ang mga resulta.

Pagkaraan ng 3 pag-ulit, 'abandunahin' ang hatol ng analyst sa pagsusuri ng backtest dahil negatibo ang expectancy: karaniwang kita kada trade na -0.699% kumpara sa minimum na +0.15% at profit factor na 0.652. Walang depekto sa code o awtorisadong saklaw ng pag-tune na sumuporta sa karagdagang pag-ulit. Hindi kailanman naabot ang optimization at mga sumunod na yugto.

Pinaikling long-only na eksperimento ito na hango sa papel: isang nakapirming pang-araw-araw na basket ng 12 stock na CNEQ (China A-share). Minsanang fi-fit ang maliit na neural network sa makasaysayang mga feature ng liquidity/volatility (volatility, downside deviation, range, traded value, Amihud illiquidity, pagkalat ng volume, bahagi ng serong volume) at pananatilihing hindi nagbabago habang sinusuri upang hulaan ang kita sa humigit-kumulang 21 session; hahawakan bawat buwan ang mga stock na nangunguna sa ranggo, at pananatilihin sa cash ang natitirang puhunan.

Mula Mayo 2021 hanggang Oktubre 2026, nalugi ng 17.60% ang backtest (Sharpe -0.46, profit factor 0.65, win rate 45.7%) sa 105 saradong long position, na may karaniwang kita kada trade na -0.699% at pinakamataas na drawdown na 23.87%. Kumita ng +16.72% ang equal-weight basket benchmark sa parehong panahon, at 0.0084 ang forecast IC (t=0.06), na hindi maihihiwalay sa ingay.

Pagsusuri

Mahuhulaan ba ang kita ng mga stock sa China? Mga pamamaraan ng machine learning (SSRN-3971419) - BigQuant quantitative trading

Ang Stratmill ay isang tool para sa pananaliksik at paper trading, hindi payo sa pananalapi o isang broker. Ang mga resulta ng backtest at paper trading ay hypothetical. May panganib ng pagkalugi ang pangangalakal.