Liu, Xiong, Zhong, Yang and Walid (2018) train DDPG on DJIA 30 daily prices (2009–2018). State is prices, holdings, cash. Beats min-variance and DJIA on 2016–2018 Sharpe in-sample-style test. Plain-language intro. Not investment advice.
Takeaway. Markowitz is two-step: forecast means/cov, then allocate. Revising every day with costs is messy. This paper writes trading as an MDP and uses DDPG so the action can be a vector of buy/sell sizes instead of a gigantic discrete grid.
Practical Deep Reinforcement Learning Approach for Stock Trading (Xiao-Yang Liu, Zhuoran Xiong, Shan Zhong, Hongyang Yang, Anwar Walid, 2018; arXiv:1811.07522). Columbia + Nokia Bell Labs. DJIA 30 as of 1 Jan 2016; Compustat daily 2009-01-01 to 2018-09-30.
Fit for learners: DDPG on DJIA 30 daily bars — the Columbia paper that later grew into FinRL; a concrete actor-critic trading MDP.
This Hub note is a plain-language intro. Not investment advice.
Dynamic programming on a 30-name book explodes: holdings are integers, prices are continuous. DQN’s max-over-actions is hopeless. You want a deterministic actor (\mu(s)) that outputs the whole book’s trades at once.
No transaction cost in the published MDP; daily bars only; DJIA 30 survivorship as of 2016. A research back-test.
This is the Columbia DDPG trading note that the FinRL line cites. Once you can write state = concat(price, lots, cash), the rest is library PPO/DDPG.
Tiny evening exercise: two names, (p=(10, 20)), (h=(3, 0)), (b=25). Is buying 2 shares of name 2 feasible? After a sell of 1 share of name 1 first? Learning only.
Landing: arXiv abs
Not investment advice. This Hub note is educational only. Liu–Xiong–Zhong–Yang–Walid is an academic DDPG on 30 US names—not a recommendation to run actor-critic size with real capital.
Single course CTA: SoloQuant Academy’s Introduction to Python Programming—concatenating three arrays into one state vector is list-and-loop work, not magic.