{
  "_id": "6a1bf23a1d7bb097a0a23ac5",
  "Package": "PortfolioTesteR",
  "Type": "Package",
  "Title": "Test Investment Strategies with English-Like Code",
  "Version": "0.1.4",
  "Authors@R": "person(\"Alberto\", \"Pallotta\",\nemail = \"pallottaalberto@gmail.com\",\nrole = c(\"aut\", \"cre\"))",
  "Description": "Design, backtest, and analyze portfolio strategies using\nsimple, English-like function chains. Includes technical\nindicators, flexible stock selection, portfolio construction\nmethods (equal weighting, signal weighting, inverse volatility,\nhierarchical risk parity), and a compact backtesting engine for\nportfolio returns, drawdowns, and summary metrics.",
  "License": "MIT + file LICENSE",
  "URL": "https://github.com/AlbertoPallotta/PortfolioTesteR",
  "BugReports": "https://github.com/AlbertoPallotta/PortfolioTesteR/issues",
  "Encoding": "UTF-8",
  "Roxygen": "list(markdown = TRUE)",
  "RoxygenNote": "7.3.3",
  "Config/testthat/edition": "3",
  "ByteCompile": "true",
  "VignetteBuilder": "knitr",
  "Config/pak/sysreqs": "libssl-dev",
  "Repository": "https://albertopallotta.r-universe.dev",
  "Date/Publication": "2025-11-01 14:32:29 UTC",
  "RemoteUrl": "https://github.com/albertopallotta/portfoliotester",
  "RemoteRef": "HEAD",
  "RemoteSha": "394d29e8b68b240b0876f82e666c67da9bbf5d4f",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-05-31 08:28:39 UTC",
    "User": "root"
  },
  "Author": "Alberto Pallotta [aut, cre]",
  "Maintainer": "Alberto Pallotta <pallottaalberto@gmail.com>",
  "MD5sum": "e3e5156ecefb9dd78468fbba960f3ace",
  "_user": "albertopallotta",
  "_type": "src",
  "_file": "PortfolioTesteR_0.1.4.tar.gz",
  "_fileid": "e4235e2a2a2e8f04321e45f3919c205affe1f5088449690b5706566b48e8ee5b",
  "_filesize": 2029710,
  "_sha256": "e4235e2a2a2e8f04321e45f3919c205affe1f5088449690b5706566b48e8ee5b",
  "_created": "2026-05-31T08:28:39.000Z",
  "_published": "2026-05-31T08:32:58.528Z",
  "_distro": "noble",
  "_jobs": [
    {
      "job": 78712069448,
      "time": 213,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7315250300"
    },
    {
      "job": 78712069446,
      "time": 169,
      "config": "linux-release-x86_64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7315245698"
    },
    {
      "job": 78712069452,
      "time": 217,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "7315247536"
    },
    {
      "job": 78712069459,
      "time": 139,
      "config": "macos-release-arm64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7315240277"
    },
    {
      "job": 78711851082,
      "time": 253,
      "config": "source",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7315227288"
    },
    {
      "job": 78712069497,
      "time": 116,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7315239742"
    },
    {
      "job": 78712069467,
      "time": 116,
      "config": "windows-devel",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7315239904"
    },
    {
      "job": 78712069468,
      "time": 116,
      "config": "windows-oldrel",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "7315239786"
    },
    {
      "job": 78712069465,
      "time": 123,
      "config": "windows-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7315240505"
    }
  ],
  "_buildurl": "https://github.com/r-universe/albertopallotta/actions/runs/26707633791",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_upstream": "https://github.com/albertopallotta/portfoliotester",
  "_commit": {
    "id": "394d29e8b68b240b0876f82e666c67da9bbf5d4f",
    "author": "Alberto Pallotta <pallottaalberto@gmail.com>",
    "committer": "Alberto Pallotta <pallottaalberto@gmail.com>",
    "message": "Bump version to 0.1.4\n",
    "time": 1762007549
  },
  "_maintainer": {
    "name": "Alberto Pallotta",
    "email": "pallottaalberto@gmail.com",
    "login": "albertopallotta",
    "linkedin": "in/alberto-pallotta-cqf-b735a63b",
    "description": "",
    "uuid": 66621690
  },
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 3.5.0",
      "role": "Depends"
    },
    {
      "package": "data.table",
      "role": "Imports"
    },
    {
      "package": "graphics",
      "role": "Imports"
    },
    {
      "package": "stats",
      "role": "Imports"
    },
    {
      "package": "TTR",
      "role": "Imports"
    },
    {
      "package": "utils",
      "role": "Imports"
    },
    {
      "package": "zoo",
      "role": "Imports"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    },
    {
      "package": "quantmod",
      "role": "Suggests"
    },
    {
      "package": "RSQLite",
      "role": "Suggests"
    },
    {
      "package": "rvest",
      "role": "Suggests"
    },
    {
      "package": "glmnet",
      "role": "Suggests"
    },
    {
      "package": "ranger",
      "role": "Suggests"
    },
    {
      "package": "xgboost",
      "role": "Suggests"
    },
    {
      "package": "keras",
      "role": "Suggests"
    },
    {
      "package": "tensorflow",
      "role": "Suggests"
    }
  ],
  "_owner": "albertopallotta",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2025-36",
      "n": 10
    },
    {
      "week": "2025-37",
      "n": 8
    },
    {
      "week": "2025-38",
      "n": 2
    },
    {
      "week": "2025-39",
      "n": 2
    },
    {
      "week": "2025-40",
      "n": 4
    },
    {
      "week": "2025-42",
      "n": 3
    },
    {
      "week": "2025-43",
      "n": 3
    },
    {
      "week": "2025-44",
      "n": 5
    }
  ],
  "_tags": [
    {
      "name": "v0.1.0",
      "date": "2025-09-08"
    },
    {
      "name": "v0.1.1",
      "date": "2025-09-16"
    },
    {
      "name": "v0.1.2",
      "date": "2025-10-03"
    },
    {
      "name": "v0.1.3",
      "date": "2025-10-20"
    },
    {
      "name": "v0.1.4",
      "date": "2025-11-01"
    }
  ],
  "_topics": [
    "asset-allocation",
    "backtesting",
    "machine-learning",
    "portfolio-construction",
    "portfolio-optimization",
    "quantitative-finance",
    "time-series"
  ],
  "_stars": 4,
  "_contributors": [
    {
      "user": "albertopallotta",
      "count": 37,
      "uuid": 66621690
    }
  ],
  "_userbio": {
    "uuid": 66621690,
    "type": "user",
    "name": "alberto pallotta"
  },
  "_downloads": {
    "count": 134,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/PortfolioTesteR"
  },
  "_devurl": "https://github.com/albertopallotta/portfoliotester",
  "_searchresults": 32,
  "_rbuild": "4.6.0",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/PortfolioTesteR.html",
    "extra/readme.html",
    "extra/readme.md",
    "manual.pdf"
  ],
  "_homeurl": "https://github.com/albertopallotta/portfoliotester",
  "_realowner": "albertopallotta",
  "_cranurl": true,
  "_releases": [
    {
      "version": "0.1.1",
      "date": "2025-09-22"
    },
    {
      "version": "0.1.2",
      "date": "2025-09-29"
    },
    {
      "version": "0.1.3",
      "date": "2025-10-20"
    },
    {
      "version": "0.1.4",
      "date": "2025-11-01"
    }
  ],
  "_exports": [
    "align_to_timeframe",
    "analyze_by_period",
    "analyze_drawdowns",
    "analyze_performance",
    "analyze_vs_benchmark",
    "apply_regime",
    "as_selection",
    "backtest_metrics",
    "bucket_returns",
    "calc_cci",
    "calc_distance",
    "calc_market_breadth",
    "calc_momentum",
    "calc_moving_average",
    "calc_relative_strength_rank",
    "calc_rolling_correlation",
    "calc_rolling_volatility",
    "calc_rsi",
    "calc_sector_breadth",
    "calc_sector_relative_indicators",
    "calc_stochastic_d",
    "calc_stochrsi",
    "calculate_daily_values",
    "calculate_drawdown_series",
    "cap_exposure",
    "cap_turnover",
    "carry_forward_weights",
    "combine_filters",
    "combine_scores",
    "combine_weights",
    "convert_to_nweeks",
    "coverage_by_date",
    "create_regime_buckets",
    "csv_adapter",
    "cv_tune_seq",
    "demo_sector_map",
    "download_sp500_sectors",
    "ensure_dt_copy",
    "evaluate_scores",
    "filter_above",
    "filter_below",
    "filter_between",
    "filter_by_percentile",
    "filter_rank",
    "filter_threshold",
    "filter_top_n",
    "filter_top_n_where",
    "get_data_frequency",
    "ic_series",
    "invert_signal",
    "join_panels",
    "limit_positions",
    "list_examples",
    "load_mixed_symbols",
    "make_labels",
    "manual_adapter",
    "membership_stability",
    "metric_sharpe",
    "ml_add_interactions",
    "ml_backtest",
    "ml_backtest_multi",
    "ml_backtest_seq",
    "ml_ic_series_on_scores",
    "ml_make_ensemble",
    "ml_make_model",
    "ml_make_seq_model",
    "ml_panel_op",
    "ml_panel_reduce",
    "ml_plot_ic_roll",
    "ml_prepare_features",
    "panel_lag",
    "panel_returns_simple",
    "perf_metrics",
    "portfolio_returns",
    "pt_collect_results",
    "rank_within_sector",
    "rebalance_calendar",
    "roll_fit_predict",
    "roll_fit_predict_seq",
    "roll_ic_stats",
    "run_backtest",
    "run_example",
    "run_param_grid",
    "run_walk_forward",
    "safe_divide",
    "scores_oos_only",
    "select_top_k_scores",
    "select_top_k_scores_by_group",
    "sql_adapter",
    "sql_adapter_adjusted",
    "switch_weights",
    "transform_scores",
    "tune_ml_backtest",
    "turnover_by_date",
    "update_vix_in_db",
    "validate_data_format",
    "validate_group_map",
    "validate_no_leakage",
    "vol_target",
    "weight_by_hrp",
    "weight_by_rank",
    "weight_by_regime",
    "weight_by_risk_parity",
    "weight_by_signal",
    "weight_by_volatility",
    "weight_equally",
    "weight_from_scores",
    "wf_report",
    "wf_stitch",
    "wf_sweep_tabular",
    "yahoo_adapter"
  ],
  "_datasets": [
    {
      "name": "sample_prices_daily",
      "title": "Sample Daily Stock Prices",
      "object": "sample_prices_daily",
      "file": "sample_prices_daily.rda",
      "class": [
        "data.table",
        "data.frame"
      ],
      "fields": [
        "Date",
        "AAPL",
        "AMZN",
        "BA",
        "BAC",
        "CAT",
        "CVX",
        "DIS",
        "GOOGL",
        "GS",
        "HD",
        "HON",
        "JNJ",
        "JPM",
        "MSFT",
        "PFE",
        "SPY",
        "TLT",
        "UNH",
        "WMT",
        "XOM"
      ],
      "rows": 754,
      "table": true,
      "tojson": true
    },
    {
      "name": "sample_prices_weekly",
      "title": "Sample Weekly Stock Prices",
      "object": "sample_prices_weekly",
      "file": "sample_prices_weekly.rda",
      "class": [
        "data.table",
        "data.frame"
      ],
      "fields": [
        "Date",
        "AAPL",
        "AMZN",
        "BA",
        "BAC",
        "CAT",
        "CVX",
        "DIS",
        "GOOGL",
        "GS",
        "HD",
        "HON",
        "JNJ",
        "JPM",
        "MSFT",
        "PFE",
        "SPY",
        "TLT",
        "UNH",
        "WMT",
        "XOM"
      ],
      "rows": 158,
      "table": true,
      "tojson": true
    },
    {
      "name": "sample_sp500_sectors",
      "title": "S&P 500 Sector Mappings",
      "object": "sample_sp500_sectors",
      "file": "sample_sp500_sectors.rda",
      "class": [
        "data.table",
        "data.frame"
      ],
      "fields": [
        "Symbol",
        "Sector"
      ],
      "rows": 18,
      "table": true,
      "tojson": true
    }
  ],
  "_help": [
    {
      "page": "align_to_timeframe",
      "title": "Align Data to Strategy Timeframe",
      "topics": [
        "align_to_timeframe"
      ]
    },
    {
      "page": "analyze_by_period",
      "title": "Period-level summary statistics",
      "topics": [
        "analyze_by_period"
      ]
    },
    {
      "page": "analyze_drawdowns",
      "title": "Analyze Drawdown Characteristics",
      "topics": [
        "analyze_drawdowns"
      ]
    },
    {
      "page": "analyze_performance",
      "title": "Analyze Backtest Performance with Daily Monitoring",
      "topics": [
        "analyze_performance"
      ]
    },
    {
      "page": "analyze_vs_benchmark",
      "title": "Benchmark-relative performance statistics",
      "topics": [
        "analyze_vs_benchmark"
      ]
    },
    {
      "page": "apply_regime",
      "title": "Apply Market Regime Filter",
      "topics": [
        "apply_regime"
      ]
    },
    {
      "page": "as_selection",
      "title": "Convert Conditions to Selection Format",
      "topics": [
        "as_selection"
      ]
    },
    {
      "page": "backtest_metrics",
      "title": "Calculate Comprehensive Backtest Metrics",
      "topics": [
        "backtest_metrics"
      ]
    },
    {
      "page": "bucket_returns",
      "title": "Bucketed label analysis by score rank",
      "topics": [
        "bucket_returns"
      ]
    },
    {
      "page": "calc_cci",
      "title": "Calculate Commodity Channel Index (CCI)",
      "topics": [
        "calc_cci"
      ]
    },
    {
      "page": "calc_distance",
      "title": "Calculate Distance from Reference",
      "topics": [
        "calc_distance"
      ]
    },
    {
      "page": "calc_market_breadth",
      "title": "Calculate Market Breadth Percentage",
      "topics": [
        "calc_market_breadth"
      ]
    },
    {
      "page": "calc_momentum",
      "title": "Calculate Price Momentum",
      "topics": [
        "calc_momentum"
      ]
    },
    {
      "page": "calc_moving_average",
      "title": "Calculate Moving Average",
      "topics": [
        "calc_moving_average"
      ]
    },
    {
      "page": "calc_relative_strength_rank",
      "title": "Calculate Cross-Sectional Ranking of Indicators",
      "topics": [
        "calc_relative_strength_rank"
      ]
    },
    {
      "page": "calc_rolling_correlation",
      "title": "Rolling correlation of each symbol to a benchmark",
      "topics": [
        "calc_rolling_correlation"
      ]
    },
    {
      "page": "calc_rolling_volatility",
      "title": "Calculate Rolling Volatility",
      "topics": [
        "calc_rolling_volatility"
      ]
    },
    {
      "page": "calc_rsi",
      "title": "Calculate Relative Strength Index (RSI)",
      "topics": [
        "calc_rsi"
      ]
    },
    {
      "page": "calc_sector_breadth",
      "title": "Calculate Market Breadth by Sector",
      "topics": [
        "calc_sector_breadth"
      ]
    },
    {
      "page": "calc_sector_relative_indicators",
      "title": "Calculate Indicators Relative to Sector Average",
      "topics": [
        "calc_sector_relative_indicators"
      ]
    },
    {
      "page": "calc_stochastic_d",
      "title": "Calculate Stochastic D Indicator",
      "topics": [
        "calc_stochastic_d"
      ]
    },
    {
      "page": "calc_stochrsi",
      "title": "Stochastic RSI (StochRSI) for multiple price series",
      "topics": [
        "calc_stochrsi"
      ]
    },
    {
      "page": "calculate_daily_values",
      "title": "Daily equity curve from positions and daily prices",
      "topics": [
        "calculate_daily_values"
      ]
    },
    {
      "page": "calculate_drawdown_series",
      "title": "Calculate Drawdown Time Series",
      "topics": [
        "calculate_drawdown_series"
      ]
    },
    {
      "page": "cap_exposure",
      "title": "Apply post-weight exposure caps",
      "topics": [
        "cap_exposure"
      ]
    },
    {
      "page": "cap_turnover",
      "title": "Cap turnover sequentially across dates",
      "topics": [
        "cap_turnover"
      ]
    },
    {
      "page": "carry_forward_weights",
      "title": "Carry-forward weights between rebalances (validation helper)",
      "topics": [
        "carry_forward_weights"
      ]
    },
    {
      "page": "combine_filters",
      "title": "Combine Multiple Filter Conditions",
      "topics": [
        "combine_filters"
      ]
    },
    {
      "page": "combine_scores",
      "title": "Combine multiple score panels (mean / weighted / rank-average / trimmed)",
      "topics": [
        "combine_scores"
      ]
    },
    {
      "page": "combine_weights",
      "title": "Combine Multiple Weighting Schemes",
      "topics": [
        "combine_weights"
      ]
    },
    {
      "page": "convert_to_nweeks",
      "title": "Convert Data to N-Week Frequency",
      "topics": [
        "convert_to_nweeks"
      ]
    },
    {
      "page": "coverage_by_date",
      "title": "Count finite entries per date",
      "topics": [
        "coverage_by_date"
      ]
    },
    {
      "page": "create_regime_buckets",
      "title": "Convert Continuous Indicator to Discrete Regimes",
      "topics": [
        "create_regime_buckets"
      ]
    },
    {
      "page": "csv_adapter",
      "title": "Load Price Data from CSV File",
      "topics": [
        "csv_adapter"
      ]
    },
    {
      "page": "cv_tune_seq",
      "title": "Purged/embargoed K-fold CV for sequence models (inside IS window)",
      "topics": [
        "cv_tune_seq"
      ]
    },
    {
      "page": "demo_sector_map",
      "title": "Demo sector (group) map for examples/tests",
      "topics": [
        "demo_sector_map"
      ]
    },
    {
      "page": "download_sp500_sectors",
      "title": "Download S&P 500 Sector Mappings from Wikipedia",
      "topics": [
        "download_sp500_sectors"
      ]
    },
    {
      "page": "ensure_dt_copy",
      "title": "Ensure Data.Table Without Mutation",
      "topics": [
        "ensure_dt_copy"
      ]
    },
    {
      "page": "evaluate_scores",
      "title": "Evaluate scores vs labels (IC and hit-rate)",
      "topics": [
        "evaluate_scores"
      ]
    },
    {
      "page": "filter_above",
      "title": "Filter Stocks Above Threshold",
      "topics": [
        "filter_above"
      ]
    },
    {
      "page": "filter_below",
      "title": "Filter Stocks Below Threshold",
      "topics": [
        "filter_below"
      ]
    },
    {
      "page": "filter_between",
      "title": "Filter Stocks Between Two Values",
      "topics": [
        "filter_between"
      ]
    },
    {
      "page": "filter_by_percentile",
      "title": "Filter by Percentile",
      "topics": [
        "filter_by_percentile"
      ]
    },
    {
      "page": "filter_rank",
      "title": "Select Top or Bottom N Stocks by Signal",
      "topics": [
        "filter_rank"
      ]
    },
    {
      "page": "filter_threshold",
      "title": "Filter by Threshold Value",
      "topics": [
        "filter_threshold"
      ]
    },
    {
      "page": "filter_top_n",
      "title": "Select Top N Stocks by Signal Value",
      "topics": [
        "filter_top_n"
      ]
    },
    {
      "page": "filter_top_n_where",
      "title": "Select Top N from Qualified Stocks",
      "topics": [
        "filter_top_n_where"
      ]
    },
    {
      "page": "get_data_frequency",
      "title": "Detect Data Frequency from Dates",
      "topics": [
        "get_data_frequency"
      ]
    },
    {
      "page": "ic_series",
      "title": "Information Coefficient time series",
      "topics": [
        "ic_series"
      ]
    },
    {
      "page": "invert_signal",
      "title": "Invert Signal Values for Preference Reversal",
      "topics": [
        "invert_signal"
      ]
    },
    {
      "page": "join_panels",
      "title": "Join multiple panels on intersecting dates (unique symbol names)",
      "topics": [
        "join_panels"
      ]
    },
    {
      "page": "limit_positions",
      "title": "Limit per-date selections to top-K (legacy API)",
      "topics": [
        "limit_positions"
      ]
    },
    {
      "page": "list_examples",
      "title": "List available example scripts",
      "topics": [
        "list_examples"
      ]
    },
    {
      "page": "load_mixed_symbols",
      "title": "Load Mixed Symbols Including VIX",
      "topics": [
        "load_mixed_symbols"
      ]
    },
    {
      "page": "make_labels",
      "title": "Make future-return labels aligned to the decision date",
      "topics": [
        "make_labels"
      ]
    },
    {
      "page": "manual_adapter",
      "title": "Adapter for User-Provided Data",
      "topics": [
        "manual_adapter"
      ]
    },
    {
      "page": "membership_stability",
      "title": "Membership stability across dates",
      "topics": [
        "membership_stability"
      ]
    },
    {
      "page": "metric_sharpe",
      "title": "Calculate Sharpe Ratio with Frequency Detection",
      "topics": [
        "metric_sharpe"
      ]
    },
    {
      "page": "ml_add_interactions",
      "title": "Add interaction panels to a feature list",
      "topics": [
        "ml_add_interactions"
      ]
    },
    {
      "page": "ml_backtest",
      "title": "One-call backtest wrapper (tabular features)",
      "topics": [
        "ml_backtest"
      ]
    },
    {
      "page": "ml_backtest_multi",
      "title": "Run multi-horizon ML backtests (pooled or sector-neutral)",
      "topics": [
        "ml_backtest_multi"
      ]
    },
    {
      "page": "ml_backtest_seq",
      "title": "One-call backtest wrapper (sequence features)",
      "topics": [
        "ml_backtest_seq"
      ]
    },
    {
      "page": "ml_ic_series_on_scores",
      "title": "Rank-IC series computed on score (rebalance) dates",
      "topics": [
        "ml_ic_series_on_scores"
      ]
    },
    {
      "page": "ml_make_ensemble",
      "title": "NA-tolerant ensemble blender (row-wise)",
      "topics": [
        "ml_make_ensemble"
      ]
    },
    {
      "page": "ml_make_model",
      "title": "Model factory for tabular cross-sectional learners",
      "topics": [
        "ml_make_model"
      ]
    },
    {
      "page": "ml_make_seq_model",
      "title": "Deterministic sequence model factory (GRU/LSTM/CNN1D with linear fallback)",
      "topics": [
        "ml_make_seq_model"
      ]
    },
    {
      "page": "ml_panel_op",
      "title": "Panel-safe binary operation on aligned wide panels",
      "topics": [
        "ml_panel_op"
      ]
    },
    {
      "page": "ml_panel_reduce",
      "title": "Reduce multiple panels with a binary operator",
      "topics": [
        "ml_panel_reduce"
      ]
    },
    {
      "page": "ml_plot_ic_roll",
      "title": "Rolling rank-IC plot (rebalance dates; leakage-safe)",
      "topics": [
        "ml_plot_ic_roll"
      ]
    },
    {
      "page": "ml_prepare_features",
      "title": "Prepare tabular features (weekly + aligned daily volatility)",
      "topics": [
        "ml_prepare_features"
      ]
    },
    {
      "page": "panel_lag",
      "title": "Lag each symbol column by k steps",
      "topics": [
        "panel_lag"
      ]
    },
    {
      "page": "panel_returns_simple",
      "title": "Panel simple returns from prices",
      "topics": [
        "panel_returns_simple"
      ]
    },
    {
      "page": "perf_metrics",
      "title": "Portfolio performance metrics",
      "topics": [
        "perf_metrics"
      ]
    },
    {
      "page": "plot.backtest_result",
      "title": "Plot Backtest Results",
      "topics": [
        "plot.backtest_result"
      ]
    },
    {
      "page": "plot.param_grid_result",
      "title": "Plot Parameter Grid Results (1D/2D/3D and Facets)",
      "topics": [
        "plot.param_grid_result"
      ]
    },
    {
      "page": "plot.performance_analysis",
      "title": "Plot Performance Analysis Results",
      "topics": [
        "plot.performance_analysis"
      ]
    },
    {
      "page": "plot.wf_optimization_result",
      "title": "Plot Walk-Forward Results",
      "topics": [
        "plot.wf_optimization_result"
      ]
    },
    {
      "page": "portfolio_returns",
      "title": "Portfolio returns from weights and prices (CASH-aware)",
      "topics": [
        "portfolio_returns"
      ]
    },
    {
      "page": "print.backtest_result",
      "title": "Print Backtest Results",
      "topics": [
        "print.backtest_result"
      ]
    },
    {
      "page": "print.param_grid_result",
      "title": "Print a param_grid_result",
      "topics": [
        "print.param_grid_result"
      ]
    },
    {
      "page": "print.performance_analysis",
      "title": "Print Performance Analysis Results",
      "topics": [
        "print.performance_analysis"
      ]
    },
    {
      "page": "print.wf_optimization_result",
      "title": "Print a wf_optimization_result",
      "topics": [
        "print.wf_optimization_result"
      ]
    },
    {
      "page": "pt_collect_results",
      "title": "Collect diagnostics from two 'ml_backtest_multi()' runs",
      "concept": [
        "Chapter3-helpers"
      ],
      "topics": [
        "pt_collect_results"
      ]
    },
    {
      "page": "rank_within_sector",
      "title": "Rank Indicators Within Each Sector",
      "topics": [
        "rank_within_sector"
      ]
    },
    {
      "page": "rebalance_calendar",
      "title": "Rebalance calendar (rows with non-zero allocation)",
      "topics": [
        "rebalance_calendar"
      ]
    },
    {
      "page": "roll_fit_predict",
      "title": "Rolling fit/predict for tabular features (pooled / per-symbol / per-group)",
      "topics": [
        "roll_fit_predict"
      ]
    },
    {
      "page": "roll_fit_predict_seq",
      "title": "Rolling fit/predict for sequence models (flattened steps-by-p features)",
      "topics": [
        "roll_fit_predict_seq"
      ]
    },
    {
      "page": "roll_ic_stats",
      "title": "Rolling IC mean, standard deviation, and ICIR",
      "topics": [
        "roll_ic_stats"
      ]
    },
    {
      "page": "run_backtest",
      "title": "Run Portfolio Backtest",
      "topics": [
        "run_backtest"
      ]
    },
    {
      "page": "run_example",
      "title": "Run an Example Script",
      "topics": [
        "run_example"
      ]
    },
    {
      "page": "run_param_grid",
      "title": "Run Parameter Grid Optimization (safe + ergonomic)",
      "topics": [
        "run_param_grid"
      ]
    },
    {
      "page": "run_walk_forward",
      "title": "Walk-Forward Optimization Analysis",
      "topics": [
        "run_walk_forward"
      ]
    },
    {
      "page": "safe_divide",
      "title": "Safe Division with NA and Zero Handling",
      "topics": [
        "safe_divide"
      ]
    },
    {
      "page": "sample_prices_daily",
      "title": "Sample Daily Stock Prices",
      "topics": [
        "sample_prices_daily"
      ]
    },
    {
      "page": "sample_prices_weekly",
      "title": "Sample Weekly Stock Prices",
      "topics": [
        "sample_prices_weekly"
      ]
    },
    {
      "page": "sample_sp500_sectors",
      "title": "S&P 500 Sector Mappings",
      "topics": [
        "sample_sp500_sectors"
      ]
    },
    {
      "page": "scores_oos_only",
      "title": "Mask score tables to out-of-sample decision dates",
      "concept": [
        "Chapter3-helpers"
      ],
      "topics": [
        "scores_oos_only"
      ]
    },
    {
      "page": "select_top_k_scores",
      "title": "Select top-K scores per date",
      "topics": [
        "select_top_k_scores"
      ]
    },
    {
      "page": "select_top_k_scores_by_group",
      "title": "Select top-k symbols per group by score",
      "topics": [
        "select_top_k_scores_by_group"
      ]
    },
    {
      "page": "sql_adapter",
      "title": "Load Price Data from SQL Database",
      "topics": [
        "sql_adapter"
      ]
    },
    {
      "page": "sql_adapter_adjusted",
      "title": "Load Adjusted Price Data from SQL Database",
      "topics": [
        "sql_adapter_adjusted"
      ]
    },
    {
      "page": "summary.backtest_result",
      "title": "Summary method for backtest results",
      "topics": [
        "summary.backtest_result"
      ]
    },
    {
      "page": "switch_weights",
      "title": "Switch Between Weighting Schemes",
      "topics": [
        "switch_weights"
      ]
    },
    {
      "page": "transform_scores",
      "title": "Per-date score transform (z-score or rank)",
      "topics": [
        "transform_scores"
      ]
    },
    {
      "page": "tune_ml_backtest",
      "title": "Quick grid tuning for tabular pipeline",
      "topics": [
        "tune_ml_backtest"
      ]
    },
    {
      "page": "turnover_by_date",
      "title": "Turnover by date",
      "topics": [
        "turnover_by_date"
      ]
    },
    {
      "page": "update_vix_in_db",
      "title": "Update VIX data in database",
      "topics": [
        "update_vix_in_db"
      ]
    },
    {
      "page": "validate_data_format",
      "title": "Validate Data Format for Library Functions",
      "topics": [
        "validate_data_format"
      ]
    },
    {
      "page": "validate_group_map",
      "title": "Validate a symbol-to-group mapping",
      "topics": [
        "validate_group_map"
      ]
    },
    {
      "page": "validate_no_leakage",
      "title": "Quick leakage guard: date alignment & NA expectations",
      "topics": [
        "validate_no_leakage"
      ]
    },
    {
      "page": "vol_target",
      "title": "Volatility targeting (row-wise) with optional down-only cap",
      "topics": [
        "vol_target"
      ]
    },
    {
      "page": "weight_by_hrp",
      "title": "Hierarchical Risk Parity Weighting",
      "topics": [
        "weight_by_hrp"
      ]
    },
    {
      "page": "weight_by_rank",
      "title": "Rank-Based Portfolio Weighting",
      "topics": [
        "weight_by_rank"
      ]
    },
    {
      "page": "weight_by_regime",
      "title": "Regime-Based Adaptive Weighting",
      "topics": [
        "weight_by_regime"
      ]
    },
    {
      "page": "weight_by_risk_parity",
      "title": "Risk Parity Weighting Suite",
      "topics": [
        "weight_by_risk_parity"
      ]
    },
    {
      "page": "weight_by_signal",
      "title": "Signal-Based Portfolio Weighting",
      "topics": [
        "weight_by_signal"
      ]
    },
    {
      "page": "weight_by_volatility",
      "title": "Volatility-Based Portfolio Weighting",
      "topics": [
        "weight_by_volatility"
      ]
    },
    {
      "page": "weight_equally",
      "title": "Equal Weight Portfolio Construction",
      "topics": [
        "weight_equally"
      ]
    },
    {
      "page": "weight_from_scores",
      "title": "Map scores to portfolio weights",
      "topics": [
        "weight_from_scores"
      ]
    },
    {
      "page": "wf_report",
      "title": "Generate Walk-Forward Report",
      "topics": [
        "wf_report"
      ]
    },
    {
      "page": "wf_stitch",
      "title": "Stitch Out-of-Sample Results (overlap-safe)",
      "topics": [
        "wf_stitch"
      ]
    },
    {
      "page": "wf_sweep_tabular",
      "title": "Walk-forward sweep of tabular configs (window-wise distribution of metrics)",
      "topics": [
        "wf_sweep_tabular"
      ]
    },
    {
      "page": "yahoo_adapter",
      "title": "Download Price Data from Yahoo Finance",
      "topics": [
        "yahoo_adapter"
      ]
    }
  ],
  "_readme": "https://github.com/albertopallotta/portfoliotester/raw/HEAD/README.md",
  "_rundeps": [
    "curl",
    "data.table",
    "lattice",
    "TTR",
    "xts",
    "zoo"
  ],
  "_vignettes": [
    {
      "source": "getting-started.Rmd",
      "filename": "getting-started.html",
      "title": "Getting Started with PortfolioTesteR",
      "engine": "knitr::rmarkdown",
      "headings": [
        "PortfolioTesteR: Test Investment Strategies with English-Like Code",
        "Installation",
        "Load the Library",
        "Strategy 1: Simple Momentum (Beginner)",
        "Strategy 2: Multi-Signal Combination (Intermediate)",
        "Strategy 3: Risk-Managed Momentum with Stop Loss (Intermediate)",
        "Strategy 4: Regime-Adaptive Volatility (Advanced)",
        "Strategy 5: Multi-Factor with Position Limits (Advanced)",
        "Strategy 6: StochRSI Acceleration + Inverse-Vol Risk Parity",
        "Optional: Live Data via Yahoo (CRAN-safe)",
        "Key Concepts Recap",
        "Getting Help",
        "Citation"
      ],
      "created": "2025-09-07 17:54:13",
      "modified": "2025-11-01 13:28:05",
      "commits": 5
    },
    {
      "source": "Getting_Started_Advanced.Rmd",
      "filename": "Getting_Started_Advanced.html",
      "title": "ML Strategies with PortfolioTesteR (Advanced Getting Started)",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Why ML in PortfolioTesteR",
        "1) Baseline ML (pooled): Ridge regression",
        "2) Ensemble: Ridge +  XGBoost",
        "3) Sector-neutral modelling (tabular XGBoost, per-group)",
        "4) Sequence model (GRU, pooled): \"returns pyramid\"",
        "5) Sequence model (GRU, per-group): sector-neutral sequences",
        "6) Light tuning: Top-K and softmax temperature",
        "Recap & Next Steps"
      ],
      "created": "2025-10-03 18:56:44",
      "modified": "2025-11-01 13:28:05",
      "commits": 4
    },
    {
      "source": "optimization-walkforward.Rmd",
      "filename": "optimization-walkforward.html",
      "title": "Optimization and Walk-Forward with PortfolioTesteR",
      "engine": "knitr::rmarkdown",
      "headings": [],
      "created": "2025-09-25 13:44:01",
      "modified": "2025-11-01 13:28:05",
      "commits": 3
    }
  ],
  "_score": 6.186391215695494,
  "_indexed": true,
  "_nocasepkg": "portfoliotester",
  "_universes": [
    "albertopallotta"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.1.4",
      "date": "2026-05-31T08:31:45.000Z",
      "distro": "noble",
      "commit": "394d29e8b68b240b0876f82e666c67da9bbf5d4f",
      "fileid": "81abac16a5cc5c94a6f2014592c41e140afa114950281325bd36b33a8e7a5517",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/albertopallotta/actions/runs/26707633791"
    },
    {
      "r": "4.6.0",
      "os": "linux",
      "version": "0.1.4",
      "date": "2026-05-31T08:31:05.000Z",
      "distro": "noble",
      "commit": "394d29e8b68b240b0876f82e666c67da9bbf5d4f",
      "fileid": "8d2189ffb58db421be8dcbfb44685c0c083dc13d0527dd0ce502ddb510e08110",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/albertopallotta/actions/runs/26707633791"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.1.4",
      "date": "2026-05-31T08:31:29.000Z",
      "commit": "394d29e8b68b240b0876f82e666c67da9bbf5d4f",
      "fileid": "1d3eef17f0fac875c80785b25bf48e327d69b1cb00d83bfbed646971922cdf77",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/albertopallotta/actions/runs/26707633791"
    },
    {
      "r": "4.6.0",
      "os": "mac",
      "version": "0.1.4",
      "date": "2026-05-31T08:30:37.000Z",
      "commit": "394d29e8b68b240b0876f82e666c67da9bbf5d4f",
      "fileid": "d2acaae75e44bdb7f28d6d6d5f8190eb415abaaec416b79f54a86031d52e5e8a",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/albertopallotta/actions/runs/26707633791"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.1.4",
      "date": "2026-05-31T08:30:58.000Z",
      "commit": "394d29e8b68b240b0876f82e666c67da9bbf5d4f",
      "fileid": "61a3b412bc0f12136bc7b412717d2e484c243f52d62dd3d49815e4acec5b04f6",
      "status": "success",
      "buildurl": "https://github.com/r-universe/albertopallotta/actions/runs/26707633791"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.1.4",
      "date": "2026-05-31T08:30:03.000Z",
      "commit": "394d29e8b68b240b0876f82e666c67da9bbf5d4f",
      "fileid": "65282c48e64b600b8f72d9895084207848ad67f16a62bff27d0e76f1fc9c4bb2",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/albertopallotta/actions/runs/26707633791"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.1.4",
      "date": "2026-05-31T08:30:01.000Z",
      "commit": "394d29e8b68b240b0876f82e666c67da9bbf5d4f",
      "fileid": "7559bc671a78d6d12228e63daff57c8a98b933dd0ca419aa9e33090ecb7a8f93",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/albertopallotta/actions/runs/26707633791"
    },
    {
      "r": "4.6.0",
      "os": "win",
      "version": "0.1.4",
      "date": "2026-05-31T08:30:09.000Z",
      "commit": "394d29e8b68b240b0876f82e666c67da9bbf5d4f",
      "fileid": "081eacdf729fe7b4fd5d0db8fc758ae3a27ace83aeaae3eb7c9796f4b8bb4818",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/albertopallotta/actions/runs/26707633791"
    }
  ]
}