bullwatcher's People
bullwatcher's Issues
Clean up routes with common serialization and support for 404/None
Add sector performances to the main page, below market indices
Add SSL support to site
Update stock daily sync to use raw insert and remove "100 per request"
Using the raw insert, we can insert in batches of at least 5,000. each day, there should be approximately 5,500 new dailies (1 per ticker). We can load them all through IEX in about 55 calls to IEX (100 per batch request). This should all take less than 1 minute.
Add current day data to the stock chart
Horizonal line on chart should always follow the price.
Sector name in details page is the id, not name.
Probably refactor the sector stuff into a store with nice helpers.
Search suggestions by company name and ticker
Add SSL support to API
patterns/flags api should return the date
since the caller is not passing in the date, they have no idea what day the patterns are for. for consistency, also change /patterns/flags/
{
date: '2017-07-04',
stocks: [
...
]
}
Add "finished sync" state in database to signal completion of different sync
Add logging to AWS
Add API to get sector performance per time window
Want to show this on the stock detail page. Suggest opportunistically storing in the database instead of its own formal "sync". The first time the sector data is loaded for any stock on a particular day, we can update the database.
Add support for hiding alphavantage queries through API
Currently we use AlphaVantage for indices. Do this logic in the service and cache the results for at least 5 min so we don't get throttled.
Create common component container for paging stocks
So far used by rankings and flags pages. Will be easier to mess with the design if its factored out.
Add support for getting indices "metadata" (at least name)
ETFs/Indices don't have any metadata
Create API for all sectors, mapping due to inconsistency in DB
Here is the current data in the database (sector --> count of ticker)
[('Financial Services', 1315),
('Healthcare', 857),
('Technology', 753),
('Industrials', 678),
('Consumer Cyclical', 599),
('Energy', 338),
('Basic Materials', 302),
('Real Estate', 284),
('Finance', 237),
('Consumer Defensive', 216),
('Utilities', 110),
('Communication Services', 93),
('Public Utilities', 58),
('Consumer Services', 56),
('Health Care', 47),
('Transportation', 13),
('Consumer Durables', 11),
('Consumer Non-Durables', 10),
('', 9),
('Miscellaneous', 9),
('Capital Goods', 7),
('Basic Industries', 5)]
Add filter on sector to rankings page
Decorator for timing calls to database and external services
Add last updated timestamp to StockMetadataModel
Strange import chains lead to errors with mypy annotations
[Mon Aug 13 07:34:50.722322 2018] [:error] [pid 9535] [remote 127.0.0.1:44] AttributeError: module 'app.database.models' has no attribute 'User'
[Mon Aug 13 07:34:51.727972 2018] [:error] [pid 9535] [remote 127.0.0.1:28976] mod_wsgi (pid=9535): Target WSGI script '/opt/python/current/app/application.py' cannot be loaded as Python module.
[Mon Aug 13 07:34:51.728021 2018] [:error] [pid 9535] [remote 127.0.0.1:28976] mod_wsgi (pid=9535): Exception occurred processing WSGI script '/opt/python/current/app/application.py'.
[Mon Aug 13 07:34:51.728137 2018] [:error] [pid 9535] [remote 127.0.0.1:28976] Traceback (most recent call last):
[Mon Aug 13 07:34:51.728173 2018] [:error] [pid 9535] [remote 127.0.0.1:28976] File "/opt/python/current/app/application.py", line 29, in <module>
[Mon Aug 13 07:34:51.728177 2018] [:error] [pid 9535] [remote 127.0.0.1:28976] import app.database.models
[Mon Aug 13 07:34:51.728183 2018] [:error] [pid 9535] [remote 127.0.0.1:28976] File "/opt/python/current/app/app/database/models.py", line 1, in <module>
[Mon Aug 13 07:34:51.728186 2018] [:error] [pid 9535] [remote 127.0.0.1:28976] from application import db
[Mon Aug 13 07:34:51.728190 2018] [:error] [pid 9535] [remote 127.0.0.1:28976] File "/opt/python/current/app/application.py", line 33, in <module>
[Mon Aug 13 07:34:51.728193 2018] [:error] [pid 9535] [remote 127.0.0.1:28976] from app import routes
[Mon Aug 13 07:34:51.728198 2018] [:error] [pid 9535] [remote 127.0.0.1:28976] File "/opt/python/current/app/app/routes.py", line 1, in <module>
[Mon Aug 13 07:34:51.728201 2018] [:error] [pid 9535] [remote 127.0.0.1:28976] from app.handlers.stocks import patterns_handler, stocks_handler, stocks_sync
[Mon Aug 13 07:34:51.728206 2018] [:error] [pid 9535] [remote 127.0.0.1:28976] File "/opt/python/current/app/app/handlers/stocks/patterns_handler.py", line 3, in <module>
[Mon Aug 13 07:34:51.728209 2018] [:error] [pid 9535] [remote 127.0.0.1:28976] from app.data_access import bullwatcherdb
[Mon Aug 13 07:34:51.728214 2018] [:error] [pid 9535] [remote 127.0.0.1:28976] File "/opt/python/current/app/app/data_access/bullwatcherdb/__init__.py", line 2, in <module>
[Mon Aug 13 07:34:51.728216 2018] [:error] [pid 9535] [remote 127.0.0.1:28976] from app.data_access.bullwatcherdb.users import create_user, get_all_users, get_user, upsert_user
[Mon Aug 13 07:34:51.728221 2018] [:error] [pid 9535] [remote 127.0.0.1:28976] File "/opt/python/current/app/app/data_access/bullwatcherdb/users.py", line 40, in <module>
[Mon Aug 13 07:34:51.728224 2018] [:error] [pid 9535] [remote 127.0.0.1:28976] def _convert_db_user_to_domain(db_user: models.User) -> User:
Add filters for paging to the rankings API and site
Add lambda calls for ~/patterns/sync and ~/rankings/sync
StockDaily prices are stored as Integer and not Float
Show essential stats under chart on details page
Sector
Market Cap
OHLC
2y, 1y, 6m, 3m, 1m, 2w price trends (using rankings apis)
Add API to get the ranking data for a single stock
~/ticker/rankings/price_change_percent
[
{ 2w, ... },
{ 1m, ... },
...
]
Create ranking pages
Two pages:
--- 1: Bulls (top gainers)
--- 2: Bears (top losers)
Filters:
--- 1: minimum market cap
--- 2: sector
Use paging, 10 or so tickers per page.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.