import%20marimo%0A%0A__generated_with%20%3D%20%220.18.4%22%0Aapp%20%3D%20marimo.App()%0A%0Awith%20app.setup%3A%0A%20%20%20%20import%20math%0A%0A%20%20%20%20import%20marimo%20as%20mo%0A%0A%20%20%20%20from%20jsharpe%20import%20probabilistic_sharpe_ratio%0A%0A%0A%40app.function%0Adef%20fmt(x%2C%20precision%3A%20int%20%3D%203)%20-%3E%20str%3A%0A%20%20%20%20%22%22%22Format%20values%20for%20display.%22%22%22%0A%20%20%20%20if%20x%20is%20None%3A%0A%20%20%20%20%20%20%20%20return%20%22%E2%80%94%22%0A%20%20%20%20try%3A%0A%20%20%20%20%20%20%20%20if%20math.isnan(x)%20or%20math.isinf(x)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20str(x)%0A%20%20%20%20%20%20%20%20return%20f%22%7Bx%3A.%7Bprecision%7Df%7D%22%0A%20%20%20%20except%20Exception%3A%0A%20%20%20%20%20%20%20%20return%20str(x)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20mo.md(%22%22%22%0A%20%20%20%20%23%20Probabilistic%20Sharpe%20Ratio%20(PSR)%0A%20%20%20%20Explore%20PSR%20interactively%20using%20jsharpe.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_inputs()%3A%0A%20%20%20%20%22%22%22Create%20all%20widgets%20and%20return%20them%20in%20a%20dict%20for%20safe%20access.%22%22%22%0A%20%20%20%20%23%20Basic%0A%20%20%20%20sr%20%3D%20mo.ui.slider(0.0%2C%200.5%2C%20step%3D0.05%2C%20label%3D%22SR%20(observed)%22)%0A%20%20%20%20sr0%20%3D%20mo.ui.slider(0.0%2C%200.5%2C%20step%3D0.05%2C%20label%3D%22SR0%20(benchmark)%22)%0A%20%20%20%20T%20%3D%20mo.ui.slider(12%2C%20500%2C%20value%3D24%2C%20step%3D12%2C%20label%3D%22T%20(observations)%22)%0A%0A%20%20%20%20%23%20Advanced%0A%20%20%20%20gamma3%20%3D%20mo.ui.slider(-3.0%2C%203.0%2C%20value%3D0.0%2C%20step%3D0.1%2C%20label%3D%22gamma3%20(skew)%22)%0A%20%20%20%20gamma4%20%3D%20mo.ui.slider(2.0%2C%208.0%2C%20step%3D0.1%2C%20label%3D%22gamma4%20(kurtosis)%22)%0A%20%20%20%20rho%20%3D%20mo.ui.slider(0.0%2C%200.9%2C%20value%3D0.0%2C%20step%3D0.05%2C%20label%3D%22rho%20(autocorr)%22)%0A%20%20%20%20K%20%3D%20mo.ui.slider(1%2C%20200%2C%20value%3D1%2C%20step%3D1%2C%20label%3D%22K%20(trials)%22)%0A%0A%20%20%20%20mo.hstack(%0A%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20mo.vstack(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.md(%22%23%23%23%20Basic%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20sr%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20sr0%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20T%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20mo.vstack(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.md(%22%23%23%23%20Advanced%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20gamma3%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20gamma4%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20rho%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20K%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20)%0A%20%20%20%20return%20K%2C%20T%2C%20gamma3%2C%20gamma4%2C%20rho%2C%20sr%2C%20sr0%0A%0A%0A%40app.cell%0Adef%20display(K%2C%20T%2C%20gamma3%2C%20gamma4%2C%20rho%2C%20sr%2C%20sr0)%3A%0A%20%20%20%20%22%22%22Render%20the%20PSR%20result%20markdown.%0A%0A%20%20%20%20Args%3A%0A%20%20%20%20%20%20%20%20K%3A%20Trials%20slider%20widget%20controlling%20multiple-testing%20adjustment.%0A%20%20%20%20%20%20%20%20T%3A%20Observations%20slider%20widget.%0A%20%20%20%20%20%20%20%20gamma3%3A%20Skewness%20(third%20standardized%20moment)%20widget.%0A%20%20%20%20%20%20%20%20gamma4%3A%20Kurtosis%20(fourth%20standardized%20moment)%20widget.%0A%20%20%20%20%20%20%20%20rho%3A%20Autocorrelation%20widget.%0A%20%20%20%20%20%20%20%20sr%3A%20Observed%20Sharpe%20ratio%20widget.%0A%20%20%20%20%20%20%20%20sr0%3A%20Benchmark%20Sharpe%20ratio%20widget.%0A%20%20%20%20%22%22%22%0A%20%20%20%20mo.md(f%22%22%22%0A%20%20%20%20%23%23%23%20Result%0A%20%20%20%20**PSR%20%3D%20%7B%0A%20%20%20%20%20%20%20%20fmt(%0A%20%20%20%20%20%20%20%20%20%20%20%20probabilistic_sharpe_ratio(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20sr.value%2C%20sr0.value%2C%20T%3DT.value%2C%20gamma3%3Dgamma3.value%2C%20gamma4%3Dgamma4.value%2C%20rho%3Drho.value%2C%20K%3DK.value%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%204%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%7D**%0A%20%20%20%20SR%20%3D%20%7Bfmt(sr.value)%7D%20vs%20SR0%20%3D%20%7Bfmt(sr0.value)%7D%0A%20%20%20%20T%3D%7BT.value%7D%2C%20%CE%B3%E2%82%83%3D%7Bfmt(gamma3.value)%7D%2C%20%CE%B3%E2%82%84%3D%7Bfmt(gamma4.value)%7D%2C%20%CF%81%3D%7Bfmt(rho.value)%7D%2C%20K%3D%7BK.value%7D%0A%20%20%20%20%22%22%22)%0A%0A%20%20%20%20result%20%3D%20f%22%22%22%0A%20%20%20%20%23%23%23%20Result%0A%20%20%20%20**PSR%20%3D%20%7B%0A%20%20%20%20%20%20%20%20fmt(%0A%20%20%20%20%20%20%20%20%20%20%20%20probabilistic_sharpe_ratio(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20sr.value%2C%20sr0.value%2C%20T%3DT.value%2C%20gamma3%3Dgamma3.value%2C%20gamma4%3Dgamma4.value%2C%20rho%3Drho.value%2C%20K%3DK.value%0A%20%20%20%20%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%204%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%7D**%0A%20%20%20%20SR%20%3D%20%7Bfmt(sr.value)%7D%20vs%20SR0%20%3D%20%7Bfmt(sr0.value)%7D%0A%20%20%20%20T%3D%7BT.value%7D%2C%20%CE%B3%E2%82%83%3D%7Bfmt(gamma3.value)%7D%2C%20%CE%B3%E2%82%84%3D%7Bfmt(gamma4.value)%7D%2C%20%CF%81%3D%7Bfmt(rho.value)%7D%2C%20K%3D%7BK.value%7D%0A%20%20%20%20%22%22%22%0A%0A%20%20%20%20print(result)%0A%20%20%20%20return%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
b8a63d9fd0616ee59ea8cfb798b8301c