Մեր ավտոմատային առեւտրային համակարգը հավանելի է, որ հավանելի է: Մատոմատիկը ստուգել է, backtests տեսել է մեծ, եւ առաջին անգամ, դա ստացել է գումար, բայց ժամանակի ընթացքում, դա վառեցում էր: Մատոմատների վախենները, որոնք կասկածվել են ավելի արագ, քան կասկածված հաղթանակները կարող են փոխարինել: Դա ոչ մի բխը է կոդը: Դա հիմնական սխալ է, թե ինչ է կարեւոր է արտադրության. Հիմնական արժեքային ծախսերը Շատ առեւտրային դասընթացներ, գիտական գրքեր, եւ օնլայն դասընթացներ սովորում են ձեզ, որ maksimizing կարիքային արժեքը. E[profit] = Σ(probability_i × outcome_i) Եթե այս թվը հավասար է, դուք պետք է ստանալ առեւտրի. Եթե դուք կարող եք անել այս թվը ավելի մեծ, դուք պետք է optimize այն համար. Բացի արտադրանքի, այս optimization պլանշանակը ունի վտանգավոր սխալը: . it doesn't account for the path you take to reach that expected value Թող եմ ցույց տալ, թե ինչ ես նշանակում եմ մեր համակարգի ճշգրիտ սենյակում: Կառուցման համակարգը Մեր ռեժիմը նախագծված էր ծախսերի ծախսերի ծախսերի փնտրելու համար ջերմային շուկաններում: Մոդելը պետք է: Արդյոք, դուք կարող եք վերլուծել հնարավոր գինը ուղեցույցներ յուրաքանչյուր առեւտրային window. Optimize position sizing օգտագործելով quadratic programming- ը Գործընթացներ կատարելու համար ծախսել Spread Opportunities Հիմնական հոդված՝ Հիմնական հոդված՝ Հիմնական հոդված՝ Հիմնական հոդված՝ Հիմնական հոդված՝ Հիմնական հոդված՝ Հիմնական հոդված: 1–3 օր: Կառուցվել է մեծ քանակը, ստացել է $ 15,000 օր 4-12: Երկու վտանգները ամեն օր, ընդհանուր -$8,000 13–14 օր: Մեկ այլ խոշորություն, որը $ 12,000- ը ստացել է 15–28 օր: Հիմնական քաղցրություն, ընդհանուր - $ 11,000 Մեր optimizer- ը մշակել է կառուցվածքի բաղադրիչը: Դա համակարգչականորեն ստանում է կայքներ, որոնք հաղթել են մեծ ժամանակին, բայց վախենում են փոքր բաղադրիչները հաճախ: Հիմնական արժեքը նշանակում է, որ դա լավ էր: մեծ բաղադրիչները վերջապես կասկածեն: Բայց «հարկե» պահանջում է անսահմանափակ բաղադրիչը եւ անսահմանափակ ժամանակային հորիզոնը: Մենք ոչինչ չենք ունենք. Տեսնել տարբերությունը: A Simulation Ինչպե՞ս են այդ ծախսերի վերահսկողությունը կարեւոր, խնդրում ենք համեմատել երկու պլաստակներ, որոնք առեւտրում են նույն շուկայում մեկ տարվա ընթացքում: : Պահպանական կայքի չափազանցում, որը հիմնված է հուսալի արժեքով, օգտագործելով 150% լարման, երբ հնարավորությունները լավ են տեսնում: Strategy A (EV Maximization) : Հիմնական շուկայական սխալներ, բայց կախված Kelly- ի չափը (40%) եւ CVaR- ի վրա հիմնված position reduction during high tail risk periods: Strategy B (Risk-Controlled) Ապրանքները խոսում են մի կարեւոր պատմություն: Տեսեք փաթեթը ներքեւում - ամենամեծ EV-maximization ճանապարհները չեն վախենում. Նրանք պարզապես... ոչ մի բաղադրիչ. Դուք կարող եք տեսնել sawtooth պտուտակը: մի քանի անգամ փակում է, հետո արագ հորեցման. Սա է բաղադրիչ բաղադրիչը, որը համոզված է, որ համոզված արժեքը վախենում է: Նշեք, թե ինչպե՞ս մի քանի ճանապարհները հասանելի են $500k- ում: Նրանք վերահսկողները կտրում են մինչեւ $146k- ում: Բայց Հիմնական արժեքը $136k- ը է, եւ 100-ից 29 ճանապարհները ավարտվում են սկսած Capital- ում: Հիմնական In a backtest, you might have gotten lucky and seen one of those winner paths. In production, you get one random draw. Հիմնական հարցը, թե ինչ է այն, թե ինչ է այն, թե ինչ է այն, թե ինչ է այն, թե ինչ է այն, թե ինչ է այն, թե ինչ է այն, թե ինչ է այն, թե ինչ է այն, թե ինչ է այն, թե ինչ է այն, թե ինչ է այն, թե ինչ է այն, թե ինչ է այն, թե ինչ է այն, թե ինչ է այն, թե ինչ է այն, թե ինչ է այն, թե ինչ է այն, թե ինչ է այն, թե ինչ է այն, թե ինչ է այն, թե ինչ է այն, թե ինչ է այն, թե ինչ է այն, թե ինչ է այն, թե ինչ է այն, թե ինչ է այն, թե ինչ է այն, թե ինչ է այն, թե ինչ է այն, թե ինչ է այն, թե ինչ է այն, թե ինչ է այն, թե ինչ է այն, թե ինչ է այն, թե ինչ է այն, թե ինչ է այն, թե ինչ Այսպիսին է արտադրության իրականությունը: սերտիֆիկը, որը ապրում է, կանգնած է: Սերտիֆիկը, որը ծխում է, ոչինչ չի կատարում, ոչ թե այն, ինչ հավաստագրված արժեքը հավատում է: Ո՞ր արժեքը չպետք է ստանալ 1. Ռոմանի վտանգը Դա պլաստիկ խաղացողների խնդիրը, որը ստիպված է Kelly Criterion- ի կողմից: Մինչեւ հավանելի է, որ ձեր կայքը ճիշտ է, դուք կարող եք Գնացրեք սխալ Will-ը Տեսեք: Դուք ունեք $100,000 Capital եւ առեւտրի 60%- ի հաղթելու հնարավորությունը, որը կամ փրկում է ձեր առեւտրի կամ վախենում է այն: Հիմնական արժեքը հավասար է (+20%). Բայց եթե դուք առեւտրի բոլորը, դուք ունեք 40%- ի հնարավորությունը վախենում բոլորը առաջին առեւտրի. Kelly- ը ասում է, որ օպտիմալ խաղերի չափը է: kelly_fraction = (p * b - q) / b # where p = win probability, q = loss probability, b = odds Բայց այստեղ է այն, ինչ մենք սովորել ենք արտադրության մեջ: . even Kelly is too aggressive Ինչու է, քանի որ Ձեր ճշգրիտությունը ճշգրիտ է (դիմա) Markets- ի փոխանակում (60% -ը ձեր հիման է 52%) Սպիտակները սեղմվում են սեղմման ժամանակ (որ երբ դուք պետք է ավելի շատ) Դուք չեք կարող անմիջապես վերականգնել (լուսանկարներ, լարման, շուկայի ազդեցություն) Մենք սկսել ենք օգտագործել fractional Kelly- ը (25-50% -ը թվային Kelly- ի խաղի համար), քանի որ ձեր գծի վերամշակման իրական աշխարհում ծախսերը կախված են: 2. Արդյունաբերական անհատականությունը extremes Մեկ գիշերվա ընթացքում, մեր համակարգը սխալեցվել է extrem weather event- ի ընթացքում: Դա ոչ մի ծրագրային սխալ, այլ մետաղական սխալ. Մեր ախտորանտացիայի մտուտակը դարձել է միասնական: Optimizer-ը չի կարող գտնել լուծում: Մենք կախված էին, չի կարող առեւտրել, այն ճշգրիտ պայմաններում, որտեղ մեր ռեժիմը պետք է ունենա ամենամեծ գումար: Հիմնական խնդիրը: Մենք optimized- ի համար նախընտրված սենյակումների. Բայց extremes են տարբեր correlation կառուցվածքներ. Ապրանքներ, որոնք սովորաբար շարժվում են անմիջապես անմիջապես կատարյալ correlated. Ձեր ճշգրտությամբ գնահատված covariance մտուտակը, ստեղծվել է մի քանի մի քանի մի քանի օրվա ընթացքում, կախված է. Արդյոք, այնքան լավ է, թե ինչի համար պետք է ստանալ, այնքան լավ է, թե ինչու պետք է ստանալ : regularization from sklearn.covariance import LedoitWolf # Instead of sample covariance cov_matrix = np.cov(returns.T) # Use shrinkage towards structured estimator lw = LedoitWolf() cov_matrix_robust = lw.fit(returns).covariance_ Այսպիսով, մի քանի ճշգրիտությունը բեռնում է ստանդարտ ժամանակներում էժանության համար: Ձեր նախընտրված արժեքը կունենա քիչ ավելի վատ: Ձեր համակարգը կունենա գլուխներ: Time Horizon սխալներ Ահա մի խնդիր, որը չգիտվում է backtests- ում: Ձեր նախընտրված արժեքը բուժում է, որ դուք կարող եք տեւել շատ երկար, որ մեծ մասերի քաղաքականությունը աշխատելու համար: Ապրանքի մեջ, դուք չեք կարող. Մենք գտնել ենք այս մասին, երբ մեր համակարգը ցույց է տալիս, որ 90 օրվա Windows- ում հզոր հզոր հզոր հզորությունը, բայց 30 օրվա Windows- ում հզոր հզորությունը. Մեր մատակարարները վերահսկել են աշխատանքային կատարումը ամսականում: Մեր վտանգի գծերը վերահսկվել են շաբաթականորեն, որը հիմնված է վերջին արդյունքների վրա: Եթե մենք ունենք երեք սխալ ամիս, մեր կայքի գծերը կտրված են, ոչինչ, թե ինչ է ասում, որ երկար ժամանակի նախընտրված արժեքը: Theoretical strategy took 6-12 months to reliably show profit. The operational reality gave us 3 months before consequences kicked in. Մենք պետք է ավելացնել բացասական ժամանակային հսկողություն մեր optimization: def optimize_with_horizon_constraint(scenarios, max_horizon_days=30): """ Optimize not just for long-term EV, but for probability of positive returns within operational time horizon """ # Standard expected value ev = np.mean(scenarios) # But also: what'sthe probability we're profitable # within our actual time horizon? rolling_returns = pd.Series(scenarios).rolling(max_horizon_days).sum() prob_profitable_in_horizon = (rolling_returns > 0).mean() # Penalize strategies with low short-term win probability # even if long-term EV is great if prob_profitable_in_horizon < 0.6: return ev * 0.5 # Heavily discount return ev Դա նշանակում էր, որ ընդունում ենք պլաստակներ, որոնք մի քանի ավելի քիչ պլաստիկ գինը, բայց ավելի բարձր հնարավորություն են ցույց տալ, որ գինը մեր օպերացիոն սահմանափակների մեջ է: Դա չպետք է ստատամետիկորեն օպերացիոն, բայց դա պլաստիկորեն անհրաժեշտ է: Ո՞վ պետք է optimize Հիմնական հոդված՝ Հիմնական հոդված՝ Հիմնական հոդված՝ Հիմնական հոդված՝ Հիմնական հոդված՝ Հիմնական հոդված՝ Հիմնական հոդված՝ Հիմնական հոդված՝ Հիմնական հոդված՝ Հիմնական հոդված՝ Հիմնական հոդված՝ Հիմնական հոդված՝ Հիմնական հոդված 1. Risk-Adjusted Returns հետ CVaR Բարձրացնել E-ի վրա, մենք կպատկենք CVaR- ը (Conditional Value at Risk) -ը, որը կպատկվում է վատագույն 5%-ում: import cvxpy as cp # Decision variable: position sizes positions = cp.Variable(n_assets) # Scenarios returns scenario_returns = get_price_scenarios() # shape: (n_scenarios, n_assets) portfolio_returns = scenario_returns @ positions # CVaR constraints alpha = 0.05 # 5% tail var = cp.Variable() u = cp.Variable(n_scenarios) constraints = [ u >= 0, u >= -(portfolio_returns - var), ] cvar = var + cp.sum(u) / (n_scenarios * alpha) # Optimize for return while constraining tail risk objective = cp.Maximize(cp.sum(portfolio_returns) / n_scenarios - lambda_risk * cvar) Դա բացառապես կախված է պլաստակները, որոնք ունակ են լավ միջին վերադառնալով, բայց վտանգավոր ծախսերը: 2. Մոդելային սխալների robustness Մենք հավատում ենք, որ մեր մոդել սխալ է եւ optimizes համար Հիմնական հոդված՝ Հիմնական հոդված՝ Հիմնական հոդված՝ Հիմնական հոդված՝ Հիմնական հոդված: Լավագույն Case # Instead of single expected return estimate mu_estimated = historical_returns.mean() # Assume uncertainty mu_lower_bound = mu_estimated - 2 * historical_returns.std() / np.sqrt(len(historical_returns)) # Optimize for worst-case in uncertainty range # (Robust optimization / minmax approach) Այսպիսով, պաշտպանվում է շատ հավասար parameter estimates. Kelly-Constrainted Տեսակային չափը Մենք բացառապես սահմանում ենք տեղադրման չափերը Kelly- ի ստանդարտի վրա, նույնիսկ երբ optimizer- ը ցանկանում է ավելի: def kelly_position_limit(edge, volatility, capital, max_kelly_fraction=0.25): """ edge: expected return per unit risk volatility: standard deviation of returns max_kelly_fraction: fraction of theoretical Kelly to actually use """ kelly_full = edge / (volatility ** 2) kelly_fraction = capital * kelly_full * max_kelly_fraction return kelly_position Մենք օգտագործում ենք 25% Kelly- ը որպես խոշոր սահմանափակություն: Ահա, դա նվազեցնում է կարիքային արժեքը: Այն նաեւ ապահովում է, որ մենք դեռ առեւտրային կունենենք հաջորդ ամիս: Production Mindset-ի մասին Հիմնական հարցը, թե ինչ պետք է անել, թե ինչ պետք է անել, թե ինչ պետք է անել: «Ո՞ր պլաստիկը ունի ամենամեծ հուսալի վերադառնալը» Research mindset «Ո՞ր պլաստիկը կարող է ապրել, երբ ես սխալ եմ իմ հավատումների մասին» Production mindset Ահա մեր կատարյալ փոխանակներ: Backtests: Ավելացվել է սխալագույն ամսական վերլուծություն, ոչ միայն միջին վերլուծություն Տեսագրության չափը: Պահպանական է ստանդարտորեն, kill-switches համար anomalies Risk metrics: Track CVaR ամեն օր, ոչ միայն P&L Model Validation: Հիմա 30% Parameter Uncertainty- ը բոլոր արժեքների վրա Արդյունաբերական պլանավորումը: «մոդելը ամբողջապես սխալ է»: Կարդալ Պահպանված արժեքը գեղեցիկ կատեգորիան է: Դա գեղեցիկ է, intuitive է եւ ստանդարտապես optimum է: Դա նույնիսկ չի հասկանում. Արդյունաբերության մեջ դուք չեք առեւտրում մի հավանականության առեւտրի հետ: Դուք առեւտրում եք: Ձեր անսահմանափակ վտանգավոր մոդելներ Ապրանքներ, որոնք փոխվում են Օգտագործման սահմանափակումներ, որոնք չեն ձեր backtest- ում Հոգրաձայնային ճշգրիտությունը, որը տեսնում է, թե ձեր բջջային բջջային բջջային բջջային բջջային բջջային բջջային բջջային բջջային բջջային բջջային բջջային բջջային բջջային բջջային բջջային բջջային բջջային բջջային բջջային բջջային բջջային Ոչ այն համակարգեր, որոնք վերականգնում են, որ ավելի բարձր ապրում են: Նրանք այն համակարգեր են, որոնք վերականգնում են, երբ մեթոդը սխալ է, շուկանները փոխվում են, եւ գլուխները հայտնվում են: Պահպանեք, թե ինչպես պետք է ապրել, առաջինը: Հավատությունը, երկրորդը: Հավատությունը, որ պետք է ապրել, այն մի մաս է, բայց դա ոչ մի նպատակային գործառույթ չէ: