ogallagher / marketsense Goto Github PK
View Code? Open in Web Editor NEWLeverage the human neural network to predict market asset values
License: Other
Leverage the human neural network to predict market asset values
License: Other
Depending on the training theory, one may or may not want to be able to see the sample’s market data (ex. prices) graph during training, in addition to the sound and color.
Currently there’s only one type of training session, which selects fully random samples, and the user guesses the mapped color after listening to the sample however many times they wish. The procedure that a training session follows should be an option in the dashboard’s new session form.
An example of an alternative training procedure:
This future-movement-sorted-samples training procedure would reinforce the notion of certain sounds seeming more red and others seeming more green, by grouping like colored sounds together.
This tutorial uses Java Sound to synthesize via custom sound waves (as opposed to MIDI with predefined instruments).
Line anything through which a stream of audio data passes.
Mixer a collection of input and output lines.
Clip as opposed to an audio stream (SourceDataLine), a clip contains a fully buffered sound.
timbre the voicing/instrument/shape of a pitch.
sample unit of audio, mono or stereo.
sample rate number of samples per second (how exactly a timbre can be defined).
As mentioned here, it is becoming a problem that the estimated interval size needed to fetch the desired number of trade bars for a sample during training is not enough, as it doesn’t account for closed exchange hours or weekends.
I’ve discovered the generated sound is not including the first data point when creating training market samples.
This involves being able to detect whether the market data universe for the given training session, and fetching from the twelvedata API to insert it if not.
For any bar width, there will be no holes within an interval once the market data is retrieved from the web, so the missing data will be all prior to what the database has, all after, or (rarely) both.
Java Persistence API (JPA), via javax.persistence
.
Derby database for Java via Java Database Connectivity (JDBC).
Include people, lessons, and saved market data. Audio will be stored in files.
Create a market sample data viewer (price/time graph) to help validate program accuracy and provide additional info about the sample. Include the start and end datetimes.
Start by attempting to use fxgraph as a canvas-based graphing library.
The only view of performance over time as of now is the training session history in the dashboard, which shows all sessions for the given user. A separate view for showing session scores history over time with filters for time, accounts, symbols, etc would graph different performance metrics over time for easier analysis and comparison.
Show the future movement in the visual market data graph when the color guess is submitted and the answer revealed.
I’m not sure how important a separate testing session would be, as it would still be backtesting like training, only that it would be used to create update your definitive score for that security overall, and maybe require a higher sample count.
Now that marketsense has a basic synthesizer I’ve been able to listen to some samples generated so far and am not yet satisfied with how distinguishable each generated timbre is, despite visible changes in waveform. I believe this could be improved by using one or both of the following:
The current delta range formula normalizes the future's difference with the last price against the range of consecutive differences in the sample. This could be considered flawed because the sign (<0.5 vs >0.5) of futureMovement
no longer necessarily reflects the sign of future - last
, if the direction within the sample is very uniform.
See below for an example of a misleading future movement with the current formula:
Rework the dashboard and training session scenes so that everything is cleaner.
Use dummy properties file in git, and real properties file in local env.
This will prevent having to modify the contents of the jar file to include a config.properties
renamed from config_dummy.properties
.
I believe I unwittingly solved this issue when adding default no-arg constructors to the entity classes involved.
A live session, as opposed to a training session, uses only the latest possible sample with a generated sound. The color guess widget then is mapped to the estimated future price, but the true future is not known so no score is calculated.
There is currently an empty list view for showing training session history, but it’s not populated with the trainingsession
db table yet.
I believe this is code 401
in Twelvedata.
So far the database stores people, but I’ll be creating tests to ensure Security
, TradeBar
, and TrainingSession
entities are properly stored and able to be retrieved directly and with joins.
I’ve only tested with 1-day trade bars for market samples so far, but want to support other bar sizes.
As of now, the gui dashboard screen has a New Training Session form to select a config (ex. stock symbol, prices per sample, number of samples, etc) and then launch a new training session. The corresponding persist-compatible TrainingSession
is then instantiated, but there is no training interface yet, and no update to the database.
Don’t refresh the performance view interface every time the user returns to it.
Currently, a TrainingSession
has a single score
, which is the average of accuracy scores for each market sample guessed vs actual future movement. This score would be more accurately represented as a confidence interval, given the mean score, standard deviation, and a desired confidence level to display.
TwelvedataClient
instanceA declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.