{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/numerical-schemes-for-signature-kernels","title":"Numerical Schemes for Signature Kernels","arxiv_id":"2502.08470","date":"2025-02-12","proceeding":null,"authors":["Thomas Cass","Francesco Piatti","Jeffrey Pei"],"abstract":"Signature kernels have emerged as a powerful tool within kernel methods for sequential data. In the paper \"The Signature Kernel is the solution of a Goursat PDE\", the authors identify a kernel trick that demonstrates that, for continuously differentiable paths, the signature kernel satisfies a Goursat problem for a hyperbolic partial differential equation (PDE) in two independent time variables. While finite difference methods have been explored for this PDE, they face limitations in accuracy and stability when handling highly oscillatory inputs. In this work, we introduce two advanced numerical schemes that leverage polynomial representations of boundary conditions through either approximation or interpolation techniques, and rigorously establish the theoretical convergence of the polynomial approximation scheme. Experimental evaluations reveal that our approaches yield improvements of several orders of magnitude in mean absolute percentage error (MAPE) compared to traditional finite difference schemes, without increasing computational complexity. Furthermore, like finite difference methods, our algorithms can be GPU-parallelized to reduce computational complexity from quadratic to linear in the length of the input sequences, thereby improving scalability for high-frequency data. We have implemented these algorithms in a dedicated Python library, which is publicly available at: https://github.com/FrancescoPiatti/polysigkernel.","url_abs":"https://arxiv.org/abs/2502.08470v1","url_pdf":"https://arxiv.org/pdf/2502.08470v1.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"numerical-schemes-for-signature-kernels","repo_url":"https://github.com/francescopiatti/polysigkernel","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"jax","reach":null}],"tasks":[{"task_slug":null,"task_name":"GPU"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=2502.08470","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2502.08470"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/francescopiatti/polysigkernel","reach":null}],"summary":{"ran_violates":2,"ran_honours":1},"by_repo_kind":{"official":{"samples":3,"ran":3,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"ed5c1eeb28a8fc22","entry":"mean_absolute_error","repo":"francescopiatti/polysigkernel","repo_kind":"official","path":"experiments/error_analysis.py","file_url":"https://github.com/francescopiatti/polysigkernel/blob/HEAD/experiments/error_analysis.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"ed5c1eeb28a8fc22"}},{"code_sha256_prefix":"cb11a62f2210930e","entry":"mean_absolute_percentage_error","repo":"francescopiatti/polysigkernel","repo_kind":"official","path":"experiments/error_analysis.py","file_url":"https://github.com/francescopiatti/polysigkernel/blob/HEAD/experiments/error_analysis.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"cb11a62f2210930e"}},{"code_sha256_prefix":"9ad3b5265c0a28e5","entry":"root_mean_squared_error","repo":"francescopiatti/polysigkernel","repo_kind":"official","path":"experiments/error_analysis.py","file_url":"https://github.com/francescopiatti/polysigkernel/blob/HEAD/experiments/error_analysis.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"9ad3b5265c0a28e5"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}