PortfolioTesteR
Test Investment Strategies with English-Like Code
v0.1.4
·
Nov 1, 2025
·
MIT + file LICENSE
Description
Design, backtest, and analyze portfolio strategies using simple, English-like function chains. Includes technical indicators, flexible stock selection, portfolio construction methods (equal weighting, signal weighting, inverse volatility, hierarchical risk parity), and a compact backtesting engine for portfolio returns, drawdowns, and summary metrics.
Downloads
204
Last 30 days
22149th
642
Last 90 days
1.7K
Last year
Trend: -6.9% (30d vs prior 30d)
CRAN Check Status
3
ERROR
11
OK
Show all 14 flavors
| Flavor | Status |
|---|---|
| r-devel-linux-x86_64-debian-clang | OK |
| r-devel-linux-x86_64-debian-gcc | OK |
| r-devel-linux-x86_64-fedora-clang | OK |
| r-devel-linux-x86_64-fedora-gcc | OK |
| r-devel-macos-arm64 | OK |
| r-devel-windows-x86_64 | OK |
| r-oldrel-macos-arm64 | ERROR |
| r-oldrel-macos-x86_64 | ERROR |
| r-oldrel-windows-x86_64 | ERROR |
| r-patched-linux-x86_64 | OK |
| r-release-linux-x86_64 | OK |
| r-release-macos-arm64 | OK |
| r-release-macos-x86_64 | OK |
| r-release-windows-x86_64 | OK |
Check details (6 non-OK)
ERROR
r-oldrel-macos-arm64
re-building of vignette outputs
Error(s) in re-building vignettes:
--- re-building ‘Getting_Started_Advanced.Rmd’ using rmarkdown
Quitting from Getting_Started_Advanced.Rmd:84-108 [baseline_pooled]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<error/rlang_error>
Error in `.roll_align_common()`:
! No common dates across panels.
---
Backtrace:
▆
1. └─PortfolioTesteR::ml_backtest(...)
2. └─PortfolioTesteR::roll_fit_predict(...)
3. └─PortfolioTesteR:::.roll_align_common(c(features_list, list(label)))
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error: processing vignette 'Getting_Started_Advanced.Rmd' failed with diagnostics:
No common dates across panels.
--- failed re-building ‘Getting_Started_Advanced.Rmd’
--- re-building ‘getting-started.Rmd’ using rmarkdown
2026-03-23 08:12:33.727 R[41747:203675] XType: Using static font registry.
--- finished re-building ‘getting-started.Rmd’
--- re-building ‘optimization-walkforward.Rmd’ using rmarkdown
2026-03-23 08:12:37.319 R[45338:208678] XType: Using static font registry.
--- finished re-building ‘optimization-walkforward.Rmd’
SUMMARY: processing the following file failed:
‘Getting_Started_Advanced.Rmd’
Error: Vignette re-building failed.
Execution halted
ERROR
r-oldrel-macos-arm64
tests
Running ‘testthat.R’ [1s/1s]
Running the tests in ‘tests/testthat.R’ failed.
Complete output:
> if (requireNamespace("testthat", quietly = TRUE)) {
+ library(testthat)
+ library(PortfolioTesteR)
+ test_check("PortfolioTesteR")
+ } else {
+ message("Skipping tests: 'testthat' not installed")
+ }
Saving _problems/test-ml-helpers-101.R
[ FAIL 1 | WARN 0 | SKIP 3 | PASS 55 ]
══ Skipped tests (3) ═══════════════════════════════════════════════════════════
• On CRAN (3): 'test-optimization.R:2:3', 'test-optimization.R:46:3',
'test-walk-forward.R:2:3'
══ Failed tests ════════════════════════════════════════════════════════════════
── Error ('test-ml-helpers.R:92:3'): backtest invariants hold on active dates (smoke, linear) ──
Error in `.roll_align_common(c(features_list, list(label)))`: No common dates across panels.
Backtrace:
▆
1. └─PortfolioTesteR::ml_backtest(...) at test-ml-helpers.R:92:3
2. └─PortfolioTesteR::roll_fit_predict(...)
3. └─PortfolioTesteR:::.roll_align_common(c(features_list, list(label)))
[ FAIL 1 | WARN 0 | SKIP 3 | PASS 55 ]
Error:
! Test failures.
Execution halted
ERROR
r-oldrel-macos-x86_64
re-building of vignette outputs
Error(s) in re-building vignettes:
--- re-building ‘Getting_Started_Advanced.Rmd’ using rmarkdown
Quitting from Getting_Started_Advanced.Rmd:84-108 [baseline_pooled]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<error/rlang_error>
Error in `.roll_align_common()`:
! No common dates across panels.
---
Backtrace:
▆
1. └─PortfolioTesteR::ml_backtest(...)
2. └─PortfolioTesteR::roll_fit_predict(...)
3. └─PortfolioTesteR:::.roll_align_common(c(features_list, list(label)))
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error: processing vignette 'Getting_Started_Advanced.Rmd' failed with diagnostics:
No common dates across panels.
--- failed re-building ‘Getting_Started_Advanced.Rmd’
--- re-building ‘getting-started.Rmd’ using rmarkdown
--- finished re-building ‘getting-started.Rmd’
--- re-building ‘optimization-walkforward.Rmd’ using rmarkdown
--- finished re-building ‘optimization-walkforward.Rmd’
SUMMARY: processing the following file failed:
‘Getting_Started_Advanced.Rmd’
Error: Vignette re-building failed.
Execution halted
ERROR
r-oldrel-macos-x86_64
tests
Running ‘testthat.R’ [4s/11s]
Running the tests in ‘tests/testthat.R’ failed.
Complete output:
> if (requireNamespace("testthat", quietly = TRUE)) {
+ library(testthat)
+ library(PortfolioTesteR)
+ test_check("PortfolioTesteR")
+ } else {
+ message("Skipping tests: 'testthat' not installed")
+ }
Saving _problems/test-ml-helpers-101.R
[ FAIL 1 | WARN 0 | SKIP 3 | PASS 55 ]
══ Skipped tests (3) ═══════════════════════════════════════════════════════════
• On CRAN (3): 'test-optimization.R:2:3', 'test-optimization.R:46:3',
'test-walk-forward.R:2:3'
══ Failed tests ════════════════════════════════════════════════════════════════
── Error ('test-ml-helpers.R:92:3'): backtest invariants hold on active dates (smoke, linear) ──
Error in `.roll_align_common(c(features_list, list(label)))`: No common dates across panels.
Backtrace:
▆
1. └─PortfolioTesteR::ml_backtest(...) at test-ml-helpers.R:92:3
2. └─PortfolioTesteR::roll_fit_predict(...)
3. └─PortfolioTesteR:::.roll_align_common(c(features_list, list(label)))
[ FAIL 1 | WARN 0 | SKIP 3 | PASS 55 ]
Error:
! Test failures.
Execution halted
ERROR
r-oldrel-windows-x86_64
re-building of vignette outputs
Error(s) in re-building vignettes:
--- re-building 'Getting_Started_Advanced.Rmd' using rmarkdown
Quitting from Getting_Started_Advanced.Rmd:84-108 [baseline_pooled]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<error/rlang_error>
Error in `.roll_align_common()`:
! No common dates across panels.
---
Backtrace:
▆
1. └─PortfolioTesteR::ml_backtest(...)
2. └─PortfolioTesteR::roll_fit_predict(...)
3. └─PortfolioTesteR:::.roll_align_common(c(features_list, list(label)))
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error: processing vignette 'Getting_Started_Advanced.Rmd' failed with diagnostics:
No common dates across panels.
--- failed re-building 'Getting_Started_Advanced.Rmd'
--- re-building 'getting-started.Rmd' using rmarkdown
--- finished re-building 'getting-started.Rmd'
--- re-building 'optimization-walkforward.Rmd' using rmarkdown
--- finished re-building 'optimization-walkforward.Rmd'
SUMMARY: processing the following file failed:
'Getting_Started_Advanced.Rmd'
Error: Vignette re-building failed.
Execution halted
ERROR
r-oldrel-windows-x86_64
tests
Running 'testthat.R' [8s]
Running the tests in 'tests/testthat.R' failed.
Complete output:
> if (requireNamespace("testthat", quietly = TRUE)) {
+ library(testthat)
+ library(PortfolioTesteR)
+ test_check("PortfolioTesteR")
+ } else {
+ message("Skipping tests: 'testthat' not installed")
+ }
Saving _problems/test-ml-helpers-101.R
[ FAIL 1 | WARN 0 | SKIP 3 | PASS 55 ]
══ Skipped tests (3) ═══════════════════════════════════════════════════════════
• On CRAN (3): 'test-optimization.R:2:3', 'test-optimization.R:46:3',
'test-walk-forward.R:2:3'
══ Failed tests ════════════════════════════════════════════════════════════════
── Error ('test-ml-helpers.R:92:3'): backtest invariants hold on active dates (smoke, linear) ──
Error in `.roll_align_common(c(features_list, list(label)))`: No common dates across panels.
Backtrace:
▆
1. └─PortfolioTesteR::ml_backtest(...) at test-ml-helpers.R:92:3
2. └─PortfolioTesteR::roll_fit_predict(...)
3. └─PortfolioTesteR:::.roll_align_common(c(features_list, list(label)))
[ FAIL 1 | WARN 0 | SKIP 3 | PASS 55 ]
Error:
! Test failures.
Execution halted
Check History
ERROR 11 OK · 0 NOTE · 0 WARNING · 3 ERROR · 0 FAILURE Mar 10, 2026
ERROR
r-oldrel-macos-arm64
tests
Running ‘testthat.R’ [1s/1s]
Running the tests in ‘tests/testthat.R’ failed.
Complete output:
> if (requireNamespace("testthat", quietly = TRUE)) {
+ library(testthat)
+ library(PortfolioTesteR)
+ test_check("PortfolioTesteR")
+ } els
...[truncated]...
...) at test-ml-helpers.R:92:3
2. └─PortfolioTesteR::roll_fit_predict(...)
3. └─PortfolioTesteR:::.roll_align_common(c(features_list, list(label)))
[ FAIL 1 | WARN 0 | SKIP 3 | PASS 55 ]
Error:
! Test failures.
Execution halted
ERROR
r-oldrel-macos-x86_64
tests
Running ‘testthat.R’ [4s/9s]
Running the tests in ‘tests/testthat.R’ failed.
Complete output:
> if (requireNamespace("testthat", quietly = TRUE)) {
+ library(testthat)
+ library(PortfolioTesteR)
+ test_check("PortfolioTesteR")
+ } els
...[truncated]...
...) at test-ml-helpers.R:92:3
2. └─PortfolioTesteR::roll_fit_predict(...)
3. └─PortfolioTesteR:::.roll_align_common(c(features_list, list(label)))
[ FAIL 1 | WARN 0 | SKIP 3 | PASS 55 ]
Error:
! Test failures.
Execution halted
ERROR
r-oldrel-windows-x86_64
tests
Running 'testthat.R' [8s]
Running the tests in 'tests/testthat.R' failed.
Complete output:
> if (requireNamespace("testthat", quietly = TRUE)) {
+ library(testthat)
+ library(PortfolioTesteR)
+ test_check("PortfolioTesteR")
+ } else {
...[truncated]...
...) at test-ml-helpers.R:92:3
2. └─PortfolioTesteR::roll_fit_predict(...)
3. └─PortfolioTesteR:::.roll_align_common(c(features_list, list(label)))
[ FAIL 1 | WARN 0 | SKIP 3 | PASS 55 ]
Error:
! Test failures.
Execution halted