Skip to content

Latest commit

 

History

History
130 lines (81 loc) · 4.72 KB

README.md

File metadata and controls

130 lines (81 loc) · 4.72 KB

量子金融项目

任务布置

选取任意任务完成,若时间足够可进一步探索拓展内容,编程语言不限。最后需要提交任务报告(Markdown、LaTeX、Word文档皆可),并准备最后阶段的汇报。可围绕任务设计实验,把一切所思所想和实验结果写进报告;即使时间关系没有完成任务,也建议把所有所做的工作写进报告

  • 量子计算软件包:Qiskit、TensorCircuit
  • 量子金融软件包:Qiskit Finance

任务一:基于 Python 的量子金融编程框架初探——期权定价应用

难点:阅读文档、熟悉QiskitQiskit Finance

难度:初级

Qiskit Finance是目前做的相对较为成熟的软件包。example1中展示了一个投资组合优化问题的简单例子,大致过程是将投资组合优化问题转化为一个二次规划问题,再用QAOA求解。

你需要做:

  1. 仿照example1,用Qiskit Finance做一个欧式看涨期权定价的简单流程:将原问题转化为一个振幅估计问题,再用振幅估计的电路求解;
  2. 测试不同的概率模型以及相同概率模型不同参数下的定价结果;
  3. 清楚理解算法中各变量的含义,探究算法中参数对最终结果的影响,定性地或定量地。

参考资料:

任务二:量子金融算法的进阶优化——组合优化问题

难点:约束处理、参数更新

难度:中级

我们通过调整电路上的参数来使得测量得到的结果最好。example2中展示了一个使用参数化电路求函数最值的简单例子,虽然利用参数化电路解决example2中的问题显得多此一举,但有助于同学们理解参数化电路的思想。参数化量子电路是变分量子算法(VQE、QAOA等)的重要组成部分,在面对复杂的组合优化问题时能体现量子优势。

投资组合优化问题可表示为一个最优化问题。

$$ \begin{aligned} \min_{x \in {0, 1}^n}\quad& q x^T \Sigma x - \mu^T x\\ \text{s.t. }\quad& 1^T x = B \end{aligned} $$

你需要做:

  1. 假设上式约束不存在,求最小值;
  2. 上式约束存在,求最小值。

若自行构建电路并调整参数,可尝试:

  • 梯度下降
  • 群体智能
  • 常用的优化器(如scipy.optimize)

也可直接利用常用的量子变分算法QAOA、VQE等。

参考资料:

拓展

难点:论文阅读、算法细节

难度:高级

任务一拓展

期权的价格分布一般通过训练量子生成对抗网络(QGAN)制备,请实现这一过程。

参考资料:

任务二拓展

在任务二中,我们只能用0或1确定买或不买,该怎么样确定每只股票购买多少份额呢?

参考资料:

环境配置

给出的例程主要基于Qiskit实现,这里以在VSCode中配置Python编程环境为例。

建议使用Python的版本为3.10。

conda install -n "summer-camp-qf-2023" python=3.10
conda activate summer-camp-qf-2023

安装Qiskit Finance

pip install "qiskit[finance]"

安装必要的画图工具。

pip install matplotlib
pip install pylatexenc

安装必要的优化算法包。

pip install scikit-opt

安装可用于JupyterIPython内核,即可在VSCode中运行Jupyter Notebook

pip install ipykernel