Have you ever wanted to showcase your portfolio and its performance to your friends? What about discovering new portfolio strategies from others? Well then, portfolio.io is the platform for you! Introducing a new place to share your investment portfolio with your friends, test new strategies, and gain new insights through the power of LLM retrieval-augmented generation!
To get started, you'll need a Supabase account and a table. See .env.example for more details. Make sure to either disable RLS (not recommended) or add a new policy!
You'll also need a MongoDB account with a collection, and then set up your vector index (see vector_index.json). This will be used for the RAG chatbot feature.
edgartools==2.22.1
langchain==0.1.20
langchain-mongodb==0.1.5
langchain-openai==0.1.7
openai==1.30.1
plotly==5.20.0
pymongo==4.6.3
python-dotenv==1.0.1
streamlit==1.33.0
st_pages==0.4.5
supabase==1.0.3
yfinance==0.2.12
Streamlit was used to create the web app frontend and UI.
Supabase was used to store the information for each user (emails, passwords, portfolio details, etc), in order to display analytics regarding portfolio performances.
yfinance was used to retrieve historical stock information.
edgartools was the package used to retrieve EDGAR filings, specifically listed company 10-K's and 10-Q's, to embed within MongoDB Atlas Vector Store.
MongoDB was used to store the vector embeddings, as well as create the index for vector search.
LangChain was used to actually perform the embedding and vector search within the code.
OpenAI's embedding model (text-embedding-ada-002) and the LLM for retrieval Q&A (text-davinci-003) were integrated with LangChain to power the AI Stock Insights feature.
- Create friends feature, where you can view your friends' portfolio performances
- Create better frontend and improve UI
The AI Stock Insights feature was based on the Mango10K RAG chatbot built by my team, Mango10K, for MongoDB's 2024 GenAI Hackathon.
This project is licensed under the MIT License - see the LICENSE file for details.