FinRL®: Financial Reinforcement Learning. 🔥
This report summarizes scanner evidence for AI4Finance-Foundation/FinRL, a Jupyter Notebook project with 16,926 GitHub stars. SynthScan examined 22,554 lines of code across 126 source files, recording 327 pattern matches distributed across 14 syntactic categories. The legacy adjusted pattern signal is 19.2 (Elevated pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 149 finding(s).
Are imports declared and package/API names verified? 143 finding(s).
Are wrappers, guards, and repeated structures necessary? 118 finding(s).
Which changes need focused human review? 327 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 327 distinct pattern matches across 14 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | setup.py | 1 | CODE | |
| LOW | finrl/plot.py | 1 | CODE | |
| LOW | finrl/plot.py | 15 | CODE | |
| LOW | finrl/config.py | 2 | CODE | |
| LOW | finrl/config_private.py | 1 | CODE | |
| LOW | finrl/trade.py | 1 | CODE | |
| LOW | finrl/__init__.py | 1 | CODE | |
| LOW | finrl/__init__.py | 3 | CODE | |
| LOW | finrl/__init__.py | 4 | CODE | |
| LOW | finrl/__init__.py | 5 | CODE | |
| LOW | finrl/test.py | 1 | CODE | |
| LOW | finrl/test.py | 4 | CODE | |
| LOW | finrl/train.py | 1 | CODE | |
| LOW | finrl/train.py | 5 | CODE | |
| LOW | finrl/train.py | 6 | CODE | |
| LOW | finrl/main.py | 1 | CODE | |
| LOW | finrl/main.py | 5 | CODE | |
| LOW | finrl/config_tickers.py | 1 | CODE | |
| LOW | finrl/__main__.py | 1 | CODE | |
| LOW | finrl/meta/data_processor.py | 1 | CODE | |
| LOW | finrl/meta/meta_config.py | 1 | CODE | |
| LOW | …v_portfolio_optimization/env_portfolio_optimization.py | 3 | CODE | |
| LOW | finrl/meta/env_portfolio_allocation/env_portfolio.py | 1 | CODE | |
| LOW | finrl/meta/env_cryptocurrency_trading/env_btc_ccxt.py | 1 | CODE | |
| LOW | …meta/env_cryptocurrency_trading/env_multiple_crypto.py | 1 | CODE | |
| LOW | finrl/meta/paper_trading/common.py | 4 | CODE | |
| LOW | finrl/meta/paper_trading/alpaca.py | 3 | CODE | |
| LOW | finrl/meta/data_processors/processor_alpaca.py | 1 | CODE | |
| LOW | finrl/meta/data_processors/processor_alpaca.py | 3 | CODE | |
| LOW | finrl/meta/data_processors/processor_alpaca.py | 5 | CODE | |
| LOW | finrl/meta/data_processors/processor_alpaca.py | 6 | CODE | |
| LOW | finrl/meta/data_processors/processor_alpaca.py | 11 | CODE | |
| LOW | finrl/meta/data_processors/processor_eodhd.py | 1 | CODE | |
| LOW | finrl/meta/data_processors/processor_eodhd.py | 7 | CODE | |
| LOW | finrl/meta/data_processors/processor_eodhd.py | 11 | CODE | |
| LOW | finrl/meta/data_processors/processor_eodhd.py | 12 | CODE | |
| LOW | finrl/meta/data_processors/processor_quantconnect.py | 1 | CODE | |
| LOW | finrl/meta/data_processors/processor_sinopac.py | 1 | CODE | |
| LOW | finrl/meta/data_processors/processor_ccxt.py | 1 | CODE | |
| LOW | finrl/meta/data_processors/processor_wrds.py | 1 | CODE | |
| LOW | finrl/meta/data_processors/processor_wrds.py | 8 | CODE | |
| LOW | finrl/meta/data_processors/processor_yahoofinance.py | 3 | CODE | |
| LOW | finrl/meta/data_processors/processor_yahoofinance.py | 7 | CODE | |
| LOW | finrl/meta/data_processors/processor_yahoofinance.py | 10 | CODE | |
| LOW | finrl/meta/data_processors/processor_yahoofinance.py | 11 | CODE | |
| LOW | finrl/meta/data_processors/processor_yahoofinance.py | 12 | CODE | |
| LOW | finrl/meta/data_processors/processor_yahoofinance.py | 13 | CODE | |
| LOW | finrl/meta/data_processors/processor_yahoofinance.py | 14 | CODE | |
| LOW | finrl/meta/data_processors/processor_yahoofinance.py | 15 | CODE | |
| LOW | finrl/meta/data_processors/processor_yahoofinance.py | 16 | CODE | |
| LOW | finrl/meta/data_processors/processor_yahoofinance.py | 21 | CODE | |
| LOW | finrl/meta/data_processors/processor_joinquant.py | 1 | CODE | |
| LOW | finrl/meta/data_processors/func.py | 1 | CODE | |
| LOW | finrl/meta/data_processors/processor_fxmacrodata.py | 1 | CODE | |
| LOW | finrl/meta/data_processors/processor_fxmacrodata.py | 3 | CODE | |
| LOW | …rl/meta/env_stock_trading/env_stocktrading_stoploss.py | 1 | CODE | |
| LOW | finrl/meta/env_stock_trading/env_nas100_wrds.py | 1 | CODE | |
| LOW | finrl/meta/env_stock_trading/env_stocktrading.py | 1 | CODE | |
| LOW | finrl/meta/env_stock_trading/env_stocktrading.py | 3 | CODE | |
| LOW | …meta/env_stock_trading/env_stocktrading_cashpenalty.py | 1 | CODE | |
| 83 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | finrl/plot.py | 29 | def convert_daily_return_to_pyfolio_ts(df): | CODE |
| LOW | finrl/main.py | 45 | def check_and_make_directories(directories: list[str]): | CODE |
| LOW | finrl/meta/data_processor.py | 16 | class DataProcessor: | CODE |
| LOW | …v_portfolio_optimization/env_portfolio_optimization.py | 403 | def _get_state_and_info_from_time_index(self, time_index): | CODE |
| LOW | …meta/env_cryptocurrency_trading/env_multiple_crypto.py | 114 | def _generate_action_normalizer(self): | CODE |
| LOW | finrl/meta/data_processors/processor_eodhd.py | 205 | def nber_present_tics_per_day(self, max_days, tics_in_more_than_90perc_days): | CODE |
| LOW | finrl/meta/data_processors/processor_joinquant.py | 46 | def calc_trade_days_by_joinquant(self, start_day, end_day): | CODE |
| LOW | finrl/meta/data_processors/func.py | 13 | def calc_stockname_from_filename(filename): | CODE |
| LOW | finrl/meta/data_processors/func.py | 91 | def calc_train_trade_starts_ends_if_rolling( | CODE |
| LOW | finrl/meta/data_processors/processor_fxmacrodata.py | 13 | class FXMacroDataProcessor: | CODE |
| LOW | finrl/meta/data_processors/processor_fxmacrodata.py | 67 | def download_release_calendar( | CODE |
| LOW | finrl/agents/stablebaselines3/tune_sb3.py | 118 | def default_sample_hyperparameters(self, trial: optuna.Trial): | CODE |
| LOW | finrl/agents/portfolio_optimization/architectures.py | 514 | def _create_edge_type_for_batch(self, batch, edge_type): | CODE |
| LOW | …ications/stock_trading/stock_trading_rolling_window.py | 31 | def stock_trading_rolling_window( | CODE |
| LOW | unit_tests/test_core.py | 55 | def test_check_and_make_directories(DIRS: list[str]) -> None: | CODE |
| LOW | unit_tests/test_core.py | 84 | def test_feature_engineer_no_turbulence( | CODE |
| LOW | unit_tests/test_core.py | 114 | def test_feature_engineer_turbulence_less_than_a_year( | CODE |
| LOW | unit_tests/test_core.py | 148 | def test_feature_engineer_turbulence_more_than_a_year( | CODE |
| LOW | unit_tests/preprocessors/test_user_defined_feature.py | 9 | def test_daily_return_is_computed_per_ticker(): | CODE |
| LOW | unit_tests/preprocessors/test_dow_membership.py | 21 | def test_dow_roster_tracks_effective_membership(date, added, removed): | CODE |
| LOW | unit_tests/preprocessors/test_dow_membership.py | 29 | def test_membership_annotation_uses_each_row_date(): | CODE |
| LOW | unit_tests/preprocessors/test_dow_membership.py | 42 | def test_keep_incomplete_tickers_preserves_former_constituents(): | CODE |
| LOW | unit_tests/preprocessors/test_dow_membership.py | 62 | def test_out_of_range_membership_dates_are_rejected(date): | CODE |
| LOW | unit_tests/preprocessors/test_yahoodownloader.py | 38 | def test_adjust_prices_calculates_correctly(self): | CODE |
| LOW | unit_tests/preprocessors/test_yahoodownloader.py | 82 | def test_adjust_prices_drops_columns(self): | CODE |
| LOW | unit_tests/preprocessors/test_groupby_scaler.py | 39 | def test_fit_transform_specific_column(): | CODE |
| LOW | unit_tests/preprocessors/test_groupby_scaler.py | 60 | def test_fit_transform_other_df(): | CODE |
| LOW | unit_tests/preprocessors/test_groupby_scaler.py | 85 | def test_minmax_fit_transform(): | CODE |
| LOW | unit_tests/preprocessors/test_groupby_scaler.py | 106 | def test_minmax_fit_transform_specific_column(): | CODE |
| LOW | unit_tests/preprocessors/test_groupby_scaler.py | 127 | def test_minmax_fit_transform_other_df(): | CODE |
| LOW | unit_tests/environments/test_env_stock_papertrading.py | 18 | def test_trade_starts_submit_order_threads_without_calling_submit_order_early(): | CODE |
| LOW⚡ | unit_tests/environments/test_env_stocktrading.py | 54 | def test_indicator_equal_to_one_does_not_block_trading(prices): | CODE |
| LOW⚡ | unit_tests/environments/test_env_stocktrading.py | 63 | def test_trading_without_technical_indicators(prices): | CODE |
| LOW⚡ | unit_tests/environments/test_env_stocktrading.py | 72 | def test_missing_price_is_not_traded(prices): | CODE |
| LOW | unit_tests/environments/test_env_stocktrading.py | 87 | def test_inactive_constituents_cannot_be_bought(prices): | CODE |
| LOW | unit_tests/environments/test_env_stocktrading.py | 101 | def test_inactive_constituent_features_are_hidden(prices): | CODE |
| LOW | unit_tests/environments/test_env_stocktrading.py | 113 | def test_removed_constituent_is_liquidated_at_removal_close(prices): | CODE |
| LOW | unit_tests/environments/test_stocktrading.py | 43 | def test_initial_holdings_contribute_to_state_and_reward(shares, shares_type): | CODE |
| LOW | unit_tests/environments/test_stocktrading.py | 67 | def test_previous_state_restores_cash_and_holdings(shares, state_type): | CODE |
| LOW | unit_tests/environments/test_stocktrading.py | 104 | def test_reset_restores_single_stock_initial_holdings_after_selling(shares_type): | CODE |
| LOW | unit_tests/downloaders/test_fxmacrodata_downloader.py | 29 | def test_fxmacrodata_downloader_fetch_data(monkeypatch): | CODE |
| LOW | unit_tests/downloaders/test_fxmacrodata_downloader.py | 81 | def test_fxmacrodata_processor_download_data(monkeypatch): | CODE |
| LOW⚡ | unit_tests/downloaders/test_fxmacrodata_downloader.py | 116 | def test_fxmacrodata_downloader_invalid_pair(): | CODE |
| LOW⚡ | unit_tests/downloaders/test_fxmacrodata_downloader.py | 121 | def test_fxmacrodata_processor_daily_only(): | CODE |
| LOW⚡ | unit_tests/downloaders/test_fxmacrodata_downloader.py | 128 | def test_fxmacrodata_macro_downloader_fetches_announcements(monkeypatch): | CODE |
| LOW | unit_tests/downloaders/test_fxmacrodata_downloader.py | 175 | def test_fxmacrodata_macro_downloader_fetches_calendar_and_predictions(monkeypatch): | CODE |
| LOW | unit_tests/downloaders/test_fxmacrodata_downloader.py | 240 | def test_fxmacrodata_processor_adds_macro_features(): | CODE |
| LOW | unit_tests/downloaders/test_fxmacrodata_downloader.py | 271 | def test_fxmacrodata_downloader_follows_pagination(monkeypatch): | CODE |
| LOW | unit_tests/downloaders/test_yahoofinance_processor.py | 10 | def test_scrap_data_sorts_by_day_and_tic(): | CODE |
| LOW | unit_tests/agents/test_elegantrl_prediction.py | 29 | def test_drl_prediction_runs_on_gymnasium_env(tmp_path, env_config): | CODE |
| LOW | unit_tests/agents/test_fasttd3.py | 44 | def test_projection_conserves_mass_and_stays_non_negative(): | CODE |
| LOW | unit_tests/agents/test_fasttd3.py | 55 | def test_projection_puts_all_mass_on_the_exact_landing_atom(): | CODE |
| LOW | unit_tests/agents/test_fasttd3.py | 74 | def test_projection_interpolates_linearly_between_neighboring_atoms(): | CODE |
| LOW | unit_tests/agents/test_fasttd3.py | 85 | def test_projection_n_atoms_two_is_the_minimum_supported_case(): | CODE |
| LOW | unit_tests/agents/test_fasttd3.py | 100 | def test_a_terminal_transition_ignores_the_next_state_entirely(): | CODE |
| LOW | unit_tests/agents/test_fasttd3.py | 115 | def test_buffer_add_and_sample_round_trips_a_single_transition(): | CODE |
| LOW | unit_tests/agents/test_fasttd3.py | 134 | def test_buffer_caps_at_capacity_and_wraps_like_a_ring(): | CODE |
| LOW | unit_tests/agents/test_fasttd3.py | 151 | def test_buffer_add_accepts_a_batch_larger_than_one_env_step(): | CODE |
| LOW⚡ | unit_tests/agents/test_stablebaselines3_models.py | 22 | def test_tqc_and_crossq_are_registered(): | CODE |
| LOW⚡ | unit_tests/agents/test_stablebaselines3_models.py | 30 | def test_get_model_builds_the_right_class(env, model_name, model_cls): | CODE |
| 4 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | finrl/meta/paper_trading/common.py | 0 | provides implementations for drl algorithms attributes ---------- env: gym environment class user-defined class methods | STRING |
| HIGH | finrl/agents/elegantrl/models.py | 0 | provides implementations for drl algorithms attributes ---------- env: gym environment class user-defined class methods | STRING |
| HIGH | finrl/agents/stablebaselines3/models.py | 0 | provides implementations for drl algorithms attributes ---------- env: gym environment class user-defined class methods | STRING |
| HIGH | finrl/meta/data_processors/processor_alpaca.py | 0 | add turbulence index from a precalcualted dataframe :param data: (df) pandas dataframe :return: (df) pandas dataframe | STRING |
| HIGH | finrl/meta/data_processors/processor_eodhd.py | 0 | add turbulence index from a precalcualted dataframe :param data: (df) pandas dataframe :return: (df) pandas dataframe | STRING |
| HIGH | finrl/meta/data_processors/processor_sinopac.py | 0 | add turbulence index from a precalcualted dataframe :param data: (df) pandas dataframe :return: (df) pandas dataframe | STRING |
| HIGH | finrl/meta/data_processors/processor_wrds.py | 0 | add turbulence index from a precalcualted dataframe :param data: (df) pandas dataframe :return: (df) pandas dataframe | STRING |
| HIGH | finrl/meta/data_processors/processor_yahoofinance.py | 0 | add turbulence index from a precalcualted dataframe :param data: (df) pandas dataframe :return: (df) pandas dataframe | STRING |
| HIGH | finrl/meta/preprocessor/preprocessors.py | 0 | add turbulence index from a precalcualted dataframe :param data: (df) pandas dataframe :return: (df) pandas dataframe | STRING |
| HIGH | finrl/meta/preprocessor/tusharedownloader.py | 0 | fetches data from ibkr api parameters ---------- returns ------- `pd.dataframe` 7 columns: a date, open, high, low, clos | STRING |
| HIGH | finrl/meta/preprocessor/yahoodownloader.py | 0 | fetches data from ibkr api parameters ---------- returns ------- `pd.dataframe` 7 columns: a date, open, high, low, clos | STRING |
| HIGH | finrl/meta/preprocessor/ibkrdownloader.py | 0 | fetches data from ibkr api parameters ---------- returns ------- `pd.dataframe` 7 columns: a date, open, high, low, clos | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | README.md | 118 | ### Step 1: Clone the Repository | COMMENT |
| LOW⚡ | README.md | 125 | ### Step 2: Create and Activate Virtual Environment | COMMENT |
| LOW⚡ | README.md | 132 | ### Step 3: Install FinRL | COMMENT |
| LOW⚡ | README.md | 138 | ### Step 4: Run the Scripts | COMMENT |
| LOW⚡ | finrl/meta/data_processors/processor_alpaca.py | 142 | # Step 1: Merging dataframes to avoid loop | COMMENT |
| LOW⚡ | finrl/meta/data_processors/processor_alpaca.py | 150 | # Step 2: Handling NaN values efficiently | COMMENT |
| LOW | finrl/meta/data_processors/processor_alpaca.py | 173 | # Step 3: Data type conversion | COMMENT |
| LOW⚡ | finrl/meta/data_processors/processor_eodhd.py | 37 | # Step 1: Get NASDAQ 100 components | COMMENT |
| LOW⚡ | finrl/meta/data_processors/processor_eodhd.py | 47 | # Step 2: Fetch historical minute data for each ticker | COMMENT |
| LOW⚡ | finrl/meta/data_processors/processor_eodhd.py | 93 | # Step 3: Save the data | COMMENT |
| LOW | finrl/meta/data_processors/processor_eodhd.py | 118 | # Step 1: First pass to collect all unique dates | COMMENT |
| LOW | finrl/meta/data_processors/processor_eodhd.py | 141 | # Step 2: Second pass to update each file with the 'Day' column | COMMENT |
| LOW⚡ | examples/README.md | 3 | ### Step 1: Clone the Repository | COMMENT |
| LOW⚡ | examples/README.md | 10 | ### Step 2: Create and Activate Virtual Environment | COMMENT |
| LOW⚡ | examples/README.md | 17 | ### Step 3: Install FinRL | COMMENT |
| LOW⚡ | examples/README.md | 23 | ### Step 4: Run the Scripts | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | finrl/plot.py | 258 | CODE | |
| LOW | finrl/main.py | 51 | CODE | |
| LOW | finrl/meta/data_processor.py | 17 | CODE | |
| LOW | …v_portfolio_optimization/env_portfolio_optimization.py | 200 | CODE | |
| LOW | …v_portfolio_optimization/env_portfolio_optimization.py | 571 | CODE | |
| LOW | finrl/meta/paper_trading/alpaca.py | 20 | CODE | |
| LOW | finrl/meta/paper_trading/alpaca.py | 147 | CODE | |
| LOW | finrl/meta/data_processors/processor_alpaca.py | 411 | CODE | |
| LOW | finrl/meta/data_processors/processor_eodhd.py | 23 | CODE | |
| LOW | finrl/meta/data_processors/processor_eodhd.py | 166 | CODE | |
| LOW | finrl/meta/data_processors/processor_eodhd.py | 205 | CODE | |
| LOW | finrl/meta/data_processors/processor_eodhd.py | 242 | CODE | |
| LOW | finrl/meta/data_processors/processor_sinopac.py | 91 | CODE | |
| LOW | finrl/meta/data_processors/processor_ccxt.py | 16 | CODE | |
| LOW | finrl/meta/data_processors/processor_ccxt.py | 24 | CODE | |
| LOW | finrl/meta/data_processors/processor_wrds.py | 20 | CODE | |
| LOW | finrl/meta/data_processors/processor_yahoofinance.py | 185 | CODE | |
| LOW | finrl/meta/data_processors/processor_yahoofinance.py | 277 | CODE | |
| LOW | finrl/meta/data_processors/processor_yahoofinance.py | 541 | CODE | |
| LOW | finrl/meta/env_stock_trading/env_stocktrading.py | 115 | CODE | |
| LOW | finrl/meta/env_stock_trading/env_stocktrading.py | 227 | CODE | |
| LOW | finrl/meta/env_stock_trading/env_stock_papertrading.py | 17 | CODE | |
| LOW | finrl/agents/stablebaselines3/tune_sb3.py | 35 | CODE | |
| LOW | finrl/agents/stablebaselines3/tune_sb3.py | 118 | CODE | |
| LOW | finrl/agents/rllib/models.py | 80 | CODE | |
| LOW | finrl/agents/rllib/models.py | 113 | CODE | |
| LOW | …pplications/stock_trading/fundamental_stock_trading.py | 4 | CODE | |
| LOW | …pplications/stock_trading/fundamental_stock_trading.py | 413 | CODE | |
| LOW | …pplications/stock_trading/fundamental_stock_trading.py | 519 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | finrl/meta/paper_trading/common.py | 2 | # ---------------------------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | finrl/meta/paper_trading/common.py | 16 | # ---------------------------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | finrl/meta/paper_trading/common.py | 552 | # ---------------------------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | finrl/meta/paper_trading/common.py | 687 | # ---------------------------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | finrl/meta/paper_trading/common.py | 745 | # ---------------------------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | finrl/meta/paper_trading/common.py | 800 | # ---------------------------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | finrl/meta/paper_trading/common.py | 841 | # ---------------------------------------------------------------------------------------------------------------------- | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | finrl/meta/data_processors/processor_eodhd.py | 87 | print(f"Error fetching data for {ticker}: {response.text}") | CODE |
| LOW | finrl/meta/data_processors/processor_eodhd.py | 200 | except Exception as e: | CODE |
| LOW | finrl/meta/data_processors/processor_eodhd.py | 234 | except Exception as e: | CODE |
| LOW | finrl/meta/data_processors/processor_eodhd.py | 277 | except Exception as e: | CODE |
| LOW | finrl/meta/data_processors/processor_sinopac.py | 127 | except Exception as e: | CODE |
| MEDIUM | finrl/meta/data_processors/processor_sinopac.py | 128 | print(f"Error calculating {indicator}: {str(e)}") | CODE |
| LOW | finrl/meta/data_processors/processor_yahoofinance.py | 103 | except Exception as e: | CODE |
| LOW | finrl/meta/data_processors/processor_yahoofinance.py | 172 | except Exception as e: | CODE |
| MEDIUM | finrl/meta/data_processors/processor_yahoofinance.py | 173 | print(f"Error fetching data for {stock_name}: {e}") | CODE |
| LOW | finrl/meta/data_processors/processor_yahoofinance.py | 406 | except Exception as e: | CODE |
| MEDIUM | finrl/meta/data_processors/processor_yahoofinance.py | 130 | def safe_convert(value, dtype): | CODE |
| LOW | finrl/meta/data_processors/processor_fxmacrodata.py | 171 | except Exception as exc: | CODE |
| LOW | finrl/meta/preprocessor/preprocessors.py | 241 | except Exception as e: | CODE |
| LOW | finrl/meta/preprocessor/shioajidownloader.py | 56 | except Exception as e: | CODE |
| MEDIUM | finrl/meta/preprocessor/shioajidownloader.py | 77 | print(f"Error renaming columns: {e}") | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | finrl/plot.py | 258 | CODE | |
| LOW | finrl/plot.py | 337 | CODE | |
| LOW | …v_portfolio_optimization/env_portfolio_optimization.py | 73 | CODE | |
| LOW | finrl/meta/env_cryptocurrency_trading/env_btc_ccxt.py | 7 | CODE | |
| LOW | finrl/meta/data_processors/processor_alpaca.py | 312 | CODE | |
| LOW | finrl/meta/data_processors/processor_sinopac.py | 41 | CODE | |
| LOW | …rl/meta/env_stock_trading/env_stocktrading_stoploss.py | 64 | CODE | |
| LOW | finrl/meta/env_stock_trading/env_nas100_wrds.py | 15 | CODE | |
| LOW | finrl/meta/env_stock_trading/env_stocktrading.py | 35 | CODE | |
| LOW | …meta/env_stock_trading/env_stocktrading_cashpenalty.py | 52 | CODE | |
| LOW | finrl/meta/env_stock_trading/env_stocktrading_np.py | 9 | CODE | |
| LOW | finrl/agents/rllib/drllibv2.py | 125 | CODE | |
| LOW | finrl/agents/portfolio_optimization/algorithms.py | 34 | CODE | |
| LOW | finrl/agents/portfolio_optimization/architectures.py | 101 | CODE | |
| LOW | finrl/agents/portfolio_optimization/architectures.py | 245 | CODE | |
| LOW | finrl/agents/portfolio_optimization/architectures.py | 278 | CODE | |
| LOW | finrl/agents/portfolio_optimization/architectures.py | 464 | CODE | |
| LOW | finrl/agents/fasttd3/agent.py | 75 | CODE | |
| LOW | …pplications/stock_trading/fundamental_stock_trading.py | 347 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | finrl/meta/data_processors/processor_alpaca.py | 142 | # Step 1: Merging dataframes to avoid loop | COMMENT |
| LOW⚡ | finrl/meta/data_processors/processor_alpaca.py | 150 | # Step 2: Handling NaN values efficiently | COMMENT |
| LOW | finrl/meta/data_processors/processor_alpaca.py | 173 | # Step 3: Data type conversion | COMMENT |
| LOW⚡ | finrl/meta/data_processors/processor_eodhd.py | 37 | # Step 1: Get NASDAQ 100 components | COMMENT |
| LOW⚡ | finrl/meta/data_processors/processor_eodhd.py | 47 | # Step 2: Fetch historical minute data for each ticker | COMMENT |
| LOW⚡ | finrl/meta/data_processors/processor_eodhd.py | 93 | # Step 3: Save the data | COMMENT |
| LOW | finrl/meta/data_processors/processor_eodhd.py | 118 | # Step 1: First pass to collect all unique dates | COMMENT |
| LOW | finrl/meta/data_processors/processor_eodhd.py | 141 | # Step 2: Second pass to update each file with the 'Day' column | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | finrl/meta/data_processors/processor_sinopac.py | 48 | # Create a new DataFrame to ensure all time points are included | COMMENT |
| MEDIUM | …pplications/stock_trading/fundamental_stock_trading.py | 265 | # Create a dataframe that merges all the ratios | COMMENT |
| MEDIUM | unit_tests/preprocessors/test_yahoodownloader.py | 21 | # Create a sample DataFrame similar to what fetch_data might produce before adjustment | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | finrl/test.py | 101 | model_name="ppo", | COMMENT |
| LOW | finrl/test.py | 121 | # model_name="ppo", | COMMENT |
| LOW | finrl/train.py | 121 | erl_params=ERL_PARAMS, | COMMENT |
| LOW | finrl/train.py | 141 | # cwd="./test_ppo", | COMMENT |
| LOW | finrl/agents/stablebaselines3/models.py | 661 | self.train_period[0], | COMMENT |
| LOW | docs/source/conf.py | 1 | # | COMMENT |
| LOW | docs/source/conf.py | 121 | # to template names. | COMMENT |
| LOW | docs/source/conf.py | 141 | # | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | unit_tests/preprocessors/test_yahoodownloader.py | 79 | # Use pandas testing utility for robust DataFrame comparison | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | finrl/meta/data_processors/processor_alpaca.py | 158 | tmp_df.iloc[0] = [first_valid_price] * 4 + [0.0] # Set volume to zero | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | finrl/agents/fasttd3/__init__.py | 5 | __all__ = ["FastTD3"] | CODE |