Git Product home page Git Product logo

qapp's Introduction



Twitter Twitch Linkedin GitHub
C C++ MariaDB
Windows Linux MacOS
GitHubActions Hostinger

๐Ÿ“‹ Table of Contents

  1. ๐Ÿ’ฅ Genesis
  2. โšก๏ธ Quick Start
  3. ๐ŸŒด Features
    1. ๐Ÿ“ List of features
    2. ๐Ÿค Missing a specific feature ?
    3. ๐Ÿ”Ž Found a bug ?
  4. ๐Ÿ™Œ How can I contribute ?
  5. ๐Ÿ’ป Insights
    1. ๐Ÿฏ Developement
    2. ๐Ÿ Build
    3. ๐ŸŠ Tests
    4. ๐Ÿˆ Continuous Integration
    5. ๐Ÿ‡ Continuous Delivery
  6. ๐Ÿ“œ Licence
"Design, price and manage your own exotic financial derivatives contracts"

๐ŸŽฎ ๐ช๐€๐๐ (Quantitative Analytics Application) is a simple ecosystem of devices that helps the users to ๐‘๐‘ข๐‘–๐‘™๐‘‘, ๐‘๐‘Ÿ๐‘–๐‘๐‘’ and ๐‘Ž๐‘›๐‘Ž๐‘™๐‘ฆ๐‘ ๐‘’ customized financial derivatives contracts.

โœ๐Ÿป This flowcharts shows the architecture of the project together with which components the user can consume.

โฉ ๐‘ž๐ถ๐‘‚๐‘…๐ธ (private) is the aggregation of embedded private libraries in charge of implementing ๐˜ค๐˜ฐ๐˜ฏ๐˜ต๐˜ณ๐˜ข๐˜ค๐˜ต, ๐˜ฅ๐˜ข๐˜ต๐˜ข, ๐˜ฎ๐˜ฐ๐˜ฅ๐˜ฆ๐˜ญ and ๐˜ฑ๐˜ณ๐˜ช๐˜ค๐˜ฆ๐˜ณ architectures. Its codebase is hosted on a private GitHub repository which access is restricted to our developpers only.

โฉ ๐‘ž๐ด๐‘ƒ๐ผ (public) is the shared object that the user can plug into his or her personal project. A library of functions that request the core to perform generic actions such as getting contract information, getting price and greeks ...

โฉ qDSL (public) is the internal contract description that uses the power of domain-specific language. A language easily understandable by human and machine to design your contract from a self-explanatory script. The whole ecosystem is built around this.

โฉ ๐‘ž๐บ๐‘ˆ๐ผ (public) is the up and running GUI desktop application from which the user requests the API and visualize the results through a modern graphical interface.

Architecture

To download the latest version of our application, go to Releases and download the asset that corresponds to your operating system. After extracting all the files into a nice location of your machine, you are falling onto a folder that contains qAPP directory. Open the qGUI executable located at qAPP/bin and you arrive to the main page with an example.

  1. ๐Ÿ“บ How to plug qAPI with my project ?
  2. ๐Ÿ“บ How to use the ladders ?
  3. ๐Ÿ“บ How to use the Heston parameters smile impact viewer ?

The project is very far from being complete (and will probably never be ...) and a loads of features are still missing. This is why our developpers are working continuously to enrich the list of available functionalities. Feel free to share your ideas under the tag features ! We are happy to discuss with you about your personnal needs and the feasibility of your project.

Note

If your idea is considered as doable by our team, be sure that your request will be added to our stack. But please kindly understand that we cannot give any ETA since our developers are working for qAPP as volunteers aside their job and our backlog is already populated by a thousand of new fields to explore.

Feel free to report your issue (see How can I report my issue) with a respective title and an understandable description.

Important

qAPP embbeds a mecanism to save and open your current mockup for further usage. If possible please attach your mockup file together with the relevant data json and contract external files in your issue, it helps our developpers to reproduce the bug and increase the chances for us to sort it quickly. See How can I report my issue for further details on how to proceed.

We are building a payoff base to:

  • Challenge our tool and push it to its limits.
  • Enhance our unit and integration tests.

We propose to every structured products and programmer enthusiasts to contribute its favorite payoff within a shared folder. Here is the process to follow:

git clone https://github.com/matt-charr/qAPP.git
  • Drop your contract python file(s) into qAPP/factory folder.
mv my_contract.py qAPP/factory/my_contract.py
  • Commit, push and pull request.
cd qAPP 
git commit -am "Added my contract"
git push origin master

Once a bug or a feature is submitted, an issue is created with the corresponding flag (bug, feature, project, activity, misc). Once picked from the stack, a dev branch is created, comes down locally to the developper machine and this is where the fun begins ๐Ÿ˜ƒ

qAPP uses CMake as a build system and has its main code base located on a private repository which access is restricted to our developers only. Besides, it relies on a bunch of repository dependencies that are required at qAPP build time.
It is to the following projects that we owe our heartfelt thanks for their generous open source contribution.

To load the below dependencies, qAPP uses the power of superbuild feature from CMake. For that purpose, an embedded CMake project is in charge of cloning, building and installing all the dependencies that qAPP requires into a specific folder. That's pretty cool, isn't it ? ๐Ÿ˜ƒ

In order to ensure that the code change effect is not broken by any subsequent modifications, at the end of each dev session, a new unit test is required to be submitted to the test suite together with a contract file that replicates the expected behavior of the code change.

qAPP embbeds a custom GitHub action that runs at each pull requests. Once a pull request is submitted, build and tests are triggered on our Windows, Linux and MacOS self-hosted runners in Debug/Release mode with the below configurations. A dev branch is merged if and only if all builds and tests passed on all tested configurations.

Name OS Provider RAM CMake CMake Generator Build Type Compiler Build Status
Win32-MinGW Windows 10 - 8.00 GB CMake-3.28.3 MinGW Makefiles Release & Debug GCC-13.2.0 โœ…
Win32-MSVC Windows 10 - 8.00 GB CMake-3.28.3 Visual Studio 17 2022 Release & Debug MSVC-19.30.30709.0 โœ…
Linux Ubuntu 22.04 Hostinger 8.00 GB CMake-3.22.1 Unix Makefiles Release & Debug GCC-11.4.0 โœ…
MacOS Sonoma 14.4 UltaHost 2.00 GB CMake-3.28.3 Unix Makefiles Release & Debug CLANG-1500.3.9.4 โœ…

CICD

Our team delivers a release on a weekly basis:

  • ~One major release per year (coming out with the current project)
  • ~One minor release per month (coming out with the current feature)
  • ~One patch release per week (coming out with the current bug)

To publish a new release, each tag created on our developement repository triggers a github actions that for each OS supported will create and upload the package to qAPP.

Important

We are far from being CD experts and know that our solution looks like a rush, better ways of releasing probably exist such as deploying binaries to a more convenient location than GitHub or building on a dedicated production environement. You are more than welcome to suggest improvements or just simply share your CD work styles.

Copyright ยฉ 2024 qAPP - Quantitative Analytics. All rights reserved.
This file is part of the project qAPP - Quantitative Analytics Application. 
Hence the latter remains the exclusive property of its author. 
Accordingly, no part of this document may be used or transmitted 
in any form for professional, educational or commercial purposes 
without the express permission of Matthieu Charrier.

๐Ÿ™Œ Feedbacks more than welcome.
โญ Star the project on GitHub helps it to progress.
๐Ÿ”” Reach us at https://github.com/matt-charr/qAPP/issues if:
โšซ You need ๐˜€๐—ผ๐—บ๐—ฒ ๐—ต๐—ฒ๐—น๐—ฝ ๐˜๐—ผ ๐˜€๐˜๐—ฎ๐—ฟ๐˜.
โšซ You want to ๐—ฝ๐—ฟ๐—ผ๐—ฝ๐—ผ๐˜€๐—ฒ ๐—ฎ ๐—ป๐—ฒ๐˜„ ๐—ณ๐—ฒ๐—ฎ๐˜๐˜‚๐—ฟ๐—ฒ.
โšซ You want to ๐˜€๐˜‚๐—ฏ๐—บ๐—ถ๐˜ ๐—ฎ ๐—ฐ๐—ผ๐—ป๐˜๐—ฟ๐—ฎ๐—ฐ๐˜.
โšซ You want to ๐—ฟ๐—ฒ๐—ฝ๐—ผ๐—ฟ๐˜ ๐—ฎ๐—ป ๐—ถ๐˜€๐˜€๐˜‚๐—ฒ.

qapp's People

Contributors

matt-charr avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.