Turn a paper abstract into a testable stock factor experiment
A paper abstract can motivate a stock factor experiment without providing enough information to replicate the paper. Separate visible source rules, author-defined choices and unresolved requirements before calculating scores. Stop the original-replication path when a key rule is missing; run a separately named limited experiment only after its own contract is complete.
This guide reads the publisher’s title and abstract for Jegadeesh and Titman’s 1993 stock momentum paper. It does not claim access to that article’s full text. The executable example is a synthetic US long-only experiment with expressly different choices, not a reproduction of the paper’s historical returns. CoTrading paper-to-factor tools remain planned or unverified.
Record the exact visible source scope
The publisher page for Returns to Buying Winners and Selling Losers exposes its title, authors, publication details and abstract. The abstract describes stock winner/loser strategies and a range of holding periods. That supports identifying a broad momentum hypothesis, not filling every construction choice with a plausible default.
Create a source-scope record with the URL, version or publication identification, reading date and sections actually visible. A title-and-abstract tool should not report that it reviewed methodology tables or an appendix that it never obtained. If fuller material later becomes available, update the record rather than retroactively describe the original extraction as a full-paper review.
Distinguish the source’s reported findings from results produced by your code. This tutorial does not import the paper’s profitability into the synthetic account, estimate significance or claim that the same result holds now. A visible research claim is evidence of what the authors reported, not an executed test of a newly invented portfolio.
Build a rule-status matrix before coding
For every required field, assign one of three statuses: visible source rule, explicit author assumption or unresolved. The matrix should include market, historical universe, signal formula, formation interval, availability, ranking capacity, weighting, entry, exit, costs and treatment of unavailable securities. A fully formatted prompt does not make these fields known.
The abstract’s winner/loser idea identifies a hypothesis. It does not specify the exact two-observation interval, a single selected name, our synthetic US universe or our one-unit fees. Those are assumptions introduced here. In particular, a broad holding-period range cannot determine one unique rebalance schedule or prove whether overlapping portfolios were used.
Do not assign an assumed rule the source status merely because it is conventional. A familiar monthly convention may be reasonable for a new experiment while still differing from the original paper. Preserve that distinction in the output label and configuration. Otherwise a reader cannot tell whether a discrepancy reflects a failed replication or a different strategy altogether.
Stop when original-replication inputs are missing
The script first receives a deliberately incomplete specification containing only a declared US market assumption. It returns not_replicable, lists missing entry, exit, fee, lookback and slots, and sets performance to null. It does not invent an account value from the abstract or substitute a remembered historical return.
This gate is an intentional output, not a failed task. It identifies which evidence or choices are needed next. A workflow that always returns a numeric result can conceal uncertainty by converting every gap into a default. Keep the missing-field list attached to the original-replication request even if another exploratory branch later runs.
For a real research handoff, assign each unresolved item an evidence requirement: source methodology for an original rule, data documentation for availability or a declared new-experiment choice. Do not request unavailable full-text content from a tool that only reads metadata and then assume success. Source capability and financial-method completeness must be evaluated separately.
Declare a complete limited experiment
The separate author-defined experiment chooses US stocks, a two-interval price return, one selected name, entry at the next supplied open, exit at the following supplied open and a fictional fee of one for each executed order. Every one of these choices is labeled as our contract rather than extracted from the abstract.
Use three invented stocks with completed prices A [10, 11, 12], B [10, 10, 9] and C [10, 10, 11]. The score is the last divided by the first minus one. Scores are plus twenty percent, minus ten percent and plus ten percent. Descending selection chooses A with a stable identifier as a tie fallback.
These short fixture intervals are not claimed to be the paper’s formation or holding months. The long-only one-name portfolio also differs from a winner-minus-loser construction. The purpose is to make a bounded hypothesis executable while preserving the fact that the original-paper replication remains unresolved.
Trace the experiment into holdings and costs
Start with 1,000, buy forty A shares at the supplied next open twelve and pay one, leaving 519 cash. Sell at the supplied following open eleven and pay another one, receiving 439. Final cash is 958 and no shares remain. The twenty-percent formation score was a past ranking input, not the return earned during this later holding.
The synthetic account loses forty on price and two on fees. Its negative outcome is allowed and useful: a program must not replace it with the abstract’s positive research finding. Preserve score, selected stock, entry and exit events and cash separately so the source claim cannot leak into the calculated result through a convenient narrative.
The function labels the successful branch author_defined_experiment and sets paper_replication to false. It rejects unsupported complete specifications rather than pretend the fixed toy code is a general paper-to-strategy compiler. Expanding the experiment requires implementing and testing the new rule, not simply changing the metadata label.
Run both the stopping and computing paths
Download the complete example, save it as R571.py and run python R571.py with Python 3.12 or later. It uses only the standard library and synthetic data; the source is docs/growth/research/round-5/examples/R571.py.
Assertions require a null performance result for the incomplete request, the exact selected stock A, final cash 958 for the completed author contract and a false paper-replication flag. This pair of paths tests both epistemic stopping and actual calculation. Merely printing “not investment advice” would not enforce either boundary.
Review the experiment without upgrading its label
Package the source-scope record, rule-status matrix, complete author specification, synthetic input, executed output and missing original-rule list together. A reviewer should be able to identify which line came from the visible abstract and which choice was introduced for the demonstration. Keep a separate status for formula computability and original-paper fidelity.
If later methodology becomes available, compare it field by field with the author experiment. Change the rules and rerun only after documenting differences. A matching title or broadly similar momentum direction is not enough. Historical universe coverage, corporate actions, portfolio overlap, costs and unavailable securities can materially change the experiment even when the general hypothesis is unchanged.
The completion condition here is a reproducible limited experiment plus an honest stop on unsupported replication claims. It is not a completed historical paper replication, a model literature review or evidence of current profitability. Preserve unresolved performance as null until an actual relevant run exists, and archive every later version so source additions cannot silently rewrite the meaning of earlier results.
Preserve null as a meaningful result
An unresolved replication should retain a missing performance value, not zero. Zero would assert a measured flat result, while null says no qualifying original-rule calculation occurred. Keep that status visible in exported tables as well as prose so downstream summaries cannot accidentally average an unrun experiment with actual returns. The separately executed author experiment keeps its own nonreplication label and synthetic cash result.
FAQ
Can an abstract be enough for a full replication?
Only if all required rules and data requirements are actually specified. This visible abstract does not supply our complete construction.
Can I still run an author-defined experiment?
Yes, after stating every needed choice and labeling the result as a separate experiment rather than original-paper replication.