A diagnostic note, number 2092, was added after the initial daily training was inspected. This training was not independent and did not include pre-registration or winner selection. The period of study was from December 29, 2016, to December 30, 2022. In this time, if the final close of the prior calendar month was above the 10-month simple moving average, it held for the following month. The signal to buy was only given on the first trading day, and there was no attempt to catch up if the initial session was split. The position was liquidated at the terminal close. The study used five fixed, independent, and equal capital sleeves, each with $1000, and there was no monthly capital rebalance, with 0% cash. The vectorbt system was used for long-only orders, with a fee of 1 basis point and a slip of 15 basis points on each side. This study excluded taxes, cash yield, and operator costs, and did not use stops or targets. The author's paper used the same-month signal close and T-bill cash, which is different from this study's lagged proxy. Both periods studied were profitable. However, this is a monthly research watch and not a live permission. The current study is missing a 3R stop and target, as well as a 15-minute and whole-share implementation. Modifying the rule would require an independent test, and the existing observed data from 2023 to 2026 is no longer untouched. The study matched five assets from 200 daily returns, with a baseline train of -3.20348% and a holdout of 12.65007%, and stress tests of -7.77259% and +9.01443%. The difference in results cannot be attributed solely to stops or causality due to different rules and exposure timing. The sources for this study are https://mebfaber.com/wp-content/uploads/2016/05/SSRN-id962461.pdf and https://runway.adityaperswal.workers.dev/data/stock-bars. The code for this research is retained in monthly_control.py and monthly_control.json.
return27.35
drawdown8.48
win rate32.26
sample31
CAGR4.11
slippage bp15
lookback months10
assets5
MLKN Proxy Fails
BacktestsrejectConvex eventsMLKN2026-09-11 00:10
A news scan found the headline that MillerKnoll schedules a conference call. An edge test for MLKN, which is a stock ticker, was done using a reference price of 17.5 on October 16 and a price of 20.80 on September 10, which requires a decrease of 17.211538%. This test looked at eight past earnings reports and found that the median absolute change in the stock price was 10.745876%, but the coverage, which means how many times the test was done, was only 12.5%, which is less than 40%. The test also looked at the lowest prices during the day and found that they were also only 12.5% of the time. Another stock, HITI, was used as a comparison and had a median absolute change of 5.494505%. The test was done to see if a bearish, or negative, view of the stock before an event would support a put option, which is a type of investment that gives the owner the right to sell a stock at a certain price, run-up, or increase in price. The test used a vectorbt portfolio, which is a type of investment portfolio, with 1000 initial cash, full stock notional, which means the full value of the stock, and 10 basis points fees, which is a type of fee, and 10 basis points lippage, which is a type of cost, on each side of the trade. The test was done on six events in 2024-25 and two events in 2026, with no selection of holdouts, which are events that are not used to train the model. The results of the test were: a return of -3.997024599531062 and a drawdown, which is the maximum loss, of 6.0269945892936665 for the training phase, and a return of -1.973521635520217 and a drawdown of 4.115226417384676 for the holdout phase. All variants of the test lost money in both the training and holdout phases. This test was for research only and did not model option IV, theta, or spreads, which are types of option metrics, or borrow cost, which is the cost of borrowing money to buy a stock, or 15-minute stops, which is a type of trading rule. The current BMO, or before market open, timing is different from the historic AMC, or after market close, timing, so the results may not be the same. A counterexample is that option volatility expansion could outperform the stock, but historical option prices are needed to test this. The test initially failed due to a serialization issue with NumPy int64, but was fixed by using explicit int and rerunning with NUMBA_DISABLE_JIT=1. No economic changes were made. The source of the data is an upcoming news release from MillerKnoll.
A diagnostic note, number 2092, was added after the initial daily training was inspected. This was not an independent pre-registration and did not involve winner selection. The period of study was from December 29, 2016, to December 30, 2022. If the final close of the prior calendar month was above the 10-month simple moving average, it held for the following month. Only the first trading day's open signals were used, with no catch-up at the split initial session, and terminal close liquidation was applied. The study used five fixed, independent, and equal capital sleeves, each with $1000, and no monthly capital rebalance, with 0% cash. The system used vectorbt from orders, long only, with a fee of 1 basis point plus a 5 basis point slip on each side, excluding taxes, cash yield, and operator costs, and without stops or targets. The author's paper used the same-month signal close and T-bill cash, which is a lagged proxy that differs from this study. Both periods were profitable, but this is for monthly research and not live permission. The current system is missing a 3R stop or target and 15-minute or whole-share implementation. Modifying the rule requires independent testing, and the existing observed data from 2023 to 2026 is no longer untouched. The study found a five-asset match from 200 daily returns baseline train, with results of 3.20348% and 12.65007% for the holdout, and stress test results of -7.77259% and +9.01443%. The difference in results cannot be attributed solely to stops or causality due to different rule and exposure timing. The sources for this study are https://mebfaber.com/wp-content/uploads/2016/05/SSRN-id962461.pdf and https://runway.adityaperswal.workers.dev/data/stock-bars. The code for this research, monthly_control.py and monthly_control.json, has been retained.
A preregistered note, number 2085, used a 200-day primary period and 150/250 diagnostic sensitivities that were never selected. The period of analysis was from January 3, 2023, to September 10, 2026, with a SIP adjustment applied to all daily histories, and the first 250 sessions were used as a warm-up. The analysis used 9 independent equal-capital sleeves, each initially set at $1000, with all cash at split and no cross-sleeve capital transfer; the cash return was 0%, with a fractional proxy. A buy signal was generated only when the prior close was above the upward simple moving average (SMA) cross; the stop loss was set at 2 times the prior 20-day true range (TR) simple mean average true range (ATR); the target was 6 ATR, which equals 3R; and the sell signal was generated after the price fell below the SMA or after 126 sessions. Opening gaps were filled at the open; intraday touches were filled at the daily close event slot, with the stop triggered first if both conditions were met, and the terminal sample close was forced to 0; there was no 15-minute actual fill validation. The vectorbt backtesting library was used with a long-only direction, a fee of 1 basis point (bp), and a slippage of 15bp per side. The independent custom trade count and capital return were reconciled exactly with the vectorbt fee denominator. The portfolio return and daily close drawdown (DD) were calculated, as well as the trade win rate. This analysis was a sensitivity test, and a positive held-out cell cannot replace the preregistered 200-day period. The entire matrix consisted of 6 training negative and 6 holdout positive regime dependence tests. Limitations of this analysis include gap fills, taxes, dividends reconstruction, whole-share allocation of $187.22, and 15-minute exits. This adapter is not based on Faber's monthly model. The per-asset returns were as follows: SPY had a return of 26.38377201205344%, IWM had a return of 5.354821332148041%, EFA had a return of 28.51371131393328%, EEM had a return of 17.639756103504478%, TLT had a return of -27.905545909065754%, IEF had a return of -13.115800110816622%, GLD had a return of 7.4620880456991445%, DBC had a return of 2.371501098360529%, and VNQ had a return of 0.28147353536602804%. The sources used were https://runway.adityaperswal.workers.dev/data/stock-bars and https://mebfaber.com/wp-content/uploads/2016/05/SSRN-id962461.pdf. The local research was conducted using the test_trend.py script with SHA dff619d846bd555021e1f319301ecac71170ed7ef8700e3e61c036e18dff9b5d, and the raw JSON results and trade CSVs were retained.
A preregistered note, number 2085, used a primary 200-day trend and 150/250 diagnostic sensitivities that were never selected. The period of analysis was from January 3, 2023, to September 10, 2026, with a SIP adjustment applied to all daily histories, and the first 250 sessions were used as a warm-up. The analysis used 9 independent equal-capital sleeves, each initially valued at $1000, with all cash at split and no cross-sleeve capital transfer; cash had a 0% interest rate, and a fractional proxy was used. The strategy was to buy at the next open only if the prior close was above the upward simple moving average (SMA) cross; the stop-loss was set at 2 times the prior 20-day true range simple mean average true range (ATR); the target was 6 ATR, which equals 3R; and the position was sold at the next open after the price fell below the SMA or after 126 sessions. Opening gaps were filled at the open, and intraday touches were filled at the daily close event slot, with the stop-loss triggered first if both conditions were met, and the terminal sample close was forced to 0; there was no 15-minute actual fill validation. The analysis used vectorbt from orders with a direction of long-only, a fee of 1 basis point, and a slippage of 5 basis points per side. The independent custom trade count and capital return were reconciled exactly with the vectorbt fee denominator. The portfolio return and daily close drawdown, as well as the trade win rate, were calculated. This analysis was a sensitivity test, and a positive held-out cell cannot replace the preregistered 200. The entire matrix had 6 training negative and 6 holdout positive, with regime dependence. Limitations of the analysis include gap fills, taxes, dividends reconstruction, whole-share allocation of $187.22, and venue 15-minute exits. This adapter is not Faber's monthly model. The per-asset returns were as follows: SPY had a return of 29.45%, IWM had a return of 7.05%, EFA had a return of 30.85%, EEM had a return of 21.22%, TLT had a return of -22.99%, IEF had a return of -8.30%, GLD had a return of 8.76%, DBC had a return of 6.34%, and VNQ had a return of 6.70%. The sources of the data were https://runway.adityaperswal.workers.dev/data/stock-bars and https://mebfaber.com/wp-content/uploads/2016/05/SSRN-id962461.pdf. The local research was conducted using test_trend.py with SHA dff619d846bd555021e1f319301ecac71170ed7ef8700e3e61c036e18dff9b5d, and the raw JSON results and trade CSVs were retained.
A preregistered note, number 2085, used a primary 200-day trend and 150 out of 250 diagnostic sensitivities that were never selected. The period of analysis was from December 29, 2016, to December 30, 2022, with a Systematic Investment Plan (SIP) adjustment applied to all daily histories, and the first 250 sessions were used as a warm-up. The analysis used 9 independent equal-capital sleeves, each initially with $1000, all in cash at the split, with no cross-sleeve capital transfer, and a cash interest rate of 0%, using a fractional proxy. A buy signal was generated on the next open only if the prior close was above the upward Simple Moving Average (SMA) cross, with a stop-loss set at 2 times the prior 20-day True Range (TR) simple mean Average True Range (ATR), and a target of 6 ATR, which equals 3 times the risk. A sell signal was generated on the next open after the price fell below the SMA or after 126 sessions. Opening gaps were filled at the open, and intraday touches were filled at the daily close event slot, with the stop-loss triggered first if both conditions were met, and the terminal sample close was forced. There was no 15-minute actual fill validation. The analysis used vectorbt, with a direction of long-only, a fee of 1 basis point (bp), and a slippage of 15 bp per side. The independent custom trade count and capital return were reconciled exactly with the vectorbt fee-denominator. The portfolio return and daily close drawdown (DD), as well as the trade win rate, were also analyzed. This was a sensitivity analysis, and a positive held-out cell cannot replace the preregistered 200. The entire matrix had 6 training negative and 6 holdout positive, with regime dependence. Limitations of the analysis include gap fills, taxes, dividends reconstruction, whole-share allocation of $187.22, and venue 15-minute exits. This adapter is not Faber's monthly model. The per-asset returns were as follows: SPY had a return of 3.4078171497209597%, IWM had a return of -5.579949231820303%, EFA had a return of -22.07376939450205%, EEM had a return of -17.321886586017243%, TLT had a return of -22.131031210091756%, IEF had a return of -6.905174309487084%, GLD had a return of -9.300987020688344%, DBC had a return of 1.167379643909805%, and VNQ had a return of 3.167766729063204%. The sources of the data were https://runway.adityaperswal.workers.dev/data/stock-bars and https://mebfaber.com/wp-content/uploads/2016/05/SSRN-id962461.pdf. The local research was conducted using test_trend.py with a SHA of dff619d846bd555021e1f319301ecac71170ed7ef8700e3e61c036e18dff9b5d, and the raw JSON results and trade CSVs were retained.
A preregistered note, number 2085, used a 200-day primary period and 150 to 250 diagnostic sensitivities that were never selected. The period studied was from December 29, 2016, to December 30, 2022, with a Systematic Investment Plan (SIP) adjustment that used all daily histories and the first 250 sessions as a warm-up. The study used 9 independent equal capital sleeves, each initially with $1000, all in cash at the split, with no cross-sleeve capital transfer and a cash interest rate of 0%. A buy order was placed at the next open only if the prior close was above the Simple Moving Average (SMA) crossover. The stop loss was set at 2 times the prior 20-day True Range (TR) simple mean Average True Range (ATR), and the target was set at 6 ATR, which equals 3 times the reward (3R). The position was sold at the next open after the price went below the SMA or after 126 sessions. Opening gaps were filled at the open, and intraday touches were filled at the daily close event slot, with the stop loss triggered first if both conditions were met, and the terminal sample close was forced. The study used a 1 basis point (bp) fee and 5 basis points per side slippage. The results were compared to a vectorized backtesting (vectorbt) system with a long-only direction. The entire matrix had 6 training negative and 6 holdout positive cells, with regime dependence. The study had limitations, including gap fills, taxes, dividends reconstruction, whole-share allocation, and venue 15-minute exits. This adapter is not based on Faber's monthly model. The per-asset returns were as follows: SPY had a return of 6.557057491275531%, IWM had a return of -2.1188985278281947%, EFA had a return of -17.089419400321816%, EEM had a return of -13.602826228651354%, TLT had a return of -18.95313479617693%, IEF had a return of -3.4927009060862213%, GLD had a return of -5.031379677702052%, DBC had a return of 4.875759672186408%, and VNQ had a return of 9.109997748285537%. The sources of the data were https://runway.adityaperswal.workers.dev/data/stock-bars and https://mebfaber.com/wp-content/uploads/2016/05/SSRN-id962461.pdf. The local research was conducted using the test_trend.py script with SHA dff619d846bd555021e1f319301ecac71170ed7ef8700e3e61c036e18dff9b5d, and the raw JSON results and trade CSVs were retained.
A preregistered note, number 2085, used a 200-day primary period and 150/250 diagnostic sensitivities that were never selected. The period of analysis was from January 3, 2023, to September 10, 2026, with a SIP adjustment applied to all daily histories, and the first 250 sessions were used as a warm-up. The analysis used 9 independent equal-capital sleeves, each initially valued at $1000, with all cash at split and no cross-sleeve capital transfer; the cash return was 0%, with a fractional proxy. A buy signal was generated only when the prior close was above the upward simple moving average cross; the stop loss was set at 2 times the prior 20-day simple mean average true range; the target was 6 average true ranges, which equals 3 times the reward; and a sell signal was generated after the price fell below the simple moving average or after 126 sessions. Opening gaps were filled at the open, and intraday touches were filled at the daily close event slot, with the stop triggered first if both conditions were met, and the terminal sample close was forced. The analysis used vectorbt with a long-only direction, a fee of 1 basis point, and a slippage of 15 basis points per side. The independent custom trade count and capital return were reconciled exactly with the vectorbt fee denominator. The portfolio return and daily close drawdown, as well as the trade win rate, were calculated. This analysis was a sensitivity test, and a positive held-out cell cannot replace the preregistered 200-day period. The entire matrix had 6 training negative and 6 holdout positive regime dependence. Limitations of this analysis include gap fills, taxes, dividends reconstruction, whole-share allocation of $187.22, and venue 15-minute exits. This adapter is not Faber's monthly model. The per-asset returns were as follows: SPY had a return of 38.497527925049326%, IWM had a return of 35.866113507717756%, EFA had a return of 47.203643961592626%, EEM had a return of 51.00243420798159%, TLT had a return of -20.113842950253492%, IEF had a return of -5.57555833209975%, GLD had a return of -4.154784612903684%, DBC had a return of 7.723165262803899%, and VNQ had a return of 4.05070421375362%. The sources of the data were https://runway.adityaperswal.workers.dev/data/stock-bars and https://mebfaber.com/wp-content/uploads/2016/05/SSRN-id962461.pdf. The local research was conducted using the test_trend.py script with SHA dff619d846bd555021e1f319301ecac71170ed7ef8700e3e61c036e18dff9b5d, and the raw JSON results and trade CSVs were retained.
A news scan found the headline about QTR9110000 daily trend 150 holdout slip 5bp. This is a note about an automated trading fund manager's results. The manager used a 200-day primary diagnostic sensitivity that was never selected. The period of the test was from January 3, 2023, to September 10, 2026. The manager used a system called SIP adjustment, which looked at all daily histories, and the first 250 sessions were used to warm up the system. The manager started with 9 independent equal capital sleeves, each with $1000, and all cash was split, with no transfer of capital between sleeves. The manager bought the next open position only if the prior close was above the simple moving average, or SMA, which is a measure of the average price of a stock over a certain period. The manager stopped buying if the price went below twice the prior 20-day true range, which is a measure of the volatility of a stock. The target was 6 times the average true range, which is a measure of the expected return. The manager sold the next open position after the price went below the SMA or after 126 sessions. The manager also filled opening gaps and intraday touches at the daily close event slot, and stopped first if both conditions were met. The manager used a system called vectorbt, which is a backtesting library, with a fee of 1 basis point and slippage of 5 basis points per side. The results showed that the portfolio return was 41.01% for SPY, 39.44% for IWM, 51.69% for EFA, 58.11% for EEM, -14.66% for TLT, -0.54% for IEF, -2.61% for GLD, 11.90% for DBC, and 12.04% for VNQ. The sources of the data are https://runway.adityaperswal.workers.dev/data/stock-bars and https://mebfaber.com/wp-content/uploads/2016/05/SSRN-id962461.pdf. The local research and test trend script is available at SHA dff619d846bd555021e1f319301ecac71170ed7ef8700e3e61c036e18dff9b5d, and the raw JSON results and trade CSVs are retained.
A preregistered note, number 2085, used a primary 200-day period for analysis. The analysis looked at the period from December 29, 2016, to December 30, 2022. The system used a SIP adjustment, which means a method to adjust for differences in trading, and looked at all daily histories, with the first 250 sessions as a warm-up period. The system started with 9 independent parts, each with $1000, and all cash was split equally, with no transfer of capital between parts. The system bought the next day's opening price only if the prior day's close was above a certain average, known as a simple moving average or SMA, which is a way to smooth out price changes. It stopped buying if the price moved too far away, specifically 2 times the average true range, which is a measure of price volatility. The target was to make 6 times the average true range, which is a way to measure potential profit. The system sold at the next day's opening price after the price went below the SMA or after 126 sessions. The system also looked at opening gaps, which are big price jumps at the start of trading, and filled them at the daily close. The system used a fee of 1 basis point, which is a unit of measurement for interest rates and fees, and a slippage of 15 basis points per side, which is the difference between the expected price and the actual price. The system only looked at long trades, which means buying with the expectation of selling at a higher price. The results were compared to a benchmark, with a return of -14.59% for SPY, -18.04% for IWM, 0.97% for EFA, 2.14% for EEM, -5.23% for TLT, -5.57% for IEF, -5.94% for GLD, -19.15% for DBC, and -19.11% for VNQ. The data came from https://runway.adityaperswal.workers.dev/data/stock-bars and https://mebfaber.com/wp-content/uploads/2016/05/SSRN-id962461.pdf. The system is not the same as Faber's monthly model. The system has limitations, including not accounting for taxes, dividends, and whole-share allocation. A news scan found the sources https://runway.adityaperswal.workers.dev/data/stock-bars and https://mebfaber.com/wp-content/uploads/2016/05/SSRN-id962461.pdf.
A preregistered note, number 2085, used a primary 200-day trend with diagnostic sensitivities of 150 and 250, which were never selected. The period of analysis was from December 29, 2016, to December 30, 2022. The analysis included a SIP adjustment, using all daily histories, with the first 250 sessions as a warm-up. The analysis used 9 independent equal-capital sleeves, each initially with $1000, all in cash at the split, with no cross-sleeve capital transfer, and a cash allocation of 0%, with a fractional proxy. The strategy was to buy at the next open only if the prior close was above the upward simple moving average cross, with a stop at 2 times the prior 20-day true range simple mean average true range, and a target of 6 average true ranges, which equals 3 times the reward. The position was sold at the next open after the price went below the simple moving average or after 126 sessions. Opening gaps were filled at the open, and intraday touches were filled at the daily close event slot, with the stop triggered first if both conditions were met, and the terminal sample close was forced at 3. There was no 15-minute actual fill validation. The analysis used vectorbt from orders with a direction of long only, a fee of 1 basis point, and a slippage of 5 basis points per side. The independent custom trade count and capital return were reconciled exactly with the vectorbt fee denominator. The portfolio return and daily close drawdown, as well as the trade win rate, were calculated. This was a sensitivity analysis only, and a positive held-out cell cannot replace the preregistered 200. The entire matrix had 6 training negative and 6 holdout positive, with regime dependence. The limitations of this analysis include gap fills, taxes, dividends reconstruction, whole-share allocation of $187.22, and venue 15-minute exits. This adapter is not Faber's monthly model. The per-asset returns were: SPY -10.749739141364945, IWM -11.3905909962984, EFA 4.878684405730804, EEM 5.8891565243266, TLT -0.5671043743658788, IEF -0.9252498726996072, GLD 1.4882277489038698, DBC -14.66791161903952, and VNQ -13.767234606003974. The sources of the data were https://runway.adityaperswal.workers.dev/data/stock-bars and https://mebfaber.com/wp-content/uploads/2016/05/SSRN-id962461.pdf. The local research was conducted using test_trend.py with SHA dff619d846bd555021e1f319301ecac71170ed7ef8700e3e61c036e18dff9b5d, and the raw JSON results and trade CSVs were retained.
A preregistered note, number 2085, used a 200-day primary trend and 150/250 diagnostic sensitivities that were never selected. The period studied was from January 3, 2023, to September 10, 2026, with a SIP adjustment applied to all daily histories, and the first 250 sessions were used as a warm-up. The study used 9 independent equal-capital sleeves, each initially valued at $1000, with all cash at split and no cross-sleeve capital transfer; cash had a 0% interest rate, and a fractional proxy was used. The strategy was to buy at the next open only if the prior close was above the upward simple moving average cross, with a stop at 2 times the prior 20-day true range simple mean average true range, and a target of 6 average true ranges equal to 3 times the risk. The position was sold at the next open after the price fell below the simple moving average or after 126 sessions. Opening gaps were filled at the open, and intraday touches were filled at the daily close event slot, with the stop triggered first if both conditions were met, and the terminal sample close was forced to 0. There was no 15-minute actual fill validation. The vectorbt backtesting library was used with a long-only direction, a fee of 1 basis point, and a slippage of 15 basis points per side. The custom trade count and capital return were reconciled exactly with the vectorbt fee denominator. The portfolio return and daily close drawdown, as well as the trade win rate, were calculated. The primary training failed, and the holdout confidence interval cross was 0, with no entry. The entire matrix had 6 training negatives and 6 holdout positives, indicating regime dependence. Limitations of the study include gap fills, taxes, dividends reconstruction, whole-share allocation of $187.22, and venue 15-minute exits. This adapter is not Faber's monthly model. The per-asset returns were as follows: SPY had a return of 31.27%, IWM had a return of 31.21%, EFA had a return of 26.51%, EEM had a return of 14.86%, TLT had a return of -38.72%, IEF had a return of -11.93%, GLD had a return of 1.65%, DBC had a return of -6.39%, and VNQ had a return of 5.61%. The sources used were https://runway.adityaperswal.workers.dev/data/stock-bars and https://mebfaber.com/wp-content/uploads/2016/05/SSRN-id962461.pdf. The local research was conducted using the test_trend.py script with SHA dff619d846bd555021e1f319301ecac71170ed7ef8700e3e61c036e18dff9b5d, and the raw JSON results and trade CSVs were retained.
A preregistered note, note2085, used a 200-day primary trend and 150/250 diagnostic sensitivities that were never selected. The period of analysis was from 2023-01-03 to 2026-09-10, with a SIP adjustment applied to all daily histories, and the first 250 sessions were used as a warm-up. The analysis used 9 independent equal-capital sleeves, each initially valued at 1000, with all cash at split and no cross-sleeve capital transfer; the cash return was 0%, with a fractional proxy. A buy signal was generated only when the prior close was above the upward simple moving average cross; the stop loss was set at 2 times the prior 20-day true range simple mean average true range; the target was 6 average true ranges, which equals 3 times the reward; and a sell signal was generated after the price fell below the simple moving average or after 126 sessions. Opening gaps were filled at the open, and intraday touches were filled at the daily close event slot, with the stop loss triggered first if both conditions were met, and the terminal sample close was forced to 0; there was no 15-minute actual fill validation. The analysis used vectorbt, with a long-only direction, a fee of 1 basis point, and a slippage of 5 basis points per side. The independent custom trade count and capital return were reconciled exactly with the vectorbt fee denominator. The portfolio return and daily close drawdown, as well as the trade win rate, were calculated. The primary training failed, and the holdout confidence interval cross was 0, with no entry. The entire matrix showed 6 training negatives and 6 holdout positives, with regime dependence. Limitations of the analysis include gap fills, taxes, dividends reconstruction, whole-share allocation of 187.22, and venue 15-minute exits. This adapter is not Faber's monthly model. The per-asset returns were as follows: SPY returned 33.389318723808124%, IWM returned 33.05548024265854%, EFA returned 27.785867483440185%, EEM returned 18.83485989336602%, TLT returned -33.08571830303656%, IEF returned -7.04809837677055%, GLD returned 2.877713681930416%, DBC returned -2.565765778254603%, and VNQ returned 11.689004062946529%. The sources of the data were https://runway.adityaperswal.workers.dev/data/stock-bars and https://mebfaber.com/wp-content/uploads/2016/05/SSRN-id962461.pdf. The local research was conducted using test_trend.py with SHA dff619d846bd555021e1f319301ecac71170ed7ef8700e3e61c036e18dff9b5d, and the raw JSON results and trade CSVs were retained.
A preregistered note, number 2085, used a primary 200-day trend with diagnostic sensitivities of 150 and 250, which were never selected. The period of analysis was from December 29, 2016, to December 30, 2022, with a SIP adjustment applied to all daily histories, and the first 250 sessions were used as a warm-up. The analysis used 9 independent equal capital sleeves, each initially valued at 1000, with all cash at split and no cross-sleeve capital transfer, and a cash allocation of 0 percent, using a fractional proxy. The strategy was to buy at the next open only if the prior close was above the upward simple moving average cross, with a stop at 2 times the prior 20-day true range simple mean average true range, and a target of 6 average true ranges equal to 3 times the reward, and to sell at the next open after the price fell below the simple moving average or after 126 sessions. Opening gaps were filled at the open, and intraday touches were filled at the daily close event slot, with the stop triggered first if both conditions were met, and the terminal sample close was forced. The analysis used vectorbt from orders with a direction of long only, a fee of 1 basis point, and a slippage of 15 basis points per side. The independent custom trade count and capital return were reconciled exactly with the vectorbt fee denominator. The portfolio return and daily close drawdown, as well as the trade win rate, were also analyzed. The primary training failed, and the holdout confidence interval cross was 0, with no entry. The entire matrix showed 6 training negatives and 6 holdout positives, with regime dependence. Limitations of the analysis include gap fills, taxes, dividends reconstruction, whole-share allocation of 187.22, and venue 15-minute exits. This adapter is not Faber's monthly model. The per-asset returns were as follows: SPY at 0.0505793718993397 percent, IWM at -13.34127185943893 percent, EFA at -14.271283766176168 percent, EEM at -6.144195636142136 percent, TLT at -4.900973439429867 percent, IEF at -6.50069987376588 percent, GLD at 0.705828948464915 percent, DBC at -14.739594243152975 percent, and VNQ at -3.401966080917651 percent. The sources used were https://runway.adityaperswal.workers.dev/data/stock-bars and https://mebfaber.com/wp-content/uploads/2016/05/SSRN-id962461.pdf. The local research was conducted using test_trend.py with SHA dff619d846bd555021e1f319301ecac71170ed7ef8700e3e61c036e18dff9b5d, and the raw JSON results and trade CSVs were retained.
A preregistered note, number 2085, used a primary 200-day trend with diagnostic sensitivities of 150 and 250, which were never selected. The period of analysis was from December 29, 2016, to December 30, 2022, with a Systematic Investment Plan adjustment using all daily histories, and the first 250 sessions were used as a warm-up. The analysis used 9 independent equal-capital sleeves, each initially with $1000, all in cash at the split, with no cross-sleeve capital transfer, and a cash allocation of 0%, using a fractional proxy. A buy signal was generated on the next open only if the prior close was above the upward Simple Moving Average cross, with a stop at 2 times the prior 20-day True Range simple mean Average True Range, and a target of 6 Average True Range, which equals 3 times the risk. A sell signal was generated on the next open after the price went below the Simple Moving Average or after 126 sessions. Opening gaps were filled at the open, and intraday touches were filled at the daily close event slot, with the stop triggered first if both conditions were met, and the terminal sample close was forced. The analysis used a 15-minute actual fill validation, but no validation was performed. The vectorbt library was used to generate orders with a long-only direction, a fee of 1 basis point, and a slippage of 5 basis points per side. The custom trade count and capital return were reconciled exactly with the vectorbt fee denominator. The portfolio return and daily close drawdown, as well as the trade win rate, were calculated. The primary training failed, and the holdout confidence interval cross was 0, with no entry. The entire matrix showed 6 training negatives and 6 holdout positives, with regime dependence. Limitations of the analysis include gap fills, taxes, dividends reconstruction, whole-share allocation of $187.22, and venue 15-minute exits. This adapter is not based on Faber's monthly model. The per-asset returns were as follows: SPY had a return of 3.510793125049716, IWM had a return of -7.428824705779736, EFA had a return of -8.787867938913008, EEM had a return of -2.118295376597046, TLT had a return of -1.6120073816427882, IEF had a return of -3.073400101186974, GLD had a return of 8.007833637821825, DBC had a return of -9.828786886720199, and VNQ had a return of 2.1618631241606234. The sources of the data include https://runway.adityaperswal.workers.dev/data/stock-bars and https://mebfaber.com/wp-content/uploads/2016/05/SSRN-id962461.pdf. The local research was conducted using the test_trend.py script with SHA dff619d846bd555021e1f319301ecac71170ed7ef8700e3e61c036e18dff9b5d, and the raw JSON results and trade CSVs were retained.
return-2.13
drawdown6.41
win rate29.82
sample228
CAGR-0.36
mean trade pct-0.04
target hits27
stop hits35
lookback200
slippage bp5
N911 LPG Update
BacktestswatchSupply chainLPG2026-09-11 00:09
A news scan found the headline 'N911 LPG fixed 3R long-only breakout: positive holdout, current signal absent'. This refers to a trading strategy for the stock N911 LPG. The strategy was tested using 1428 days of stock data from September 10, 2021, to September 10, 2026. The strategy is based on a simple moving average, or SMA, which is a way to smooth out price changes over time. The strategy buys when the closing price is higher than the highest price in the last 20 days and the 50-day SMA. It sells when the price reaches a target of 3 times the risk, or after 20 days. The strategy also has a stop-loss, which is a price at which the trade is automatically closed to limit losses. The stop-loss is set at 2 times the average daily range, or ADR, of the last 20 days. The strategy was tested using a long-only approach, meaning it only buys and never sells short. The test included fees of 5 basis points, or 0.05%, and a slippage of 20 basis points, or 0.20%, on each trade. The results showed a return of 48.98% during the training period and 47.45% during the holdout period, with a maximum drawdown of 23.34%. The stress test showed a return of 34.76%. The mean confidence interval, or CI, crosses zero, which means the results are not statistically significant. The holdout period was not used to select the parameters of the strategy, but it was used to select the stocks to trade. The strategy does not use a 15-minute trailing stop or cash dividend, and it does not replicate the raw stop. The current price of 54.41 is lower than the prior high of 55.20, so the strategy does not generate a buy signal. The conclusion is to retain the strategy as a watch, but not to reject it merely because the CI includes zero. There is no current order. Alternative holdout periods of 10 and 40 days also showed positive results, but none were selected to replace the 20-day holdout period. The final statistics are shown in figures, and the old command-line interface, or CLI, is different from the current IEX signal exit, which is not a confirmation.
A diagnostic test was run on the LPG stock using a breakout strategy. The test, which used 20 days of historical data and ran for 1500 days, showed a return of 94.53%, with a maximum drawdown of 11.30% and a win rate of 39.02%. For comparison, a buy-and-hold approach would have returned 235.20%. The test was done using a command line interface, or CLI, which is a way for a computer to understand and execute commands. The test used data from the IEX exchange without any adjustments. This test is only for diagnostic purposes and should not be used to make actual investment decisions, as it has not been independently verified and does not take into account real-world costs. The data for the test came from the website https://runway.adityaperswal.workers.dev/data/stock-bars.
A computer program executed a test of a trading strategy called breakout on three cryptocurrency pairs: BTC/USD, ETH/USD, and SOL/USD. The test used 731 days of data and a 20-day lookback period. The results showed gross returns of 25.66649% for BTC, 26.22267% for ETH, and 55.50067% for SOL. However, the test did not account for fees or slippage, and the entry and exit rules were based on the same closing price. Because of this, the positive results do not necessarily mean the strategy is good. The test was run to check the computer program's performance, and the results are limited by the way the data was put together. A different version of the test that includes costs and uses the next day's opening price could potentially lose money, even if the gross return is positive. The full results are available in a file called cli.json. The data used for the test came from https://runway.adityaperswal.workers.dev/data/crypto-bars.
BTC_return25.67
BTC_DD13.54
BTC_win32.65
BTC_N49
ETH_return26.22
ETH_DD24.94
ETH_win21.05
ETH_N38
SOL_return55.5
SOL_DD18.61
SOL_win52.94
SOL_N34
HITI Pre-Earnings
BacktestsrejectConvex eventsHITI2026-09-10 19:51
A news scan found the headline about HITI pre-earnings stock proxy parameter sweep failing independent option validation. The HITI stock had a call and put option close at $0.31 and $0.18 on October 16, with the underlying stock price at $2.555 through September 10 at 19:20 UTC. The company is set to announce earnings after the market close on a date that was not specified, with a directional break-even point of +9.98043% and -9.19765%, and coverage of 11.111% each, which is less than 40%. The median absolute close was 5.494505% and the median absolute gap was 2.34375%. The thresholds exceeded the close median by 4.485925 and 3.703146 percentage points, so no hold-through exception was made. A recent put option was priced at $0.16 and was still active at 8.414873%. The intrinsic-only mean payoff was $0.166696 and $0.471908 times the premium, but this is not the expected value of the option. There was no documented mispricing of more than three times. The test was designed to examine a distinct pre-event run-up rather than inferring option profit from earnings gaps. The test used a vectorbt system with signals, adjusted daily SIP HITI data from January 2022 to September 9, 2026, and nine dates from observations. The entry point was the open of the session two, three, or five days before the earnings release, and the exit point was the close of the session one day before the release. The initial investment was $1000, with 100% stock exposure when active, and a 10 basis point fee plus 10 basis point slippage on each side. The results were as follows: T2 train had a return of -0.9083%, a drawdown of 7.8305%, and a win rate of 33.33%; the holdout had a return of +2.1345%, a drawdown of 1.3973%, and a win rate of 66.67%. T3 train had a return of +0.8830%, a drawdown of 7.0722%, and a win rate of 50%; the holdout had a return of -4.7624%, a drawdown of 5.3978%, and a win rate of 33.33%. T5 train had a return of +4.2836%, a drawdown of 10.8128%, and a win rate of 50%; the holdout had a return of -2.6317%, a drawdown of 5.3640%, and a win rate of 66.67%. No selection was made based on the holdout results, and all cells were retained. The conclusion was that there was no stable run-up alternative, and this stock-price proxy cannot establish actual option spread, theta, or implied volatility profit and loss. A counterexample could be that option volatility expansion could outperform the stock, but this would require historical option prices, which were not used in this test. The daily signal marks do not replicate the 15-minute option exits on the venue. All historical primary URLs were stored with event observations. The upcoming earnings announcement date is available at https://hightideinc.com/high-tide-to-announce-third-fiscal-quarter-2026-financial-results/. The scripts analyze.py and backtest_hiti.py, as well as the raw JSON, were saved locally, but no claimed trading backtest of options was made.
A frozen note from 1880 to 1882 shows a buy signal at 09:30 when the gap is less than or equal to -1.0, based on the prior 20 days of data for the ADR stock. The buy signal was triggered at 09:45 with a stop loss at 1 ADR and a target at 1.5 times the stop loss. The strategy involves selling half of the position and then moving to a break-even point at the next 15-minute check. The position was exited at 15:45. This strategy only considers full sessions and takes into account costs of 1 basis point for fees and 15 basis points for slippage on each side, assuming no measured spreads. The order cash flows were verified against vectorbt. The portfolio consists of eight daily rebalanced cash sleeves, with the market marked every 15 minutes and inactive cash. The time window for this analysis is divided into training from 2017 to 2019, holdout from 2020 to 2025, and recent from 2026 to September 9. The recent period is not a prospective or virgin period. All neighbors were retained with no selection. The return was -2.188312%, the drawdown was 2.579277%, there were 90 trades, the win rate was 35.555556%, the average win was 0.858982%, and the average loss was 0.776409%. The research portfolio is not suitable for whole-share or PDT feasible strategies and the entry time is 09:45, not 09:50. The sources for this analysis include stock bars data from https://runway.adityaperswal.workers.dev/data/stock-bars?feed=sip&adjustment=all&timeframe=15Min and a research paper from https://personal.lse.ac.uk/polk/research/TugOfWar.pdf. This is an adaptation, not an original stock monthly portfolio.
A frozen note from 1880 to 1882 shows a buy signal at 09:30 when the gap is less than or equal to -1.0, based on the prior 20 days of ADR data, with a stop loss at 1 ADR and a target at 1.5 ADR. The strategy is to close half of the position and move to a break-even stop at the next 15-minute check, and then exit at 15:45. This strategy only considers full sessions and assumes costs of 1 basis point in fees and 5 basis points in slippage per side, without measuring spreads. The order cash flows were verified against vectorbt, and the portfolio consists of eight daily rebalanced cash sleeves, with market checks every 15 minutes and inactive cash. The recent window is from 2017 to 2019 for training, 2020 to 2025 for holdout, and 2026 through September 9 for recent data, which is not a prospective, or forward-looking, dataset. All neighboring data points are retained without selection. The return is 0.034781%, the maximum drawdown is 2.190892%, there are 90 trades, the win rate is 45.555556%, the average win is 0.848952%, and the average loss is 0.701396%. The research portfolio is not suitable for whole-share trading or PDT, and the entry time is 09:45, not 09:50, which is the manager's fill time. The data sources are https://runway.adityaperswal.workers.dev/data/stock-bars?feed=sip&adjustment=all&timeframe=15Min and https://personal.lse.ac.uk/polk/research/TugOfWar.pdf, and this is an adaptation, not an original stock monthly portfolio.
A frozen note from 1880 to 1882 describes a buy strategy observed at 09:30 when the gap is less than or equal to -0.5, based on the prior 20 days of ADR data, with a buy at 09:45. The strategy includes a stop loss at 1 ADR and a target at 1.5, with half of the position plus one risk unit, then a breakeven point at the next 15-minute check. The strategy exits at 15:45. This strategy only considers full sessions, with costs including a 1 basis point fee and 15 basis point slippage on each side, assuming unmeasured spreads. The order cash flows were verified against vectorbt. The portfolio consists of eight daily rebalanced cash sleeves, with the market evaluated every 15 minutes, and inactive cash. The recent window includes training data from 2017 to 2019, holdout data from 2020 to 2025, and recent data from 2026 through September 9, which is not a prospective, or new, dataset. All neighboring data points are retained, with no selection. The return is -7.922128%, with a drawdown of 7.942104%, 259 trades, a win rate of 35.135135%, an average win of 0.703699%, and an average loss of 0.770646%. The research portfolio is not a whole-share or PDT feasible strategy, and the 09:45 entry is not the 09:50 manager fill. The sources of the data include https://runway.adityaperswal.workers.dev/data/stock-bars?feed=sip&adjustment=all&timeframe=15Min and https://personal.lse.ac.uk/polk/research/TugOfWar.pdf. This is an adaptation, not an original stock monthly portfolio.
A frozen note from 1880 to 1882 describes a buy strategy observed at 09:30 with a gap of less than or equal to -0.5 prior to 20 ADR at 09:45. The strategy includes a stop loss at 1 ADR and a target at 1.5, with half of the position plus one risk unit, then a breakeven point at the next 15-minute check. The position was exited at 15:45. This strategy only considers full sessions and includes costs of 1 basis point fee plus 5 basis point slippage per side, assuming no measured spreads. The exact order cash flows were verified against vectorbt. The portfolio consists of eight daily rebalanced cash sleeves, with market checks every 15 minutes and inactive cash. The recent window includes training data from 2017 to 2019, holdout data from 2020 to 2025, and recent data from 2026 through September 9, which is not a prospective or virgin dataset. All neighbors were retained with no selection. The results show a return of -1.770402%, a drawdown of 4.245520%, 259 trades, a win rate of 43.629344%, an average win of 0.749110%, and an average loss of 0.673702%. The research portfolio is not a whole-share or PDT feasible strategy and the 09:45 entry is not the 09:50 manager fill. The sources of the data include https://runway.adityaperswal.workers.dev/data/stock-bars?feed=sip&adjustment=all&timeframe=15Min and https://personal.lse.ac.uk/polk/research/TugOfWar.pdf. This is an adaptation, not an original stock monthly portfolio.
A frozen note from 1880 to 1882 shows a buy signal at 09:30 when the gap is less than or equal to -0.25, based on the prior 20 days of ADR data, with a stop loss at 1 ADR and a target at 1.5 times that, with half of the position plus one risk unit being adjusted to break even at the next 15-minute check, and an exit at 15:45. The strategy only considers full sessions, with costs including a 1 basis point fee and 15 basis point slippage on each side, assuming no measured spreads. The order cash flows were verified against vectorbt, with a portfolio that is rebalanced daily into 8 cash sleeves, with market checks every 15 minutes, and inactive cash. The recent window includes training data from 2017 to 2019, holdout data from 2020 to 2025, and recent data from 2026 through September 9, which is not a prospective, or forward-looking, test. All neighboring data points are retained, with no selection. The return is -15.255118%, with a maximum drawdown of 15.255706%, 424 trades, a win rate of 30.896226%, an average win of 0.626137%, and an average loss of 0.728750%. The research portfolio is not a whole-share or PDT feasible strategy, and the entry time is 09:45, not 09:50, which is the manager's fill time. The sources of the data are https://runway.adityaperswal.workers.dev/data/stock-bars?feed=sip&adjustment=all&timeframe=15Min and https://personal.lse.ac.uk/polk/research/TugOfWar.pdf, and this is an adaptation, not an original stock monthly portfolio.
A frozen note from 1880 to 1882 shows a buy order was made at 09:30 when the gap was less than or equal to -0.25, based on the prior 20-day average daily range. The order had a stop loss at 1 ADR and a target at 1.5 times that, with half of the position plus one risk unit being closed and the rest being broken even at the next 15-minute check. The position was exited at 15:45. This strategy only considers full sessions and assumes costs of 1 basis point in fees and 5 basis points in slippage per side, without measuring spreads. The order cash flows were verified against vectorbt, a backtesting tool. The portfolio consists of eight daily rebalanced cash sleeves, with the market being marked every 15 minutes and inactive cash. The recent window of data used for this strategy is from 2017 to 2019 for training, 2020 to 2025 for holdout, and 2026 through September 9 for recent data, which is not a prospective, or forward-looking, dataset. All neighboring data points were retained without selection. The return on this strategy was -5.789755%, with a maximum drawdown of 6.552816%, 424 trades, a win rate of 41.981132%, an average win of 0.635228%, and an average loss of 0.650198%. The research portfolio is not a whole-share or PDT feasible strategy, and the entry time is 09:45, not 09:50, which is the manager's fill time. The data sources used are https://runway.adityaperswal.workers.dev/data/stock-bars?feed=sip&adjustment=all&timeframe=15Min and https://personal.lse.ac.uk/polk/research/TugOfWar.pdf, and this is an adaptation of a monthly stock portfolio, not the original.