mirror of
https://github.com/wilsonfreitas/awesome-quant.git
synced 2026-07-27 20:07:50 +00:00
557 lines
55 KiB
HTML
557 lines
55 KiB
HTML
<!DOCTYPE html>
|
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head>
|
|
|
|
<meta charset="utf-8">
|
|
<meta name="generator" content="quarto-1.4.550">
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
|
|
|
|
|
|
<title>Awesome Quant - Projects</title>
|
|
<style>
|
|
code{white-space: pre-wrap;}
|
|
span.smallcaps{font-variant: small-caps;}
|
|
div.columns{display: flex; gap: min(4vw, 1.5em);}
|
|
div.column{flex: auto; overflow-x: auto;}
|
|
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
|
|
ul.task-list{list-style: none;}
|
|
ul.task-list li input[type="checkbox"] {
|
|
width: 0.8em;
|
|
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
|
|
vertical-align: middle;
|
|
}
|
|
</style>
|
|
|
|
|
|
<script src="site_libs/quarto-nav/quarto-nav.js"></script>
|
|
<script src="site_libs/quarto-nav/headroom.min.js"></script>
|
|
<script src="site_libs/clipboard/clipboard.min.js"></script>
|
|
<script src="site_libs/quarto-search/autocomplete.umd.js"></script>
|
|
<script src="site_libs/quarto-search/fuse.min.js"></script>
|
|
<script src="site_libs/quarto-search/quarto-search.js"></script>
|
|
<meta name="quarto:offset" content="./">
|
|
<script src="site_libs/quarto-html/quarto.js"></script>
|
|
<script src="site_libs/quarto-html/popper.min.js"></script>
|
|
<script src="site_libs/quarto-html/tippy.umd.min.js"></script>
|
|
<script src="site_libs/quarto-html/anchor.min.js"></script>
|
|
<link href="site_libs/quarto-html/tippy.css" rel="stylesheet">
|
|
<link href="site_libs/quarto-html/quarto-syntax-highlighting.css" rel="stylesheet" id="quarto-text-highlighting-styles">
|
|
<script src="site_libs/bootstrap/bootstrap.min.js"></script>
|
|
<link href="site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
|
|
<link href="site_libs/bootstrap/bootstrap.min.css" rel="stylesheet" id="quarto-bootstrap" data-mode="light">
|
|
<script id="quarto-search-options" type="application/json">{
|
|
"location": "navbar",
|
|
"copy-button": false,
|
|
"collapse-after": 3,
|
|
"panel-placement": "end",
|
|
"type": "overlay",
|
|
"limit": 50,
|
|
"keyboard-shortcut": [
|
|
"f",
|
|
"/",
|
|
"s"
|
|
],
|
|
"show-item-context": false,
|
|
"language": {
|
|
"search-no-results-text": "No results",
|
|
"search-matching-documents-text": "matching documents",
|
|
"search-copy-link-title": "Copy link to search",
|
|
"search-hide-matches-text": "Hide additional matches",
|
|
"search-more-match-text": "more match in this document",
|
|
"search-more-matches-text": "more matches in this document",
|
|
"search-clear-button-title": "Clear",
|
|
"search-text-placeholder": "",
|
|
"search-detached-cancel-button-title": "Cancel",
|
|
"search-submit-button-title": "Submit",
|
|
"search-label": "Search"
|
|
}
|
|
}</script>
|
|
<script src="site_libs/htmlwidgets-1.6.4/htmlwidgets.js"></script>
|
|
<link href="site_libs/datatables-css-0.0.0/datatables-crosstalk.css" rel="stylesheet">
|
|
<script src="site_libs/datatables-binding-0.31/datatables.js"></script>
|
|
<script src="site_libs/jquery-3.6.0/jquery-3.6.0.min.js"></script>
|
|
<link href="site_libs/dt-core-1.13.6/css/jquery.dataTables.min.css" rel="stylesheet">
|
|
<link href="site_libs/dt-core-1.13.6/css/jquery.dataTables.extra.css" rel="stylesheet">
|
|
<script src="site_libs/dt-core-1.13.6/js/jquery.dataTables.min.js"></script>
|
|
<link href="site_libs/crosstalk-1.2.1/css/crosstalk.min.css" rel="stylesheet">
|
|
<script src="site_libs/crosstalk-1.2.1/js/crosstalk.min.js"></script>
|
|
<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-7994446359957143" crossorigin="anonymous"></script>
|
|
|
|
|
|
<link rel="stylesheet" href="styles.css">
|
|
</head>
|
|
|
|
<body class="nav-fixed">
|
|
|
|
<div id="quarto-search-results"></div>
|
|
<header id="quarto-header" class="headroom fixed-top">
|
|
<nav class="navbar navbar-expand-lg " data-bs-theme="dark">
|
|
<div class="navbar-container container-fluid">
|
|
<div class="navbar-brand-container mx-auto">
|
|
<a class="navbar-brand" href="./index.html">
|
|
<span class="navbar-title">Awesome Quant</span>
|
|
</a>
|
|
</div>
|
|
<div id="quarto-search" class="" title="Search"></div>
|
|
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
|
|
<span class="navbar-toggler-icon"></span>
|
|
</button>
|
|
<div class="collapse navbar-collapse" id="navbarCollapse">
|
|
<ul class="navbar-nav navbar-nav-scroll me-auto">
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="./index.html">
|
|
<span class="menu-text">Home</span></a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link active" href="./projects.html" aria-current="page">
|
|
<span class="menu-text">Projects</span></a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="./CODE_OF_CONDUCT.html">
|
|
<span class="menu-text">Code of Conduct</span></a>
|
|
</li>
|
|
</ul>
|
|
</div> <!-- /navcollapse -->
|
|
<div class="quarto-navbar-tools">
|
|
</div>
|
|
</div> <!-- /container-fluid -->
|
|
</nav>
|
|
</header>
|
|
<!-- content -->
|
|
<div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
|
|
<!-- sidebar -->
|
|
<!-- margin-sidebar -->
|
|
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
|
|
|
|
</div>
|
|
<!-- main -->
|
|
<main class="content" id="quarto-document-content">
|
|
|
|
<header id="title-block-header" class="quarto-title-block default">
|
|
<div class="quarto-title">
|
|
<h1 class="title">Projects</h1>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="quarto-title-meta">
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</header>
|
|
|
|
|
|
<p>Compilation of projects providing access to the date of last commit or publication date.</p>
|
|
<div id="tbl-projects" class="cell quarto-float anchored" data-table.cap="Projects">
|
|
<figure class="quarto-float quarto-float-tbl figure">
|
|
<figcaption class="quarto-float-caption-top quarto-float-caption quarto-float-tbl" id="tbl-projects-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
|
|
Table 1: Projects
|
|
</figcaption>
|
|
<div aria-describedby="tbl-projects-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
|
|
<div class="datatables html-widget html-fill-item" id="htmlwidget-e6d336d967aece10b2d2" style="width:100%;height:auto;"></div>
|
|
<script type="application/json" data-for="htmlwidget-e6d336d967aece10b2d2">{"x":{"filter":"none","vertical":false,"data":[["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64","65","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80","81","82","83","84","85","86","87","88","89","90","91","92","93","94","95","96","97","98","99","100","101","102","103","104","105","106","107","108","109","110","111","112","113","114","115","116","117","118","119","120","121","122","123","124","125","126","127","128","129","130","131","132","133","134","135","136","137","138","139","140","141","142","143","144","145","146","147","148","149","150","151","152","153","154","155","156","157","158","159","160","161","162","163","164","165","166","167","168","169","170","171","172","173","174","175","176","177","178","179","180","181","182","183","184","185","186","187","188","189","190","191","192","193","194","195","196","197","198","199","200","201","202","203","204","205","206","207","208","209","210","211","212","213","214","215","216","217","218","219","220","221","222","223","224","225","226","227","228","229","230","231","232","233","234","235","236","237","238","239","240","241","242","243","244","245","246","247","248","249","250","251","252","253","254","255","256","257","258","259","260","261","262","263","264","265","266","267","268","269","270","271","272","273","274","275","276","277","278","279","280","281","282","283","284","285","286","287","288","289","290","291","292","293","294","295","296","297","298","299","300","301","302","303","304"],["<a href='https://github.com/StockSharp/StockSharp'>StockSharp<\/a>","<a href='https://github.com/ccxt/ccxt'>ccxt<\/a>","<a href='https://github.com/man-group/ArcticDB'>ArcticDB<\/a>","<a href='https://github.com/freqtrade/freqtrade'>freqtrade<\/a>","<a href='https://github.com/highfestiva/finplot'>finplot<\/a>","<a href='https://github.com/Rdatatable/data.table'>data.table<\/a>","<a href='https://github.com/avhz/RustQuant'>RustQuant<\/a>","<a href='https://github.com/QuantConnect/Lean'>QuantConnect<\/a>","<a href='https://github.com/amaggiulli/qlnet'>QLNet<\/a>","<a href='https://github.com/ghostfolio/ghostfolio'>Ghostfolio<\/a>","<a href='https://github.com/goldmansachs/gs-quant'>gs-quant<\/a>","<a href='https://github.com/yellowbean/AbsBox'>AbsBox<\/a>","<a href='https://github.com/gnzsnz/jupyter-quant'>Jupyter Quant<\/a>","<a href='https://github.com/alkaline-ml/pmdarima'>pmdarima<\/a>","<a href='https://github.com/Drakkar-Software/OctoBot'>OctoBot<\/a>","<a href='https://github.com/QuantConnect/Lean'>Lean<\/a>","<a href='https://github.com/braverock/FactorAnalytics'>FactorAnalytics<\/a>","<a href='https://github.com/jo-cho/Technical_Analysis_and_Feature_Engineering'>Technical Analysis and Feature Engineering<\/a>","<a href='https://github.com/gerrymanoim/exchange_calendars'>exchange_calendars<\/a>","<a href='https://github.com/maread99/market_prices'>market-prices<\/a>","<a href='https://github.com/OpenBB-finance/OpenBBTerminal'>OpenBB Terminal<\/a>","<a href='https://github.com/Boulder-Investment-Technologies/lppls'>lppls<\/a>","<a href='https://github.com/braverock/PerformanceAnalytics'>PerformanceAnalytics<\/a>","<a href='https://github.com/hydrosquall/tiingo-python'>tiingo<\/a>","<a href='https://github.com/jindaxiang/akshare'>akshare<\/a>","<a href='https://github.com/skfolio/skfolio'>skfolio<\/a>","<a href='https://github.com/mrjbq7/ta-lib'>TA-Lib<\/a>","<a href='https://github.com/AI4Finance-LLC/FinRL-Library'>FinRL-Library<\/a>","<a href='https://github.com/nkaz001/hftbacktest'>hftbacktest<\/a>","<a href='https://github.com/domokane/FinancePy'>FinancePy<\/a>","<a href='https://github.com/coding-kitties/investing-algorithm-framework'>Investing algorithm framework<\/a>","<a href='https://github.com/joshuaulrich/TTR'>TTR<\/a>","<a href='https://github.com/LastAncientOne/Stock_Analysis_For_Quant'>Stock_Analysis_For_Quant<\/a>","<a href='https://github.com/PythonCharmers/QuantFinance'>QuantFinance<\/a>","<a href='https://github.com/wilsonfreitas/python-bizdays'>bizdays<\/a>","<a href='https://github.com/wilsonfreitas/R-bizdays'>bizdays<\/a>","<a href='https://github.com/rsheftel/pandas_market_calendars'>pandas_market_calendars<\/a>","<a href='https://github.com/ranaroussi/yfinance'>yfinance<\/a>","<a href='https://github.com/dppalomar/riskparity.py'>riskparity.py<\/a>","<a href='https://github.com/ScottfreeLLC/AlphaPy'>AlphaPy<\/a>","<a href='https://github.com/nautechsystems/nautilus_trader'>nautilus_trader<\/a>","<a href='https://github.com/theOGognf/finagg'>finagg<\/a>","<a href='https://github.com/ssantoshp/Empyrial'>Empyrial<\/a>","<a href='https://github.com/dcajasn/Riskfolio-Lib'>Riskfolio-Lib<\/a>","<a href='https://github.com/robcarver17/pysystemtrade'>pysystemtrade<\/a>","<a href='https://github.com/matplotlib/mplfinance'>mplfinance<\/a>","<a href='https://github.com/awslabs/gluon-ts'>gluon-ts<\/a>","<a href='https://github.com/mhallsmoore/qstrader'>QSTrader<\/a>","<a href='https://github.com/joshuaulrich/xts'>xts<\/a>","<a href='https://github.com/timkpaine/pyEX'>pyEX<\/a>","<a href='https://github.com/pmorissette/bt'>bt<\/a>","<a href='https://github.com/zvtvz/zvt'>zvt<\/a>","<a href='https://github.com/cinar/indicatorts'>IndicatorTS<\/a>","<a href='https://github.com/polakowo/vectorbt'>vectorbt<\/a>","<a href='https://github.com/bbcho/finoptions-dev'>finoptions<\/a>","<a href='https://github.com/FinanceData/FinanceDataReader'>FinanceDataReader<\/a>","<a href='https://github.com/man-group/dtale'>D-Tale<\/a>","<a href='https://github.com/blue-yonder/tsfresh'>tsfresh<\/a>","<a href='https://github.com/MathisWellmann/trade_aggregation-rs'>TradeAggregation<\/a>","<a href='https://github.com/JuliaData/DataFrames.jl'>DataFrames.jl<\/a>","<a href='https://github.com/jrmeier/fast-trade'>fast-trade<\/a>","<a href='https://github.com/jrmeier/fast-trade'>fast-trade<\/a>","<a href='https://github.com/jankrepl/deepdow'>DeepDow<\/a>","<a href='https://github.com/wilsonfreitas/rbcb'>rbcb<\/a>","<a href='https://github.com/ricequant/rqalpha'>rqalpha<\/a>","<a href='https://github.com/edtechre/pybroker'>PyBroker<\/a>","<a href='https://github.com/femtotrader/IncTA.jl'>IncTA.jl<\/a>","<a href='https://github.com/MathisWellmann/lfest-rs'>LFEST<\/a>","<a href='https://github.com/Marigold/universal-portfolios'>universal-portfolios<\/a>","<a href='https://github.com/cinar/indicator'>IndicatorGo<\/a>","<a href='https://github.com/Nnamdi-sys/finalytics'>finalytics<\/a>","<a href='https://github.com/Drakkar-Software/OctoBot-Script'>OctoBot Script<\/a>","<a href='https://github.com/alpacahq/alpaca-trade-api-python'>alpaca-trade-api<\/a>","<a href='https://github.com/auto-differentiation/quantlib-xad'>QuantLib with Automatic Differention enabled<\/a>","<a href='https://github.com/TomasKoutek/pystlouisfed'>pystlouisfed<\/a>","<a href='https://github.com/rafa-rod/pytrendseries'>pytrendseries<\/a>","<a href='https://github.com/gbeced/basana'>basana<\/a>","<a href='https://github.com/JuliaQuant/MarketData.jl'>MarketData.jl<\/a>","<a href='https://github.com/ta4j/ta4j'>ta4j<\/a>","<a href='https://github.com/bashtage/arch'>ARCH<\/a>","<a href='https://github.com/business-science/tidyquant'>tidyquant<\/a>","<a href='https://github.com/business-science/timetk'>timetk<\/a>","<a href='https://github.com/alpha-miner/Finance-Python'>Finance-Python<\/a>","<a href='https://github.com/cuemacro/finmarketpy'>finmarketpy<\/a>","<a href='https://github.com/jesse-ai/jesse'>jesse<\/a>","<a href='https://github.com/pmorissette/ffn'>ffn<\/a>","<a href='https://github.com/fja05680/pinkfish'>pinkfish<\/a>","<a href='https://github.com/enricoschumann/NMOF'>NMOF<\/a>","<a href='https://github.com/quantrocket-llc/moonshot'>moonshot<\/a>","<a href='https://github.com/asavinov/intelligent-trading-bot'>Intelligent Trading Bot<\/a>","<a href='https://github.com/Blankly-Finance/Blankly'>Blankly<\/a>","<a href='https://github.com/cerlymarco/MEDIUM_NoteBook'>MEDIUM_NoteBook<\/a>","<a href='https://github.com/dpguthrie/yahooquery'>yahooquery<\/a>","<a href='https://github.com/quarkfin/qf-lib'>qf-lib<\/a>","<a href='https://github.com/JoaoJungblut/QuantFinanceTraining'>QuantFinanceTraining<\/a>","<a href='https://github.com/vnpy/vnpy'>vnpy<\/a>","<a href='https://github.com/JuliaComputing/Miletus.jl'>Miletus.jl<\/a>","<a href='https://github.com/JuliaStats/TimeSeries.jl'>TimeSeries.jl<\/a>","<a href='https://github.com/robertmartin8/PyPortfolioOpt'>PyPortfolioOpt<\/a>","<a href='https://github.com/maread99/market_analy'>market-analy<\/a>","<a href='https://github.com/crypto-lake/lake-api'>lake-api<\/a>","<a href='https://github.com/cuemacro/findatapy'>findatapy<\/a>","<a href='https://github.com/Heerozh/spectre'>Spectre<\/a>","<a href='https://github.com/jpmorganchase/python-training'>python-training<\/a>","<a href='https://github.com/YannickKae/Statistical-Learning-based-Portfolio-Optimization'>Statistical-Learning-based-Portfolio-Optimization<\/a>","<a href='https://github.com/deltaray-io/strategy-library'>MesoSim Options Trading Strategy Library<\/a>","<a href='https://github.com/cerlymarco/tsmoothie'>tsmoothie<\/a>","<a href='https://github.com/microsoft/qlib'>Qlib<\/a>","<a href='https://github.com/lingyixu/Quant-Finance-With-Python-Code'>Quant-Finance-With-Python-Code<\/a>","<a href='https://github.com/bbcho/risktools-dev'>risktools<\/a>","<a href='https://github.com/RomelTorres/alpha_vantage'>alpha_vantage<\/a>","<a href='https://github.com/enthought/pyql'>PyQL<\/a>","<a href='https://github.com/enthought/pyql'>PyQL<\/a>","<a href='https://github.com/abbass2/pyqstrat'>pyqstrat<\/a>","<a href='https://github.com/LastAncientOne/Deep-Learning-Machine-Learning-Stock'>Deep Learning Machine Learning Stock<\/a>","<a href='https://github.com/bukosabino/ta'>ta<\/a>","<a href='https://github.com/lit26/finvizfinance'>finvizfinance<\/a>","<a href='https://github.com/pydata/pandas-datareader'>pandas-datareader<\/a>","<a href='https://github.com/facebook/prophet'>Facebook Prophet<\/a>","<a href='https://github.com/ymyke/tessa'>tessa<\/a>","<a href='https://github.com/yhilpisch/py4fi2nd'>py4fi2nd<\/a>","<a href='https://github.com/jmrichardson/tuneta'>TuneTA<\/a>","<a href='https://github.com/yhilpisch/aiif'>aiif<\/a>","<a href='https://github.com/yhilpisch/py4at'>py4at<\/a>","<a href='https://github.com/rburkholder/trade-frame'>TradeFrame<\/a>","<a href='https://github.com/lsbardel/ccy'>ccy<\/a>","<a href='https://github.com/kieran-mackle/AutoTrader'>AutoTrader<\/a>","<a href='https://github.com/alexiosg/rugarch'>rugarch<\/a>","<a href='https://github.com/enzoampil/fastquant'>fastquant<\/a>","<a href='https://github.com/braverock/quantstrat'>quantstrat<\/a>","<a href='https://github.com/timkpaine/aat'>aat<\/a>","<a href='https://github.com/ropensci/rb3'>rb3<\/a>","<a href='https://github.com/fmilthaler/FinQuant'>FinQuant<\/a>","<a href='https://github.com/CompendiumFi/PENDAX-SDK'>PENDAX<\/a>","<a href='https://github.com/JustinMShea/ExpectedReturns'>Expected Returns<\/a>","<a href='https://github.com/tardis-dev/tardis-python'>tardis-python<\/a>","<a href='https://github.com/ysaporito/modelos_vol_derivativos'>modelos_vol_derivativos<\/a>","<a href='https://github.com/google/tf-quant-finance'>tf-quant-finance<\/a>","<a href='https://github.com/akashaero/Intrinsic-Value-Calculator'>Intrinsic-Value-Calculator<\/a>","<a href='https://github.com/xKDR/TSFrames.jl'>TSFrames.jl<\/a>","<a href='https://github.com/wilsonfreitas/python-bcb'>python-bcb<\/a>","<a href='https://github.com/ranaroussi/quantstats'>quantstats<\/a>","<a href='https://github.com/MathisWellmann/sliding_features-rs'>SlidingFeatures<\/a>","<a href='https://github.com/davidastephens/pandas-finance'>pandas-finance<\/a>","<a href='https://github.com/ymyke/pypme'>pypme<\/a>","<a href='https://github.com/wilsonfreitas/R-fixedincome'>R-fixedincome<\/a>","<a href='https://github.com/financialnoob/misc'>financialnoob-misc<\/a>","<a href='https://github.com/alexgolec/tda-api'>tda-api<\/a>","<a href='https://github.com/dppalomar/sparseIndexTracking'>sparseIndexTracking<\/a>","<a href='https://github.com/barnumbirr/coinmarketcap'>coinmarketcap<\/a>","<a href='https://github.com/msperlin/GetTDData'>GetTDData<\/a>","<a href='https://github.com/barter-rs/barter-rs'>Barter<\/a>","<a href='https://github.com/backtrader/backtrader'>backtrader<\/a>","<a href='https://github.com/matthiasgomolka/simfinapi'>simfinapi<\/a>","<a href='https://github.com/jasonstrimpel/volatility-trading'>volatility-trading<\/a>","<a href='https://github.com/RomanMichaelPaolucci/Q-Fin'>Q-Fin<\/a>","<a href='https://github.com/vollib/vollib'>vollib<\/a>","<a href='https://github.com/NVentimiglia/TDAmeritrade.DotNetCore'>TDAmeritrade.DotNetCore<\/a>","<a href='https://github.com/gbeced/pyalgotrade'>pyalgotrade<\/a>","<a href='https://github.com/stefan-jansen/machine-learning-for-trading'>machine-learning-for-trading<\/a>","<a href='https://github.com/dr-leo/pandaSDMX'>pandaSDMX<\/a>","<a href='https://github.com/braverock/blotter'>blotter<\/a>","<a href='https://github.com/business-science/tibbletime'>tibbletime<\/a>","<a href='https://github.com/PacktPublishing/Python-for-Finance-Cookbook'>Python-for-Finance-Cookbook<\/a>","<a href='https://github.com/packtpublishing/hands-on-machine-learning-for-algorithmic-trading'>Hands-On Machine Learning for Algorithmic Trading<\/a>","<a href='https://github.com/yutiansut/quantaxis'>QUANTAXIS<\/a>","<a href='https://github.com/LechGrzelak/Computational-Finance-Course'>Computational-Finance-Course<\/a>","<a href='https://github.com/DrAshBooth/PyLOB'>PyLOB<\/a>","<a href='https://github.com/mcdallas/wallstreet'>wallstreet<\/a>","<a href='https://github.com/dysonance/Indicators.jl'>Indicators.jl<\/a>","<a href='https://github.com/eddelbuettel/td'>td<\/a>","<a href='https://github.com/Rblp/Rblpapi'>Rblpapi<\/a>","<a href='https://github.com/matrix-profile-foundation/matrixprofile'>matrixprofile<\/a>","<a href='https://github.com/dbrojas/optlib'>optlib<\/a>","<a href='https://github.com/dppalomar/riskParityPortfolio'>riskParityPortfolio<\/a>","<a href='https://github.com/braverock/PortfolioAnalytics'>PortfolioAnalytics<\/a>","<a href='https://github.com/alpacahq/marketstore'>marketstore<\/a>","<a href='https://github.com/differential-machine-learning/notebooks'>Differential Machine Learning and Axes that matter by Brian Huge and Antoine Savine<\/a>","<a href='https://github.com/fremantle-capital/tai'>Tai<\/a>","<a href='https://github.com/alvarobartt/investpy'>investpy<\/a>","<a href='https://github.com/twopirllc/pandas-ta'>Pandas TA<\/a>","<a href='https://github.com/MarcusRainbow/Haxcel'>Haxcel<\/a>","<a href='https://github.com/emoen/Machine-Learning-for-Asset-Managers'>Machine-Learning-for-Asset-Managers<\/a>","<a href='https://github.com/LechGrzelak/QuantFinanceBook'>QuantFinanceBook<\/a>","<a href='https://github.com/lequant40/portfolio_allocation_js'>portfolio-allocation<\/a>","<a href='https://github.com/AlbertoAlmuinha/garchmodels'>garchmodels<\/a>","<a href='https://github.com/peerchemist/finta'>finta<\/a>","<a href='https://github.com/LenkaV/CIF'>cif<\/a>","<a href='https://github.com/fremantle-industries/workbench'>Workbench<\/a>","<a href='https://github.com/fremantle-industries/prop'>Prop<\/a>","<a href='https://github.com/matthewgilbert/pdblp'>pdblp<\/a>","<a href='https://github.com/ynouri/pysabr'>pysabr<\/a>","<a href='https://github.com/alpacahq/pylivetrader'>pylivetrader<\/a>","<a href='https://github.com/alpacahq/pipeline-live'>pipeline-live<\/a>","<a href='https://github.com/alexiosg/rmgarch'>rmgarch<\/a>","<a href='https://github.com/dysonance/Temporal.jl'>Temporal.jl<\/a>","<a href='https://github.com/firmai/machine-learning-asset-management'>Machine Learning Asset Management<\/a>","<a href='https://github.com/lukaszbanasiak/yahoo-finance'>yahoo-finance<\/a>","<a href='https://github.com/hudson-and-thames/mlfinlab'>mlfinlab<\/a>","<a href='https://github.com/stellar/kelp'>Kelp<\/a>","<a href='https://github.com/MarcusRainbow/Ffinar'>Ffinar<\/a>","<a href='https://github.com/euclidjda/value-investing-studies'>Value Investing Studies<\/a>","<a href='https://github.com/edgararuiz/tidypredict'>tidypredict<\/a>","<a href='https://github.com/enigmampc/catalyst'>catalyst<\/a>","<a href='https://github.com/cttn/Stockex'>Stockex<\/a>","<a href='https://github.com/python-excel/xlrd'>xlrd<\/a>","<a href='https://github.com/JuliaQuant/MarketTechnicals.jl'>MarketTechnicals.jl<\/a>","<a href='https://github.com/dgerlanc/portfolio'>portfolio<\/a>","<a href='https://github.com/chrisconlan/algorithmic-trading-with-python'>algorithmic-trading-with-python<\/a>","<a href='https://github.com/chrisconlan/algorithmic-trading-with-python'>algorithmic-trading-with-python<\/a>","<a href='https://github.com/Finance-Hub/FinanceHub'>FinanceHub<\/a>","<a href='https://github.com/quantsbin/Quantsbin'>Quantsbin<\/a>","<a href='https://github.com/yahoofinancelive/yliveticker'>yliveticker<\/a>","<a href='https://github.com/ajhpark/ib_nope'>ib_nope<\/a>","<a href='https://github.com/dysonance/Strategems.jl'>Strategems.jl<\/a>","<a href='https://github.com/ranaroussi/qtpylib'>qtpylib<\/a>","<a href='https://github.com/yhilpisch/dawp'>dawp<\/a>","<a href='https://github.com/GriffinAustin/pynance'>pynance<\/a>","<a href='https://github.com/huseinzol05/Stock-Prediction-Models'>Stock-Prediction-Models<\/a>","<a href='https://github.com/addisonlynch/iexfinance'>iexfinance<\/a>","<a href='https://github.com/yhilpisch/dx'>dx<\/a>","<a href='https://github.com/quantopian/empyrical'>empyrical<\/a>","<a href='https://github.com/quantopian/zipline'>zipline<\/a>","<a href='https://github.com/tradytics/eiten'>Eiten<\/a>","<a href='https://github.com/robcarver17/systematictradingexamples'>systematictradingexamples<\/a>","<a href='https://github.com/foolcage/fooltrader'>fooltrader<\/a>","<a href='https://github.com/LongOnly/Quantitative-Notebooks'>Quantitative-Notebooks<\/a>","<a href='https://github.com/msperlin/GetHFData'>GetHFData<\/a>","<a href='https://github.com/datawrestler/after-hours'>after-hours<\/a>","<a href='https://github.com/mfrdixon/ML_Finance_Codes'>ML_Finance_Codes<\/a>","<a href='https://github.com/MarcusRainbow/QuantMath'>QuantMath<\/a>","<a href='https://github.com/Karthik005/yfinanceapi'>yfinanceapi<\/a>","<a href='https://github.com/quantopian/alphalens'>alphalens<\/a>","<a href='https://github.com/rainx/pytdx'>pytdx<\/a>","<a href='https://github.com/mementum/bta-lib'>bta-lib<\/a>","<a href='https://github.com/quantopian/pyfolio'>pyfolio<\/a>","<a href='https://github.com/pazzo83/QuantLib.jl'>QuantLib.jl<\/a>","<a href='https://github.com/pazzo83/QuantLib.jl'>QuantLib.jl<\/a>","<a href='https://github.com/ran404/bbgbridge'>bbgbridge<\/a>","<a href='https://github.com/imanuelcostigan/fmbasics'>fmbasics<\/a>","<a href='https://github.com/econdb/inquisitor'>inquisitor<\/a>","<a href='https://github.com/ematvey/pybacktest'>pybacktest<\/a>","<a href='https://github.com/cirla/tulipy'>Tulipy<\/a>","<a href='https://github.com/boundedvariation/quantfin'>quantfin<\/a>","<a href='https://github.com/dppalomar/covFactorModel'>covFactorModel<\/a>","<a href='https://github.com/constverum/Quantdom'>Quantdom<\/a>","<a href='https://github.com/jeffrey-liang/quantitative'>quantitative<\/a>","<a href='https://github.com/femtotrader/TimeFrames.jl'>TimeFrames.jl<\/a>","<a href='https://github.com/deltaray-io/kelly-criterion'>Kelly-Criterion<\/a>","<a href='https://github.com/unageanu/jiji2'>Jiji<\/a>","<a href='https://github.com/avelkoski/FRB'>FRB<\/a>","<a href='https://github.com/dppalomar/sparseEigen'>sparseEigen<\/a>","<a href='https://github.com/RJT1990/pyflux'>PyFlux<\/a>","<a href='https://github.com/rsvp/fecon235'>fecon235<\/a>","<a href='https://github.com/rsvp/fecon235'>fecon235<\/a>","<a href='https://github.com/mgroncki/IPythonScripts'>IPythonScripts<\/a>","<a href='https://github.com/ebradyjobory/finance.js'>finance.js<\/a>","<a href='https://github.com/hongtaocai/googlefinance'>googlefinance<\/a>","<a href='https://github.com/quantrocket-llc/zipline-extensions'>zipline-extensions<\/a>","<a href='https://github.com/ryanmccrickerd/rough_bergomi'>rough_bergomi<\/a>","<a href='https://github.com/python-excel/xlwt'>xlwt<\/a>","<a href='https://github.com/federicomariamassari/willowtree'>willowtree<\/a>","<a href='https://github.com/femtotrader/pandas_talib'>pandas_talib<\/a>","<a href='https://github.com/ryanmccrickerd/frh-fx'>frh-fx<\/a>","<a href='https://github.com/robcarver17/pysystemtrade_examples'>pysystemtrade_examples<\/a>","<a href='https://github.com/jsmidt/QuantPy'>QuantPy<\/a>","<a href='https://github.com/federicomariamassari/financial-engineering'>financial-engineering<\/a>","<a href='https://github.com/johnbywater/quantdsl'>quantdsl<\/a>","<a href='https://github.com/MarcosCarreira/DermanPapers'>Derman Papers<\/a>","<a href='https://github.com/metaperl/binary-martingale'>binary-martingale<\/a>","<a href='https://github.com/femtotrader/TALib.jl'>TALib.jl<\/a>","<a href='https://github.com/yutiansut/QUANTAXIS_Webkit'>QUANTAXIS_Webkit<\/a>","<a href='https://github.com/dedwards25/Python_Option_Pricing'>Python_Option_Pricing<\/a>","<a href='https://github.com/skillachie/finsymbols'>finsymbols<\/a>","<a href='https://github.com/bpsmith/tia'>tia<\/a>","<a href='https://github.com/frankcash/Scala-Quant'>Scala Quant<\/a>","<a href='https://github.com/felixfan/FinCal'>FinCal<\/a>","<a href='https://github.com/aviks/Ito.jl'>Ito.jl<\/a>","<a href='https://github.com/achillesrasquinha/bulbea'>bulbea<\/a>","<a href='https://github.com/cgoldberg/ystockquote'>ystockquote<\/a>","<a href='https://github.com/wegamekinglc/VisualPortfolio'>VisualPortfolio<\/a>","<a href='https://github.com/edouardpoitras/NowTrade'>NowTrade<\/a>","<a href='https://github.com/quantmind/dynts'>dynts<\/a>","<a href='https://github.com/jangorecki/Rbitcoin'>Rbitcoin<\/a>","<a href='https://github.com/innes213/pyhoofinance'>pyhoofinance<\/a>","<a href='https://github.com/QuantSoftware/QuantSoftwareToolkit'>QuantSoftware Toolkit<\/a>","<a href='https://github.com/thalesians/pythalesians'>pythalesians<\/a>","<a href='https://github.com/ZachLiuGIS/stock_extractor'>stock_extractor<\/a>","<a href='https://github.com/joequant/algobroker'>algobroker<\/a>","<a href='https://github.com/jealous/cn_stock_src'>cn_stock_src<\/a>","<a href='https://github.com/nickelkr/yfi'>yfi<\/a>","<a href='https://github.com/jamescnowell/ticks'>ticks<\/a>","<a href='https://github.com/llazzaro/analyzer'>analyzer<\/a>","<a href='https://github.com/taylorizing/options.studies'>options.studies<\/a>","<a href='https://github.com/lsgro/quantcomponents'>quantcomponents<\/a>","<a href='https://github.com/slawek87/yql-finance'>yql-finance<\/a>","<a href='https://github.com/blenezet/credule'>credule<\/a>","<a href='https://github.com/paulperry/quant'>quant<\/a>","<a href='https://github.com/akarat/exchange'>exchange<\/a>","<a href='https://github.com/benjaminmgross/visualize-wealth'>visualize-wealth<\/a>","<a href='https://github.com/bpsmith/pybbg'>pybbg<\/a>","<a href='https://github.com/opendoor-labs/pyfin'>pyfin<\/a>","<a href='https://github.com/artyyouth/r-quant'>r-quant<\/a>","<a href='https://github.com/choucrifahed/quantscale'>QuantScale<\/a>"],["CSharp","JavaScript","Python > Numerical Libraries & Data Structures","Python > Trading & Backtesting","Python > Visualization","R > Numerical Libraries & Data Structures","Rust","CSharp","Frameworks","JavaScript","Python > Financial Instruments and Pricing","Python > Financial Instruments and Pricing","Python > Quant Research Environment","Python > Time Series","Python > Trading & Backtesting","Python > Trading & Backtesting","R > Factor Analysis","Reproducing Works, Training & Books","Python > Calendars","Python > Data Sources","Python > Financial Instruments and Pricing","Python > Indicators","R > Risk Analysis","Python > Data Sources","Python > Data Sources","Python > Trading & Backtesting","Python > Trading & Backtesting","Python > Trading & Backtesting","Python > Trading & Backtesting","Python > Financial Instruments and Pricing","Python > Trading & Backtesting","R > Trading","Reproducing Works, Training & Books","Reproducing Works, Training & Books","Python > Calendars","R > Calendars","Python > Calendars","Python > Data Sources","Python > Trading & Backtesting","Python > Trading & Backtesting","Python > Trading & Backtesting","Python > Data Sources","Python > Risk Analysis","Python > Risk Analysis","Python > Trading & Backtesting","Python > Visualization","Python > Time Series","Python > Trading & Backtesting","R > Numerical Libraries & Data Structures","Python > Data Sources","Python > Trading & Backtesting","Python > Trading & Backtesting","JavaScript","Python > Trading & Backtesting","Python > Financial Instruments and Pricing","Python > Data Sources","Python > Visualization","Python > Time Series","Rust","Julia","Python > Trading & Backtesting","Python > Trading & Backtesting","Python > Trading & Backtesting","R > Data Sources","Python > Trading & Backtesting","Python > Trading & Backtesting","Julia","Rust","Python > Risk Analysis","Golang","Rust","Python > Trading & Backtesting","Python > Data Sources","Frameworks","Python > Data Sources","Python > Trading & Backtesting","Python > Trading & Backtesting","Julia","Java","Python > Time Series","R > Time Series","R > Time Series","Python > Financial Instruments and Pricing","Python > Trading & Backtesting","Python > Trading & Backtesting","Python > Financial Instruments and Pricing","Python > Trading & Backtesting","Reproducing Works, Training & Books","Python > Trading & Backtesting","Python > Trading & Backtesting","Python > Trading & Backtesting","Reproducing Works, Training & Books","Python > Data Sources","Python > Trading & Backtesting","Reproducing Works, Training & Books","Python > Trading & Backtesting","Julia","Julia","Python > Trading & Backtesting","Python > Visualization","Python > Data Sources","Python > Data Sources","Python > Factor Analysis","Reproducing Works, Training & Books","Reproducing Works, Training & Books","Reproducing Works, Training & Books","Python > Time Series","Python > Trading & Backtesting","Reproducing Works, Training & Books","Python > Risk Analysis","Python > Data Sources","Frameworks","Python > Financial Instruments and Pricing","Python > Trading & Backtesting","Reproducing Works, Training & Books","Python > Trading & Backtesting","Python > Visualization","Python > Data Sources","Python > Time Series","Python > Data Sources","Reproducing Works, Training & Books","Python > Trading & Backtesting","Reproducing Works, Training & Books","Reproducing Works, Training & Books","CPP","Python > Data Sources","Python > Trading & Backtesting","R > Time Series","Python > Trading & Backtesting","R > Backtesting","Python > Trading & Backtesting","R > Data Sources","Python > Risk Analysis","JavaScript","R > Factor Analysis","Python > Data Sources","Reproducing Works, Training & Books","Python > Financial Instruments and Pricing","Python > Financial Instruments and Pricing","Julia","Python > Data Sources","Python > Trading & Backtesting","Rust","Python > Data Sources","Python > Financial Instruments and Pricing","R > Financial Instruments and Pricing","Reproducing Works, Training & Books","Python > Trading & Backtesting","R > Financial Instruments and Pricing","Python > Data Sources","R > Data Sources","Rust","Python > Trading & Backtesting","R > Data Sources","Reproducing Works, Training & Books","Python > Financial Instruments and Pricing","Python > Financial Instruments and Pricing","CSharp","Python > Trading & Backtesting","Python > Trading & Backtesting","Python > Data Sources","R > Trading","R > Time Series","Reproducing Works, Training & Books","Reproducing Works, Training & Books","Matlab > FrameWorks","Reproducing Works, Training & Books","Python > Trading & Backtesting","Python > Data Sources","Julia","R > Data Sources","R > Data Sources","R > Time Series","Python > Financial Instruments and Pricing","R > Financial Instruments and Pricing","R > Financial Instruments and Pricing","Golang","Reproducing Works, Training & Books","Elixir/Erlang","Python > Data Sources","Python > Trading & Backtesting","Haskell","Reproducing Works, Training & Books","Reproducing Works, Training & Books","JavaScript","R > Time Series","Python > Indicators","Python > Data Sources","Elixir/Erlang","Elixir/Erlang","Python > Data Sources","Python > Financial Instruments and Pricing","Python > Trading & Backtesting","Python > Trading & Backtesting","R > Time Series","Julia","Reproducing Works, Training & Books","Python > Data Sources","Python > Trading & Backtesting","Golang","Haskell","Reproducing Works, Training & Books","R > Time Series","Python > Trading & Backtesting","Python > Data Sources","Python > Excel Integration","Julia","R > Financial Instruments and Pricing","Python > Trading & Backtesting","Reproducing Works, Training & Books","Reproducing Works, Training & Books","Python > Financial Instruments and Pricing","Python > Data Sources","Python > Trading & Backtesting","Julia","Python > Trading & Backtesting","Reproducing Works, Training & Books","Python > Financial Instruments and Pricing","Python > Trading & Backtesting","Python > Data Sources","Reproducing Works, Training & Books","Python > Risk Analysis","Python > Trading & Backtesting","Python > Trading & Backtesting","Reproducing Works, Training & Books","Python > Trading & Backtesting","Reproducing Works, Training & Books","R > Data Sources","Python > Data Sources","Reproducing Works, Training & Books","Rust","Python > Data Sources","Python > Factor Analysis","Python > Data Sources","Python > Trading & Backtesting","Python > Risk Analysis","Frameworks","Julia","Python > Data Sources","R > Financial Instruments and Pricing","Python > Data Sources","Python > Trading & Backtesting","Python > Indicators","Haskell","R > Financial Instruments and Pricing","Python > Trading & Backtesting","Python > Trading & Backtesting","Julia","Python > Financial Instruments and Pricing","Ruby","Python > Data Sources","R > Numerical Libraries & Data Structures","Python > Time Series","Python > Risk Analysis","Reproducing Works, Training & Books","Reproducing Works, Training & Books","JavaScript","Python > Data Sources","Python > Trading & Backtesting","Reproducing Works, Training & Books","Python > Excel Integration","Python > Financial Instruments and Pricing","Python > Indicators","Reproducing Works, Training & Books","Reproducing Works, Training & Books","Python > Financial Instruments and Pricing","Python > Financial Instruments and Pricing","Python > Numerical Libraries & Data Structures","Reproducing Works, Training & Books","Python > Trading & Backtesting","Julia","JavaScript > Data Visualization","Reproducing Works, Training & Books","Python > Data Sources","Python > Financial Instruments and Pricing","Scala","R > Financial Instruments and Pricing","Julia","Python > Trading & Backtesting","Python > Data Sources","Python > Risk Analysis","Python > Trading & Backtesting","Python > Time Series","R > Data Sources","Python > Data Sources","Python > Trading & Backtesting","Python > Trading & Backtesting","Python > Data Sources","Python > Trading & Backtesting","Python > Data Sources","Python > Data Sources","Python > Data Sources","Python > Trading & Backtesting","R > Financial Instruments and Pricing","Java","Python > Data Sources","R > Financial Instruments and Pricing","Reproducing Works, Training & Books","Python > Data Sources","Python > Risk Analysis","Python > Data Sources","Python > Financial Instruments and Pricing","R > Financial Instruments and Pricing","Scala"],["2024-02-17","2024-02-17","2024-02-17","2024-02-17","2024-02-17","2024-02-17","2024-02-17","2024-02-16","2024-02-16","2024-02-16","2024-02-16","2024-02-16","2024-02-16","2024-02-16","2024-02-16","2024-02-16","2024-02-16","2024-02-16","2024-02-15","2024-02-15","2024-02-15","2024-02-15","2024-02-15","2024-02-14","2024-02-14","2024-02-14","2024-02-14","2024-02-14","2024-02-14","2024-02-13","2024-02-13","2024-02-13","2024-02-13","2024-02-13","2024-02-12","2024-02-12","2024-02-10","2024-02-10","2024-02-10","2024-02-10","2024-02-09","2024-02-08","2024-02-08","2024-02-08","2024-02-08","2024-02-08","2024-02-07","2024-02-07","2024-02-06","2024-02-05","2024-02-05","2024-02-05","2024-02-03","2024-02-03","2024-02-01","2024-01-31","2024-01-31","2024-01-28","2024-01-28","2024-01-25","2024-01-25","2024-01-25","2024-01-24","2024-01-23","2024-01-22","2024-01-20","2024-01-18","2024-01-18","2024-01-16","2024-01-15","2024-01-15","2024-01-14","2024-01-12","2024-01-09","2024-01-09","2024-01-09","2024-01-07","2024-01-06","2024-01-05","2024-01-05","2024-01-04","2024-01-04","2024-01-01","2024-01-01","2024-01-01","2023-12-31","2023-12-30","2023-12-29","2023-12-28","2023-12-28","2023-12-23","2023-12-17","2023-12-16","2023-12-14","2023-12-12","2023-12-09","2023-12-07","2023-12-07","2023-12-06","2023-12-06","2023-12-03","2023-12-01","2023-11-28","2023-11-27","2023-11-27","2023-11-24","2023-11-23","2023-11-21","2023-11-16","2023-11-12","2023-11-11","2023-11-08","2023-11-08","2023-11-05","2023-11-03","2023-11-02","2023-11-02","2023-10-24","2023-10-18","2023-10-16","2023-10-15","2023-10-13","2023-10-09","2023-10-09","2023-10-02","2023-09-29","2023-09-26","2023-09-20","2023-09-15","2023-09-14","2023-09-11","2023-09-11","2023-09-03","2023-08-31","2023-08-31","2023-08-21","2023-08-19","2023-08-15","2023-08-08","2023-07-25","2023-07-22","2023-07-06","2023-07-06","2023-07-04","2023-06-27","2023-06-27","2023-06-06","2023-06-05","2023-05-28","2023-05-23","2023-05-15","2023-04-20","2023-04-19","2023-04-12","2023-04-10","2023-04-07","2023-04-01","2023-03-10","2023-03-05","2023-03-05","2023-02-25","2023-02-04","2023-01-24","2023-01-18","2023-01-18","2023-01-10","2023-01-03","2023-01-01","2022-12-30","2022-12-06","2022-12-05","2022-12-02","2022-11-25","2022-11-18","2022-11-15","2022-11-13","2022-11-07","2022-10-05","2022-10-04","2022-10-02","2022-09-24","2022-09-13","2022-09-07","2022-08-28","2022-08-11","2022-08-11","2022-07-24","2022-06-18","2022-06-06","2022-06-06","2022-05-28","2022-04-21","2022-04-11","2022-04-11","2022-03-05","2021-12-28","2021-12-17","2021-12-15","2021-12-01","2021-11-26","2021-11-26","2021-10-26","2021-09-28","2021-09-22","2021-09-15","2021-08-19","2021-07-12","2021-07-09","2021-06-01","2021-06-01","2021-05-25","2021-05-23","2021-04-29","2021-04-22","2021-04-06","2021-03-24","2021-02-22","2021-02-03","2021-01-05","2021-01-02","2020-12-17","2020-10-14","2020-10-14","2020-09-21","2020-07-22","2020-07-19","2020-07-02","2020-06-30","2020-06-22","2020-06-13","2020-05-28","2020-05-26","2020-04-27","2020-04-15","2020-03-11","2020-02-28","2020-02-18","2020-02-18","2020-01-07","2019-12-03","2019-10-10","2019-09-09","2019-04-11","2019-04-06","2019-03-25","2019-03-12","2019-03-03","2019-02-16","2019-02-16","2019-01-22","2018-12-22","2018-12-22","2018-12-16","2018-12-03","2018-12-03","2018-11-18","2018-10-11","2018-09-23","2018-09-17","2018-09-17","2018-09-16","2018-07-14","2018-05-30","2018-05-24","2018-02-21","2017-11-28","2017-11-20","2017-10-26","2017-10-21","2017-10-16","2017-08-22","2017-07-30","2017-07-26","2017-07-23","2017-06-05","2017-05-06","2017-04-12","2017-03-21","2017-03-19","2017-03-10","2017-02-28","2017-02-07","2016-11-02","2016-10-25","2016-10-07","2016-10-07","2016-09-23","2016-09-10","2016-03-31","2016-02-29","2016-02-12","2016-01-08","2015-12-22","2015-12-17","2015-10-07","2015-08-29","2015-08-05","2015-07-14","2015-07-07","2015-06-10","2015-01-20","2014-12-03","2014-02-19","2014-01-14"]],"container":"<table class=\"display\">\n <thead>\n <tr>\n <th> <\/th>\n <th>project<\/th>\n <th>section<\/th>\n <th>last_commit<\/th>\n <\/tr>\n <\/thead>\n<\/table>","options":{"pageLength":50,"columnDefs":[{"orderable":false,"targets":0},{"name":" ","targets":0},{"name":"project","targets":1},{"name":"section","targets":2},{"name":"last_commit","targets":3}],"order":[],"autoWidth":false,"orderClasses":false}},"evals":[],"jsHooks":[]}</script>
|
|
</div>
|
|
</figure>
|
|
</div>
|
|
|
|
|
|
|
|
</main> <!-- /main -->
|
|
<script id="quarto-html-after-body" type="application/javascript">
|
|
window.document.addEventListener("DOMContentLoaded", function (event) {
|
|
const toggleBodyColorMode = (bsSheetEl) => {
|
|
const mode = bsSheetEl.getAttribute("data-mode");
|
|
const bodyEl = window.document.querySelector("body");
|
|
if (mode === "dark") {
|
|
bodyEl.classList.add("quarto-dark");
|
|
bodyEl.classList.remove("quarto-light");
|
|
} else {
|
|
bodyEl.classList.add("quarto-light");
|
|
bodyEl.classList.remove("quarto-dark");
|
|
}
|
|
}
|
|
const toggleBodyColorPrimary = () => {
|
|
const bsSheetEl = window.document.querySelector("link#quarto-bootstrap");
|
|
if (bsSheetEl) {
|
|
toggleBodyColorMode(bsSheetEl);
|
|
}
|
|
}
|
|
toggleBodyColorPrimary();
|
|
const icon = "";
|
|
const anchorJS = new window.AnchorJS();
|
|
anchorJS.options = {
|
|
placement: 'right',
|
|
icon: icon
|
|
};
|
|
anchorJS.add('.anchored');
|
|
const isCodeAnnotation = (el) => {
|
|
for (const clz of el.classList) {
|
|
if (clz.startsWith('code-annotation-')) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
const clipboard = new window.ClipboardJS('.code-copy-button', {
|
|
text: function(trigger) {
|
|
const codeEl = trigger.previousElementSibling.cloneNode(true);
|
|
for (const childEl of codeEl.children) {
|
|
if (isCodeAnnotation(childEl)) {
|
|
childEl.remove();
|
|
}
|
|
}
|
|
return codeEl.innerText;
|
|
}
|
|
});
|
|
clipboard.on('success', function(e) {
|
|
// button target
|
|
const button = e.trigger;
|
|
// don't keep focus
|
|
button.blur();
|
|
// flash "checked"
|
|
button.classList.add('code-copy-button-checked');
|
|
var currentTitle = button.getAttribute("title");
|
|
button.setAttribute("title", "Copied!");
|
|
let tooltip;
|
|
if (window.bootstrap) {
|
|
button.setAttribute("data-bs-toggle", "tooltip");
|
|
button.setAttribute("data-bs-placement", "left");
|
|
button.setAttribute("data-bs-title", "Copied!");
|
|
tooltip = new bootstrap.Tooltip(button,
|
|
{ trigger: "manual",
|
|
customClass: "code-copy-button-tooltip",
|
|
offset: [0, -8]});
|
|
tooltip.show();
|
|
}
|
|
setTimeout(function() {
|
|
if (tooltip) {
|
|
tooltip.hide();
|
|
button.removeAttribute("data-bs-title");
|
|
button.removeAttribute("data-bs-toggle");
|
|
button.removeAttribute("data-bs-placement");
|
|
}
|
|
button.setAttribute("title", currentTitle);
|
|
button.classList.remove('code-copy-button-checked');
|
|
}, 1000);
|
|
// clear code selection
|
|
e.clearSelection();
|
|
});
|
|
function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
|
|
const config = {
|
|
allowHTML: true,
|
|
maxWidth: 500,
|
|
delay: 100,
|
|
arrow: false,
|
|
appendTo: function(el) {
|
|
return el.parentElement;
|
|
},
|
|
interactive: true,
|
|
interactiveBorder: 10,
|
|
theme: 'quarto',
|
|
placement: 'bottom-start',
|
|
};
|
|
if (contentFn) {
|
|
config.content = contentFn;
|
|
}
|
|
if (onTriggerFn) {
|
|
config.onTrigger = onTriggerFn;
|
|
}
|
|
if (onUntriggerFn) {
|
|
config.onUntrigger = onUntriggerFn;
|
|
}
|
|
window.tippy(el, config);
|
|
}
|
|
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
|
|
for (var i=0; i<noterefs.length; i++) {
|
|
const ref = noterefs[i];
|
|
tippyHover(ref, function() {
|
|
// use id or data attribute instead here
|
|
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
|
|
try { href = new URL(href).hash; } catch {}
|
|
const id = href.replace(/^#\/?/, "");
|
|
const note = window.document.getElementById(id);
|
|
return note.innerHTML;
|
|
});
|
|
}
|
|
const xrefs = window.document.querySelectorAll('a.quarto-xref');
|
|
const processXRef = (id, note) => {
|
|
// Strip column container classes
|
|
const stripColumnClz = (el) => {
|
|
el.classList.remove("page-full", "page-columns");
|
|
if (el.children) {
|
|
for (const child of el.children) {
|
|
stripColumnClz(child);
|
|
}
|
|
}
|
|
}
|
|
stripColumnClz(note)
|
|
if (id === null || id.startsWith('sec-')) {
|
|
// Special case sections, only their first couple elements
|
|
const container = document.createElement("div");
|
|
if (note.children && note.children.length > 2) {
|
|
container.appendChild(note.children[0].cloneNode(true));
|
|
for (let i = 1; i < note.children.length; i++) {
|
|
const child = note.children[i];
|
|
if (child.tagName === "P" && child.innerText === "") {
|
|
continue;
|
|
} else {
|
|
container.appendChild(child.cloneNode(true));
|
|
break;
|
|
}
|
|
}
|
|
if (window.Quarto?.typesetMath) {
|
|
window.Quarto.typesetMath(container);
|
|
}
|
|
return container.innerHTML
|
|
} else {
|
|
if (window.Quarto?.typesetMath) {
|
|
window.Quarto.typesetMath(note);
|
|
}
|
|
return note.innerHTML;
|
|
}
|
|
} else {
|
|
// Remove any anchor links if they are present
|
|
const anchorLink = note.querySelector('a.anchorjs-link');
|
|
if (anchorLink) {
|
|
anchorLink.remove();
|
|
}
|
|
if (window.Quarto?.typesetMath) {
|
|
window.Quarto.typesetMath(note);
|
|
}
|
|
// TODO in 1.5, we should make sure this works without a callout special case
|
|
if (note.classList.contains("callout")) {
|
|
return note.outerHTML;
|
|
} else {
|
|
return note.innerHTML;
|
|
}
|
|
}
|
|
}
|
|
for (var i=0; i<xrefs.length; i++) {
|
|
const xref = xrefs[i];
|
|
tippyHover(xref, undefined, function(instance) {
|
|
instance.disable();
|
|
let url = xref.getAttribute('href');
|
|
let hash = undefined;
|
|
if (url.startsWith('#')) {
|
|
hash = url;
|
|
} else {
|
|
try { hash = new URL(url).hash; } catch {}
|
|
}
|
|
if (hash) {
|
|
const id = hash.replace(/^#\/?/, "");
|
|
const note = window.document.getElementById(id);
|
|
if (note !== null) {
|
|
try {
|
|
const html = processXRef(id, note.cloneNode(true));
|
|
instance.setContent(html);
|
|
} finally {
|
|
instance.enable();
|
|
instance.show();
|
|
}
|
|
} else {
|
|
// See if we can fetch this
|
|
fetch(url.split('#')[0])
|
|
.then(res => res.text())
|
|
.then(html => {
|
|
const parser = new DOMParser();
|
|
const htmlDoc = parser.parseFromString(html, "text/html");
|
|
const note = htmlDoc.getElementById(id);
|
|
if (note !== null) {
|
|
const html = processXRef(id, note);
|
|
instance.setContent(html);
|
|
}
|
|
}).finally(() => {
|
|
instance.enable();
|
|
instance.show();
|
|
});
|
|
}
|
|
} else {
|
|
// See if we can fetch a full url (with no hash to target)
|
|
// This is a special case and we should probably do some content thinning / targeting
|
|
fetch(url)
|
|
.then(res => res.text())
|
|
.then(html => {
|
|
const parser = new DOMParser();
|
|
const htmlDoc = parser.parseFromString(html, "text/html");
|
|
const note = htmlDoc.querySelector('main.content');
|
|
if (note !== null) {
|
|
// This should only happen for chapter cross references
|
|
// (since there is no id in the URL)
|
|
// remove the first header
|
|
if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
|
|
note.children[0].remove();
|
|
}
|
|
const html = processXRef(null, note);
|
|
instance.setContent(html);
|
|
}
|
|
}).finally(() => {
|
|
instance.enable();
|
|
instance.show();
|
|
});
|
|
}
|
|
}, function(instance) {
|
|
});
|
|
}
|
|
let selectedAnnoteEl;
|
|
const selectorForAnnotation = ( cell, annotation) => {
|
|
let cellAttr = 'data-code-cell="' + cell + '"';
|
|
let lineAttr = 'data-code-annotation="' + annotation + '"';
|
|
const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
|
|
return selector;
|
|
}
|
|
const selectCodeLines = (annoteEl) => {
|
|
const doc = window.document;
|
|
const targetCell = annoteEl.getAttribute("data-target-cell");
|
|
const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
|
|
const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
|
|
const lines = annoteSpan.getAttribute("data-code-lines").split(",");
|
|
const lineIds = lines.map((line) => {
|
|
return targetCell + "-" + line;
|
|
})
|
|
let top = null;
|
|
let height = null;
|
|
let parent = null;
|
|
if (lineIds.length > 0) {
|
|
//compute the position of the single el (top and bottom and make a div)
|
|
const el = window.document.getElementById(lineIds[0]);
|
|
top = el.offsetTop;
|
|
height = el.offsetHeight;
|
|
parent = el.parentElement.parentElement;
|
|
if (lineIds.length > 1) {
|
|
const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
|
|
const bottom = lastEl.offsetTop + lastEl.offsetHeight;
|
|
height = bottom - top;
|
|
}
|
|
if (top !== null && height !== null && parent !== null) {
|
|
// cook up a div (if necessary) and position it
|
|
let div = window.document.getElementById("code-annotation-line-highlight");
|
|
if (div === null) {
|
|
div = window.document.createElement("div");
|
|
div.setAttribute("id", "code-annotation-line-highlight");
|
|
div.style.position = 'absolute';
|
|
parent.appendChild(div);
|
|
}
|
|
div.style.top = top - 2 + "px";
|
|
div.style.height = height + 4 + "px";
|
|
div.style.left = 0;
|
|
let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
|
|
if (gutterDiv === null) {
|
|
gutterDiv = window.document.createElement("div");
|
|
gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
|
|
gutterDiv.style.position = 'absolute';
|
|
const codeCell = window.document.getElementById(targetCell);
|
|
const gutter = codeCell.querySelector('.code-annotation-gutter');
|
|
gutter.appendChild(gutterDiv);
|
|
}
|
|
gutterDiv.style.top = top - 2 + "px";
|
|
gutterDiv.style.height = height + 4 + "px";
|
|
}
|
|
selectedAnnoteEl = annoteEl;
|
|
}
|
|
};
|
|
const unselectCodeLines = () => {
|
|
const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
|
|
elementsIds.forEach((elId) => {
|
|
const div = window.document.getElementById(elId);
|
|
if (div) {
|
|
div.remove();
|
|
}
|
|
});
|
|
selectedAnnoteEl = undefined;
|
|
};
|
|
// Handle positioning of the toggle
|
|
window.addEventListener(
|
|
"resize",
|
|
throttle(() => {
|
|
elRect = undefined;
|
|
if (selectedAnnoteEl) {
|
|
selectCodeLines(selectedAnnoteEl);
|
|
}
|
|
}, 10)
|
|
);
|
|
function throttle(fn, ms) {
|
|
let throttle = false;
|
|
let timer;
|
|
return (...args) => {
|
|
if(!throttle) { // first call gets through
|
|
fn.apply(this, args);
|
|
throttle = true;
|
|
} else { // all the others get throttled
|
|
if(timer) clearTimeout(timer); // cancel #2
|
|
timer = setTimeout(() => {
|
|
fn.apply(this, args);
|
|
timer = throttle = false;
|
|
}, ms);
|
|
}
|
|
};
|
|
}
|
|
// Attach click handler to the DT
|
|
const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
|
|
for (const annoteDlNode of annoteDls) {
|
|
annoteDlNode.addEventListener('click', (event) => {
|
|
const clickedEl = event.target;
|
|
if (clickedEl !== selectedAnnoteEl) {
|
|
unselectCodeLines();
|
|
const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
|
|
if (activeEl) {
|
|
activeEl.classList.remove('code-annotation-active');
|
|
}
|
|
selectCodeLines(clickedEl);
|
|
clickedEl.classList.add('code-annotation-active');
|
|
} else {
|
|
// Unselect the line
|
|
unselectCodeLines();
|
|
clickedEl.classList.remove('code-annotation-active');
|
|
}
|
|
});
|
|
}
|
|
const findCites = (el) => {
|
|
const parentEl = el.parentElement;
|
|
if (parentEl) {
|
|
const cites = parentEl.dataset.cites;
|
|
if (cites) {
|
|
return {
|
|
el,
|
|
cites: cites.split(' ')
|
|
};
|
|
} else {
|
|
return findCites(el.parentElement)
|
|
}
|
|
} else {
|
|
return undefined;
|
|
}
|
|
};
|
|
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
|
|
for (var i=0; i<bibliorefs.length; i++) {
|
|
const ref = bibliorefs[i];
|
|
const citeInfo = findCites(ref);
|
|
if (citeInfo) {
|
|
tippyHover(citeInfo.el, function() {
|
|
var popup = window.document.createElement('div');
|
|
citeInfo.cites.forEach(function(cite) {
|
|
var citeDiv = window.document.createElement('div');
|
|
citeDiv.classList.add('hanging-indent');
|
|
citeDiv.classList.add('csl-entry');
|
|
var biblioDiv = window.document.getElementById('ref-' + cite);
|
|
if (biblioDiv) {
|
|
citeDiv.innerHTML = biblioDiv.innerHTML;
|
|
}
|
|
popup.appendChild(citeDiv);
|
|
});
|
|
return popup.innerHTML;
|
|
});
|
|
}
|
|
}
|
|
});
|
|
</script>
|
|
</div> <!-- /content -->
|
|
|
|
|
|
|
|
|
|
</body></html> |