Invest Alchemy is a trade assistant for A share stock market.
-
Feature
- Strategy
- Double MA
- Turtle
- Backtrace MA250
- Breakthrough Platform
- Keep Increasing
- Low Atr
- Market
- Index Historical P/E Ratio
- Base database store baseline (10%) and popular indexs performance (000905/000300/399006/HSI/IXIC/INX)
- Portfolio
- Transaction/Funding/Holding/NetValue/Performance Ledger
- Add popular indexs net value compare Ledger
- Support trade A share ETF/LOF funds
- Support trade A share stock
- Support trade A public funds (not include ETF/LOF)
- Trader
- User
- User portfolio calculation support
- Robot
- Double MA (11/22)
- Long ETF strategy robot trader
- All In strategy robot trader
- Periodic Payment strategy robot trader
- Double MA (11/22)
- User
- Web UI
- Re-Design web UI page 🚩
- Notify
- Telegram bot/channel
- Show different strategy signal (daily)
- Show different trade robot portfolio performance report (weekly)
- Strategy
-
Arch Improve
- Storage
- Add database schema migration tool
- SQLite DB backup to AWS S3
- Trade data store in SQLite DB
- Base Database migrate from SQLite to Supabase(PostgreSQL)
- Storage
-
Bug Fix
- Trading signals error when double ma price are same
-
Trade strategy
-
Issue
- Split-adjusted share prices: Use
qfq
adjust price to generate trade signals.
- Split-adjusted share prices: Use
- Split-adjusted share prices: Not processed in the trading ledger (only robots, user trader need add a transaction when split-adjusted happens), but processed in the holding ledger calculation.
- 🐛 Robot user still can not process, because split-adjusted check on the portfolio net value ledger calculation, but sell transaction amount do not equal to holding amount because sell transaction generated on the transaction ledger calculation, so it needs to process on portfolio net value calculation when user is a robot type.
Fix this issue by: robot trader useqfq
adjust price while user trader use close price when calculate the portfolio net value (include transaction/holdings/net value ledger calculation), user trader need add a transaction when split-adjusted happens to adjust the hold amount.qfq
cannot fix this issue, because if the split-adjusted share happens,qfq
only change it's hsitory price, e.g. the day before split-adjusted day, 512100.SH price is 1, today the price is 2, if the hold amount is not changed, the market value of it will change to twice than before.
- It must change the hold amout when split-adjusted happens and this must happens on the generated transaction csv file phase (if not, the robot trader can not know what amount it can sell).
- 🐛 Robot user still can not process, because split-adjusted check on the portfolio net value ledger calculation, but sell transaction amount do not equal to holding amount because sell transaction generated on the transaction ledger calculation, so it needs to process on portfolio net value calculation when user is a robot type.
- About the slippage issue: Since the underlying traded are daily level ETFs, the impact of slippage issues is minimal.
- No liquidity issues: Because simulation trading cannot know the liquidity of the transaction of the day, such as A shares max up and down the restrictions caused the inability to deal, there is a certain deviation from the actual transaction, which is also the charm of the real deal, there is a certain amount of uncertainty brought about by the change.
- About dividends: The robot trader will ignore the case of dividends on the holding position, because the calculation will be complicated. However, real user trader can manually record dividends as one transaction.