贡献

我希望大家能帮忙做一些事情:

  • 提高现有代码的性能(但不能以牺牲可读性为代价)

  • 增加新的优化目标。例如,如果想使用夏普比率以外的东西,请写一个优化器 (或者在 Issues 中提出建议,我会去看的)。

  • 帮助我写更多的测试! 如果你是一个正在学习量化金融和 python 单元测试的人,还有什么比在一个开源项目上写一些测试更好的练习方式呢?请随时检查边界情况,或不常见的参数组合,这可能会导致不易察觉的错误。

准则

尽早寻求反馈

在你开始为你的贡献编码之前,在 GitHub 提出一个问题 ,讨论该贡献是否适合该项目,可能是明智之举。

代码风格

对于这个项目,我使用了 Black 作为格式标准,并使用了所有的默认设置。 如果任何 PR 都遵循这个标准,我将非常感激,因为如果不遵循,我将不得不在合并前进行格式化。

测试

任何贡献必须伴随着单元测试(用 pytest 编写)。这些测试非常简单,只要找到相关的测试文件(或创建一个新的),然后写一堆 assert 语句。 测试应适用于在 test/stock_prices.csv 中提供的数据集,并应涵盖核心功能、警告/错误(检查它们是否按预期提出),以及限制性行为或边界用例。

文档

内联注释在需要时是很好的,但不要太过分。文档串的内容应该在语义上遵循 PEP257 ,在语法上遵循 sphinx,这样 sphinx 就能自动记录方法和它们的参数。我个人不喜欢在文档串中写很长的段落:在我看来,文档串应该简要地说明一个对象如何被使用,而其余的解释和理论背景应该被放到 ReadTheDocs。

我希望在修改时能附上相关的文档,它不一定要漂亮,因为我可能会在它进入 ReadTheDocs 之前努力将其整理好,但写代码的人用他们自己的话来解释,会让事情简单得多。

问题

如果你有任何与项目有关的问题,最好 提出一个问题 ,我将把它标记为一个问题。

如果你有与项目无关的问题,请给我发电子邮件,联系方式可以在 我的网站 上找到。

Bug/问题

如果你发现任何错误或投资组合优化没有达到预期效果,请随时 提出一个问题 。 请在问题中提供以下信息:

  • 描述性的标题,以便其他用户可以看到现有的问题

  • 操作系统,Python 版本,以及 Python 发行版(可选)

  • 重现该问题的最基本的例子

  • 你预期会发生什么

  • 实际发生的情况

  • 错误信息的完整回溯(省略你认为合适的个人细节)