Sử dụng python trong phân tích tài chính

In [2]: 100 * 2.5 + 50
2 là ngôn ngữ lập trình cấp cao, đa năng được sử dụng trong nhiều lĩnh vực và lĩnh vực kỹ thuật. Trên trang web
In [2]: 100 * 2.5 + 50
2, bạn tìm thấy phần tóm tắt sau đây [cf. https. //www. con trăn. org/doc/essays/blurb]

Python là ngôn ngữ lập trình cấp cao, hướng đối tượng, thông dịch với ngữ nghĩa động. Các cấu trúc dữ liệu tích hợp ở mức cao, kết hợp với kiểu gõ động và liên kết động, làm cho nó trở nên rất hấp dẫn đối với Phát triển ứng dụng nhanh, cũng như để sử dụng làm ngôn ngữ kịch bản hoặc ngôn ngữ keo để kết nối các thành phần hiện có với nhau. Cú pháp đơn giản, dễ học của Python nhấn mạnh khả năng đọc và do đó giảm chi phí bảo trì chương trình. Python hỗ trợ các mô-đun và gói, khuyến khích mô-đun hóa chương trình và tái sử dụng mã. Trình thông dịch Python và thư viện chuẩn mở rộng có sẵn ở dạng nguồn hoặc nhị phân miễn phí cho tất cả các nền tảng chính và có thể được phân phối miễn phí

Điều này mô tả khá rõ lý do tại sao

In [2]: 100 * 2.5 + 50
2 đã phát triển thành một trong những ngôn ngữ lập trình chính cho đến ngày nay. Ngày nay,
In [2]: 100 * 2.5 + 50
2 được sử dụng bởi lập trình viên mới bắt đầu cũng như nhà phát triển chuyên gia có tay nghề cao, tại các trường học, trường đại học, tại các công ty web, trong các tập đoàn lớn và tổ chức tài chính, cũng như trong bất kỳ lĩnh vực khoa học nào

Trong số những thứ khác,

In [2]: 100 * 2.5 + 50
2 được đặc trưng bởi các tính năng sau

Nguồn mở

In [2]: 100 * 2.5 + 50
2 và phần lớn các thư viện và công cụ hỗ trợ có sẵn là nguồn mở và thường đi kèm với các giấy phép khá linh hoạt và mở. Phiên dịchViệc triển khai tham chiếu
In [2]: 100 * 2.5 + 50
8 là trình thông dịch của ngôn ngữ dịch mã
In [2]: 100 * 2.5 + 50
2 trong thời gian chạy sang mã byte thực thi. Multiparadigm
In [2]: 100 * 2.5 + 50
2 hỗ trợ các mô hình triển khai và lập trình khác nhau, chẳng hạn như hướng đối tượng và lập trình mệnh lệnh, chức năng hoặc thủ tục. Đa năng
In [2]: 100 * 2.5 + 50
2 có thể được sử dụng để phát triển mã tương tác, nhanh chóng cũng như để xây dựng các ứng dụng lớn; . Đa nền tảng
In [2]: 100 * 2.5 + 50
2 có sẵn cho các hệ điều hành quan trọng nhất, chẳng hạn như
In [2]: 100 * 2.5 + 50
13,
In [2]: 100 * 2.5 + 50
14 và
In [2]: 100 * 2.5 + 50
15; . http. //www. mâm xôi. tổ chức]. Các kiểu được nhập động trong
In [2]: 100 * 2.5 + 50
2 nói chung được suy ra trong thời gian chạy và không được khai báo tĩnh như trong hầu hết các ngôn ngữ được biên dịch. Nhận biết thụt lề Ngược lại với phần lớn các ngôn ngữ lập trình khác,
In [2]: 100 * 2.5 + 50
2 sử dụng thụt lề để đánh dấu các khối mã thay vì dấu ngoặc đơn, dấu ngoặc đơn hoặc dấu chấm phẩy. Thu gom rác
In [2]: 100 * 2.5 + 50
2 có chức năng thu gom rác tự động, giúp lập trình viên không cần phải quản lý bộ nhớ

Khi nói đến cú pháp

In [2]: 100 * 2.5 + 50
2 và tất cả những gì về
In [2]: 100 * 2.5 + 50
2, Đề xuất cải tiến Python 20—i. e. , cái gọi là “Zen of Python”—cung cấp các hướng dẫn chính. Nó có thể được truy cập từ mọi shell tương tác bằng lệnh
In [2]: 100 * 2.5 + 50
02

In [2]: 100 * 2.5 + 50
1
In [2]: 100 * 2.5 + 50
2____23

Mặc dù

In [2]: 100 * 2.5 + 50
2 có thể vẫn còn sức hấp dẫn của một cái gì đó mới mẻ đối với một số người, nhưng nó đã xuất hiện từ khá lâu rồi. Trên thực tế, những nỗ lực phát triển đã bắt đầu từ những năm 1980 bởi Guido van Rossum từ Hà Lan. Anh ấy vẫn tích cực trong việc phát triển
In [2]: 100 * 2.5 + 50
2 và đã được cộng đồng
In [2]: 100 * 2.5 + 50
2 phong tặng danh hiệu Nhà độc tài nhân từ suốt đời [cf. http. // vi. wikipedia. org/wiki/History_of_Python]. Những điều sau đây có thể được coi là những cột mốc quan trọng trong quá trình phát triển của
In [2]: 100 * 2.5 + 50
2

  • Trăn 0. 9. 0 phát hành năm 1991 [bản phát hành đầu tiên]
  • Trăn 1. 0 phát hành năm 1994
  • Trăn 2. 0 phát hành năm 2000
  • Trăn 2. 6 phát hành năm 2008
  • Trăn 2. 7 phát hành năm 2010
  • Trăn 3. 0 phát hành năm 2008
  • Trăn 3. 3 phát hành năm 2010
  • Trăn 3. 4 phát hành năm 2014

Điều đáng chú ý và đôi khi gây nhầm lẫn cho những người mới sử dụng

In [2]: 100 * 2.5 + 50
2 là có hai phiên bản chính vẫn đang được phát triển và quan trọng hơn là được sử dụng song song từ năm 2008. Khi viết bài này, điều này sẽ tiếp tục trong một thời gian dài vì không có khả năng tương thích mã 100% giữa các phiên bản, cũng như không phải tất cả các thư viện phổ biến đều có sẵn cho
In [2]: 100 * 2.5 + 50
08. Phần lớn mã có sẵn và đang được sản xuất vẫn là
In [2]: 100 * 2.5 + 50
09 và cuốn sách này dựa trên phiên bản
In [2]: 100 * 2.5 + 50
10, mặc dù phần lớn các ví dụ về mã cũng sẽ hoạt động với phiên bản
In [2]: 100 * 2.5 + 50
11

Một tính năng chính của

In [2]: 100 * 2.5 + 50
2 với tư cách là một hệ sinh thái, so với việc chỉ là một ngôn ngữ lập trình, là sự sẵn có của một số lượng lớn các thư viện và công cụ. Các thư viện và công cụ này thường phải được nhập khi cần [e. g. , một thư viện đồ thị] hoặc phải được bắt đầu như một quy trình hệ thống riêng biệt [e. g. , một môi trường phát triển
In [2]: 100 * 2.5 + 50
2]. Nhập có nghĩa là cung cấp một thư viện cho không gian tên hiện tại và quy trình phiên dịch
In [2]: 100 * 2.5 + 50
2 hiện tại

Bản thân

In [2]: 100 * 2.5 + 50
2 đã đi kèm với một bộ thư viện lớn giúp nâng cao trình thông dịch cơ bản theo các hướng khác nhau. Ví dụ: các phép tính toán học cơ bản có thể được thực hiện mà không cần nhập, trong khi các hàm toán học phức tạp hơn cần được nhập thông qua thư viện
In [2]: 100 * 2.5 + 50
16

In [2]: 100 * 2.5 + 50
In [2]: 100 * 2.5 + 50
1
In [2]: 100 * 2.5 + 50
0______31
In [2]: 100 * 2.5 + 50
2
In [2]: 100 * 2.5 + 50
3

Mặc dù cái gọi là “sao nhập khẩu” [i. e. , việc nhập mọi thứ từ thư viện qua

In [2]: 100 * 2.5 + 50
17] đôi khi thuận tiện, thông thường người ta nên sử dụng một phương pháp thay thế để tránh sự mơ hồ liên quan đến không gian tên và mối quan hệ của các chức năng với thư viện. Điều này sau đó có hình thức

In [2]: 100 * 2.5 + 50
5
In [2]: 100 * 2.5 + 50
20

Mặc dù

In [2]: 100 * 2.5 + 50
16 là thư viện
In [2]: 100 * 2.5 + 50
2 tiêu chuẩn có sẵn với bất kỳ cài đặt nào, nhưng có nhiều thư viện khác có thể được cài đặt tùy chọn và có thể được sử dụng theo cách rất giống với thư viện tiêu chuẩn. Các thư viện như vậy có sẵn từ các nguồn [web] khác nhau. Tuy nhiên, thông thường nên sử dụng phân phối
In [2]: 100 * 2.5 + 50
2 để đảm bảo rằng tất cả các thư viện đều thống nhất với nhau [xem Chương 2 để biết thêm về chủ đề này]

Các ví dụ mã được trình bày cho đến nay đều sử dụng

In [2]: 100 * 2.5 + 50
21 [cf. http. //www. ipython. org], đây có lẽ là môi trường phát triển tương tác [IDE] phổ biến nhất cho
In [2]: 100 * 2.5 + 50
2. Mặc dù ban đầu nó chỉ là một trình bao nâng cao, nhưng ngày nay nó có nhiều tính năng thường thấy trong các IDE [e. g. , hỗ trợ lập hồ sơ và gỡ lỗi]. Những tính năng bị thiếu thường được cung cấp bởi các trình soạn thảo mã/văn bản nâng cao, chẳng hạn như
In [2]: 100 * 2.5 + 50
23 [cf. http. //www. văn bản tuyệt vời. com]. Do đó, không có gì lạ khi kết hợp
In [2]: 100 * 2.5 + 50
21 với trình soạn thảo văn bản/mã mà một người lựa chọn để tạo thành bộ công cụ cơ bản cho quy trình phát triển
In [2]: 100 * 2.5 + 50
2

In [2]: 100 * 2.5 + 50
21 đôi khi còn được gọi là ứng dụng sát thủ của hệ sinh thái
In [2]: 100 * 2.5 + 50
2. Nó tăng cường vỏ tương tác tiêu chuẩn theo nhiều cách. Ví dụ: nó cung cấp các chức năng lịch sử dòng lệnh được cải tiến và cho phép kiểm tra đối tượng dễ dàng. Chẳng hạn, văn bản trợ giúp cho một chức năng được in bằng cách chỉ cần thêm một
In [2]: 100 * 2.5 + 50
28 đằng sau tên chức năng [thêm
In [2]: 100 * 2.5 + 50
29 sẽ cung cấp nhiều thông tin hơn]

________ 221 ________ 222 ________ 223

In [2]: 100 * 2.5 + 50
21 có ba phiên bản khác nhau. một phiên bản shell, một phiên bản dựa trên giao diện người dùng đồ họa
In [2]: 100 * 2.5 + 50
31 [_______432] và một phiên bản dựa trên trình duyệt [_______433]. Đây chỉ là một lời trêu ghẹo;

In [2]: 100 * 2.5 + 50
2 không chỉ thu hút các nhà phát triển phần mềm chuyên nghiệp;

Các nhà phát triển phần mềm chuyên nghiệp tìm thấy tất cả những gì họ cần để xây dựng các ứng dụng lớn một cách hiệu quả. Hầu như tất cả các mô hình lập trình đều được hỗ trợ; . Những kiểu người dùng này thường xây dựng các khung và lớp của riêng họ, cũng hoạt động trên

In [2]: 100 * 2.5 + 50
2 cơ bản và ngăn xếp khoa học, đồng thời cố gắng tận dụng tối đa hệ sinh thái

Các nhà phát triển khoa học hoặc chuyên gia miền nói chung là những người sử dụng nhiều thư viện và khung nhất định, đã xây dựng các ứng dụng của riêng họ để nâng cao và tối ưu hóa theo thời gian, đồng thời điều chỉnh hệ sinh thái theo nhu cầu cụ thể của họ. Những nhóm người dùng này cũng thường tham gia vào các phiên tương tác dài hơn, nhanh chóng tạo mẫu mã mới cũng như khám phá và trực quan hóa nghiên cứu và/hoặc bộ dữ liệu miền của họ

Các lập trình viên thông thường thích sử dụng

In [2]: 100 * 2.5 + 50
2 nói chung cho các vấn đề cụ thể mà họ biết rằng
In [2]: 100 * 2.5 + 50
2 có điểm mạnh trong. Ví dụ: truy cập trang thư viện của
In [2]: 100 * 2.5 + 50
50, sao chép một đoạn mã trực quan nhất định được cung cấp ở đó và điều chỉnh mã theo nhu cầu cụ thể của họ có thể là trường hợp sử dụng có lợi cho các thành viên của nhóm này

Ngoài ra còn có một nhóm người dùng

In [2]: 100 * 2.5 + 50
2 quan trọng khác. lập trình viên mới bắt đầu, tôi. e. , những người mới bắt đầu lập trình. Ngày nay,
In [2]: 100 * 2.5 + 50
2 đã trở thành một ngôn ngữ rất phổ biến tại các trường đại học, cao đẳng và thậm chí cả các trường phổ thông để giới thiệu cho sinh viên về lập trình. [] Lý do chính cho điều này là cú pháp cơ bản của nó rất dễ học và dễ hiểu, ngay cả đối với những người không phải là nhà phát triển. Ngoài ra, thật hữu ích khi
In [2]: 100 * 2.5 + 50
2 hỗ trợ hầu hết các phong cách lập trình. []

Có một bộ thư viện nhất định được gọi chung là ngăn xếp khoa học. Ngăn xếp này bao gồm, trong số những thứ khác, các thư viện sau

In [2]: 100 * 2.5 + 50
54
In [2]: 100 * 2.5 + 50
54 cung cấp một đối tượng mảng đa chiều để lưu trữ dữ liệu đồng nhất hoặc không đồng nhất; .
In [2]: 100 * 2.5 + 50
56_______456 là một tập hợp các thư viện con và chức năng thực hiện chức năng tiêu chuẩn quan trọng thường cần trong khoa học hoặc tài chính; .
In [2]: 100 * 2.5 + 50
50Đây là thư viện trực quan hóa và vẽ sơ đồ phổ biến nhất cho
In [2]: 100 * 2.5 + 50
2, cung cấp cả khả năng trực quan hóa 2D và 3D.
In [2]: 100 * 2.5 + 50
200
In [2]: 100 * 2.5 + 50
200 là trình bao bọc phổ biến cho thư viện lưu trữ dữ liệu
In [2]: 100 * 2.5 + 50
202 [cf. http. //www. hdfgroup. org/HDF5/]; .
In [2]: 100 * 2.5 + 50
203
In [2]: 100 * 2.5 + 50
203 xây dựng trên
In [2]: 100 * 2.5 + 50
54 và cung cấp các lớp phong phú hơn để quản lý và phân tích chuỗi thời gian và dữ liệu dạng bảng;

Tùy thuộc vào miền hoặc vấn đề cụ thể, ngăn xếp này được mở rộng bởi các thư viện bổ sung, thường không có điểm chung là chúng được xây dựng trên một hoặc nhiều thư viện cơ bản này. Tuy nhiên, mẫu số chung nhỏ nhất hoặc khối xây dựng cơ bản nói chung là lớp

In [2]: 100 * 2.5 + 50
54
In [2]: 100 * 2.5 + 50
209 [cf. Chương 4]

Chỉ lấy

In [2]: 100 * 2.5 + 50
2 làm ngôn ngữ lập trình, có một số ngôn ngữ khác có thể theo kịp cú pháp và sự sang trọng của nó. Ví dụ,
In [2]: 100 * 2.5 + 50
211 là một ngôn ngữ khá phổ biến thường được so sánh với
In [2]: 100 * 2.5 + 50
2. Trên trang web của ngôn ngữ, bạn tìm thấy mô tả sau

Một ngôn ngữ lập trình nguồn mở, năng động, tập trung vào sự đơn giản và năng suất. Nó có một cú pháp tao nhã, tự nhiên để đọc và dễ viết

Phần lớn những người sử dụng

In [2]: 100 * 2.5 + 50
2 có lẽ cũng sẽ đồng ý với chính xác nhận định tương tự được đưa ra về chính
In [2]: 100 * 2.5 + 50
2. Tuy nhiên, điều khiến nhiều người dùng khác biệt giữa
In [2]: 100 * 2.5 + 50
2 với các ngôn ngữ hấp dẫn không kém như
In [2]: 100 * 2.5 + 50
211 là tính khả dụng của ngăn xếp khoa học. Điều này làm cho
In [2]: 100 * 2.5 + 50
2 không chỉ là một ngôn ngữ tốt và tao nhã để sử dụng mà còn là một ngôn ngữ có khả năng thay thế các ngôn ngữ và bộ công cụ dành riêng cho miền như
In [2]: 100 * 2.5 + 50
218 hoặc
In [2]: 100 * 2.5 + 50
219. Ngoài ra, theo mặc định, nó cung cấp mọi thứ mà bạn mong đợi, chẳng hạn như với tư cách là nhà phát triển web hoặc quản trị viên hệ thống dày dạn kinh nghiệm

Bây giờ chúng ta đã có một số ý tưởng sơ bộ về tất cả những gì về

In [2]: 100 * 2.5 + 50
2, thật hợp lý khi lùi lại một chút và suy ngẫm ngắn gọn về vai trò của công nghệ trong tài chính. Điều này sẽ giúp chúng ta có thể đánh giá tốt hơn vai trò của
In [2]: 100 * 2.5 + 50
2 và thậm chí quan trọng hơn, có thể sẽ đóng vai trò trong ngành tài chính trong tương lai

Theo một nghĩa nào đó, bản thân công nghệ không có gì đặc biệt đối với các tổ chức tài chính [chẳng hạn như so với các công ty công nghiệp] hoặc đối với chức năng tài chính [so với các chức năng khác của công ty, như hậu cần]. Tuy nhiên, trong những năm gần đây, được thúc đẩy bởi sự đổi mới và quy định, các ngân hàng và các tổ chức tài chính khác như quỹ phòng hộ ngày càng phát triển thành các công ty công nghệ thay vì chỉ là trung gian tài chính. Công nghệ đã trở thành tài sản lớn đối với hầu hết mọi tổ chức tài chính trên toàn cầu, có khả năng dẫn đến lợi thế cạnh tranh cũng như bất lợi. Một số thông tin cơ bản có thể làm sáng tỏ những lý do cho sự phát triển này

Các ngân hàng và tổ chức tài chính cùng nhau tạo thành ngành công nghiệp chi nhiều nhất cho công nghệ hàng năm. Do đó, tuyên bố sau đây không chỉ chỉ ra rằng công nghệ quan trọng đối với ngành tài chính mà ngành tài chính cũng thực sự quan trọng đối với lĩnh vực công nghệ

Các ngân hàng sẽ chi 4. Theo các nhà phân tích của IDC, tăng 2% cho công nghệ trong năm 2014 so với năm 2013. Các nhà phân tích cho biết tổng chi tiêu CNTT trong các dịch vụ tài chính trên toàn cầu sẽ vượt quá 430 tỷ USD vào năm 2014 và vượt qua 500 tỷ USD vào năm 2020.

Các ngân hàng lớn, đa quốc gia ngày nay thường sử dụng hàng ngàn nhà phát triển để duy trì các hệ thống hiện có và xây dựng các hệ thống mới. Các ngân hàng đầu tư lớn với yêu cầu nặng về công nghệ cho thấy ngân sách dành cho công nghệ thường lên tới vài tỷ USD mỗi năm

Sự phát triển của công nghệ cũng đã góp phần đổi mới và nâng cao hiệu quả trong lĩnh vực tài chính

Đổi mới công nghệ đã góp phần đáng kể vào hiệu quả cao hơn trên thị trường phái sinh. Thông qua những đổi mới trong công nghệ giao dịch, các giao dịch tại Eurex ngày nay được thực hiện nhanh hơn nhiều so với mười năm trước mặc dù khối lượng giao dịch và số lượng báo giá tăng mạnh… Những cải tiến mạnh mẽ này chỉ có được nhờ các khoản đầu tư CNTT cao, liên tục của các sàn giao dịch phái sinh và

— Tập đoàn Deutsche Börse 2008

Là một tác dụng phụ của hiệu quả ngày càng tăng, lợi thế cạnh tranh thường phải được tìm kiếm trong các sản phẩm hoặc giao dịch phức tạp hơn bao giờ hết. Điều này đến lượt nó làm tăng rủi ro và làm cho việc quản lý rủi ro cũng như giám sát và quy định ngày càng khó khăn hơn. Cuộc khủng hoảng tài chính năm 2007 và 2008 kể câu chuyện về những mối nguy hiểm tiềm tàng do những diễn biến đó gây ra. Theo cách tương tự, “thuật toán và máy tính trở nên điên cuồng” cũng thể hiện rủi ro tiềm ẩn đối với thị trường tài chính; . http. // vi. wikipedia. org/wiki/2010_Flash_Crash]

Công nghệ và nhân tài là rào cản gia nhập

Một mặt, tiến bộ công nghệ giảm chi phí theo thời gian, ceteris paribus. Mặt khác, các tổ chức tài chính tiếp tục đầu tư mạnh vào công nghệ để giành thị phần và bảo vệ vị trí hiện tại của họ. Để hoạt động trong một số lĩnh vực tài chính ngày nay thường đòi hỏi phải đầu tư quy mô lớn vào cả công nghệ và đội ngũ nhân viên lành nghề. Ví dụ, hãy xem xét không gian phân tích công cụ phái sinh [xem thêm nghiên cứu điển hình trong Phần III của cuốn sách]

Được tổng hợp trong toàn bộ vòng đời của phần mềm, các công ty áp dụng chiến lược nội bộ để định giá [công cụ phái sinh] OTC sẽ yêu cầu đầu tư từ 25 triệu đến 36 triệu đô la để xây dựng, duy trì và nâng cao thư viện công cụ phái sinh hoàn chỉnh

Không chỉ tốn kém và mất thời gian để xây dựng một thư viện phân tích phái sinh chính thức, mà bạn còn cần có đủ chuyên gia để làm việc đó. Và những chuyên gia này phải có sẵn các công cụ và công nghệ phù hợp để hoàn thành nhiệm vụ của họ

Một câu trích dẫn khác về những ngày đầu của Quản lý vốn dài hạn [LTCM], trước đây là một trong những quỹ phòng hộ định lượng được kính trọng nhất—tuy nhiên, quỹ này đã phá sản vào cuối những năm 1990—tiếp tục hỗ trợ cho hiểu biết sâu sắc này về công nghệ và tài năng

Meriwether đã chi 20 triệu đô la cho một hệ thống máy tính hiện đại và thuê một nhóm kỹ sư tài chính giỏi để điều hành chương trình tại LTCM, công ty đã thành lập cửa hàng ở Greenwich, Connecticut. Đó là quản lý rủi ro ở cấp độ công nghiệp

Sức mạnh tính toán tương tự mà Meriwether phải mua với giá hàng triệu đô la ngày nay có thể có sẵn với giá hàng nghìn đô la. Mặt khác, giao dịch, định giá và quản lý rủi ro đã trở nên phức tạp đối với các tổ chức tài chính lớn hơn đến mức ngày nay họ cần triển khai cơ sở hạ tầng CNTT với hàng chục nghìn lõi máy tính.

Tốc độ, tần suất, khối lượng dữ liệu ngày càng tăng

Có một khía cạnh của ngành tài chính bị ảnh hưởng nhiều nhất bởi những tiến bộ công nghệ. tốc độ và tần suất mà các giao dịch tài chính được quyết định và thực hiện. Cuốn sách gần đây của Lewis [2014] mô tả cái gọi là giao dịch chớp nhoáng—i. e. , giao dịch ở tốc độ cao nhất có thể—chi tiết sống động

Một mặt, việc tăng tính khả dụng của dữ liệu ở quy mô nhỏ hơn bao giờ hết khiến cần phải phản ứng theo thời gian thực. Mặt khác, tốc độ và tần suất giao dịch ngày càng tăng khiến khối lượng dữ liệu tăng thêm. Điều này dẫn đến các quy trình củng cố lẫn nhau và đẩy thang thời gian trung bình cho các giao dịch tài chính xuống một cách có hệ thống

Quỹ Huy chương của Renaissance đã đạt được 80 phần trăm đáng kinh ngạc trong năm 2008, tận dụng sự biến động cực độ của thị trường với các máy tính nhanh như chớp của nó. Jim Simons là người kiếm tiền nhiều nhất thế giới trong năm của quỹ phòng hộ, bỏ túi 2 đô la tuyệt vời. 5 tỷ

Dữ liệu giá cổ phiếu hàng ngày trong 30 năm cho một cổ phiếu đại diện cho khoảng 7.500 báo giá. Loại dữ liệu này là thứ mà hầu hết lý thuyết tài chính ngày nay dựa trên. Ví dụ: các lý thuyết như lý thuyết danh mục đầu tư hiện đại [MPT], mô hình định giá tài sản vốn [CAPM] và rủi ro giá trị [VaR] đều có nền tảng trong dữ liệu giá cổ phiếu hàng ngày

Để so sánh, vào một ngày giao dịch thông thường, giá cổ phiếu của Apple Inc. [AAPL] được trích dẫn khoảng 15.000 lần—số lần trích dẫn nhiều gấp hai lần so với trích dẫn cuối ngày trong khoảng thời gian 30 năm. Điều này mang lại cho nó một số thách thức

Xử lý dữ liệu Việc xem xét và xử lý báo giá cuối ngày đối với cổ phiếu hoặc các công cụ tài chính khác là chưa đủ; . Tốc độ phân tích Các quyết định thường phải được thực hiện trong vài mili giây hoặc thậm chí nhanh hơn, do đó cần phải xây dựng các khả năng phân tích tương ứng và phân tích lượng lớn dữ liệu trong thời gian thực. Cơ sở lý thuyết Mặc dù các lý thuyết và khái niệm tài chính truyền thống còn lâu mới hoàn hảo, nhưng chúng đã được thử nghiệm kỹ lưỡng [và đôi khi cũng bị bác bỏ] theo thời gian;

Tất cả những thách thức này về nguyên tắc chỉ có thể được giải quyết bằng công nghệ hiện đại. Một điều cũng có thể hơi ngạc nhiên là việc thiếu các lý thuyết nhất quán thường được giải quyết bằng các phương pháp công nghệ, trong đó các thuật toán tốc độ cao khai thác các yếu tố cấu trúc vi mô thị trường [e. g. , luồng đặt hàng, chênh lệch giá mua-giá bán] thay vì dựa vào một số lý do tài chính

Có một ngành học có tầm quan trọng tăng mạnh trong ngành tài chính. phân tích tài chính và dữ liệu. Hiện tượng này có mối quan hệ chặt chẽ với hiểu biết sâu sắc rằng tốc độ, tần suất và khối lượng dữ liệu tăng với tốc độ chóng mặt trong ngành. Trên thực tế, phân tích thời gian thực có thể được coi là câu trả lời của ngành cho xu hướng này

Nói một cách đại khái, “phân tích dữ liệu và tài chính” đề cập đến nguyên tắc áp dụng phần mềm và công nghệ kết hợp với các thuật toán và phương pháp [có thể nâng cao] để thu thập, xử lý và phân tích dữ liệu nhằm hiểu rõ hơn, đưa ra quyết định hoặc thực hiện quy định. . Các ví dụ có thể bao gồm ước tính tác động bán hàng do thay đổi cơ cấu giá đối với sản phẩm tài chính trong chi nhánh bán lẻ của ngân hàng. Một ví dụ khác có thể là tính toán điều chỉnh giá trị tín dụng [CVA] qua đêm trên quy mô lớn đối với các danh mục giao dịch phái sinh phức tạp của một ngân hàng đầu tư

Có hai thách thức lớn mà các tổ chức tài chính phải đối mặt trong bối cảnh này

Dữ liệu lớn Các ngân hàng và các tổ chức tài chính khác đã phải xử lý lượng dữ liệu khổng lồ ngay cả trước khi thuật ngữ “dữ liệu lớn” được đặt ra; . Nền kinh tế thời gian thực Trước đây, những người ra quyết định có thể dựa vào các quy trình quản lý, quyết định và [rủi ro] có cấu trúc, thường xuyên, trong khi ngày nay họ phải đối mặt với nhu cầu xử lý các chức năng này trong thời gian thực;

Một lần nữa, người ta có thể quan sát thấy sự tác động lẫn nhau giữa những tiến bộ trong công nghệ và thực tiễn tài chính/kinh doanh. Một mặt, cần phải liên tục cải thiện các phương pháp phân tích về tốc độ và khả năng bằng cách áp dụng các công nghệ hiện đại. Mặt khác, những tiến bộ về mặt công nghệ cho phép các phương pháp phân tích mới được coi là không thể [hoặc không khả thi do hạn chế về ngân sách] cách đây vài năm hoặc thậm chí vài tháng.

Một xu hướng chính trong không gian phân tích là việc sử dụng các kiến ​​trúc song song ở phía CPU [đơn vị xử lý trung tâm] và các kiến ​​trúc song song ồ ạt ở phía GPGPU [đơn vị xử lý đồ họa đa năng]. Các GPGPU hiện tại thường có hơn 1.000 lõi tính toán, đôi khi cần phải suy nghĩ lại triệt để về ý nghĩa của tính song song đối với các thuật toán khác nhau. Điều vẫn còn là một trở ngại trong vấn đề này là người dùng thường phải học các mô hình và kỹ thuật mới để khai thác sức mạnh của phần cứng đó. []

Phần trước mô tả một số khía cạnh chọn lọc đặc trưng cho vai trò của công nghệ trong tài chính

  • Chi phí cho công nghệ trong ngành tài chính
  • Công nghệ như một yếu tố hỗ trợ cho kinh doanh mới và đổi mới
  • Công nghệ và tài năng là rào cản gia nhập ngành tài chính
  • Tăng tốc độ, tần số và khối lượng dữ liệu
  • Sự gia tăng của phân tích thời gian thực

Trong phần này, chúng tôi muốn phân tích cách

In [2]: 100 * 2.5 + 50
2 có thể giúp giải quyết một số thách thức liên quan đến các khía cạnh này. Nhưng trước tiên, ở cấp độ cơ bản hơn, chúng ta hãy kiểm tra
In [2]: 100 * 2.5 + 50
2 về tài chính từ quan điểm ngôn ngữ và cú pháp

Cú pháp tài chính và Python

Hầu hết những người thực hiện những bước đầu tiên với

In [2]: 100 * 2.5 + 50
2 trong bối cảnh tài chính có thể tấn công một vấn đề thuật toán. Điều này tương tự như một nhà khoa học, chẳng hạn, muốn giải một phương trình vi phân, muốn đánh giá một tích phân hoặc đơn giản là muốn trực quan hóa một số dữ liệu. Nói chung, ở giai đoạn này, chỉ có rất ít suy nghĩ dành cho các chủ đề như quy trình phát triển chính thức, thử nghiệm, tài liệu hoặc triển khai. Tuy nhiên, điều này đặc biệt có vẻ là giai đoạn mà mọi người yêu thích
In [2]: 100 * 2.5 + 50
2. Lý do chính cho điều này có thể là cú pháp
In [2]: 100 * 2.5 + 50
2 nói chung khá gần với cú pháp toán học được sử dụng để mô tả các vấn đề khoa học hoặc thuật toán tài chính

Chúng ta có thể minh họa hiện tượng này bằng một thuật toán tài chính đơn giản, cụ thể là định giá quyền chọn mua kiểu Châu Âu bằng mô phỏng Monte Carlo. Chúng tôi sẽ xem xét thiết lập Black-Scholes-Merton [BSM] [xem thêm Chương 3] trong đó yếu tố rủi ro cơ bản của tùy chọn tuân theo chuyển động Brown hình học

Giả sử chúng ta có các giá trị tham số số sau để định giá

  • Cấp chỉ số chứng khoán ban đầu S0 = 100
  • Giá thực hiện quyền chọn mua kiểu Âu K = 105
  • Thời gian đáo hạn T = 1 năm
  • Lãi suất ngắn hạn không đổi, không rủi ro r = 5%
  • Biến động không đổi 𝜎 = 20%

Trong mô hình BSM, cấp độ chỉ số khi đáo hạn là một biến ngẫu nhiên, được cho bởi Phương trình 1-1 với z là một biến ngẫu nhiên có phân phối chuẩn

Phương trình 1-1. Mức chỉ số Black-Scholes-Merton [1973] khi đáo hạn

Sau đây là mô tả thuật toán của quy trình định giá Monte Carlo

  1. Vẽ I [giả]các số ngẫu nhiên z[i], i ∈ {1, 2, …, I}, từ phân phối chuẩn chuẩn
  2. Tính toán tất cả các mức chỉ số kết quả khi đáo hạn ST[i] cho z[i] đã cho và Phương trình 1-1
  3. Tính tất cả các giá trị bên trong của quyền chọn khi đáo hạn là hT[i] = max[ST[i] – K,0]
  4. Ước tính giá trị hiện tại của quyền chọn thông qua công cụ ước tính Monte Carlo được đưa ra trong Công thức 1-2

Phương trình 1-2. Công cụ ước tính Monte Carlo cho quyền chọn kiểu Châu Âu

Bây giờ chúng ta sẽ dịch bài toán và thuật toán này sang mã

In [2]: 100 * 2.5 + 50
2. Người đọc có thể làm theo các bước đơn lẻ bằng cách sử dụng, ví dụ,
In [2]: 100 * 2.5 + 50
21—tuy nhiên, điều này không thực sự cần thiết ở giai đoạn này

Trước tiên, chúng ta hãy bắt đầu với các giá trị tham số. Điều này thực sự dễ dàng

In [2]: 100 * 2.5 + 50
24

Tiếp theo, thuật toán định giá. Ở đây, lần đầu tiên chúng tôi sẽ sử dụng

In [2]: 100 * 2.5 + 50
54, điều này làm cho nhiệm vụ thứ hai của chúng tôi trở nên khá dễ dàng

In [2]: 100 * 2.5 + 50
25

Thứ ba, chúng tôi in kết quả

In [2]: 100 * 2.5 + 50
26

Đầu ra có thể là. []

In [2]: 100 * 2.5 + 50
27

Ba khía cạnh đáng làm nổi bật

Cú pháp Cú pháp

In [2]: 100 * 2.5 + 50
2 thực sự khá gần với cú pháp toán học, e. g. , khi nói đến việc gán giá trị tham số. Dịch Mọi câu lệnh toán học và/hoặc thuật toán nói chung có thể được dịch thành một dòng mã
In [2]: 100 * 2.5 + 50
2. VectorizationMột trong những điểm mạnh của
In [2]: 100 * 2.5 + 50
54 là cú pháp nhỏ gọn, vector hóa, e. g. , cho phép thực hiện 100.000 phép tính trong một dòng mã

Mã này có thể được sử dụng trong môi trường tương tác như

In [2]: 100 * 2.5 + 50
21. Tuy nhiên, mã có nghĩa là được sử dụng lại thường xuyên thường được tổ chức trong cái gọi là mô-đun [hoặc tập lệnh], là một
In [2]: 100 * 2.5 + 50
2 [i. e. , văn bản] các tệp có hậu tố
In [2]: 100 * 2.5 + 50
235. Trong trường hợp này, một mô-đun như vậy có thể giống như Ví dụ 1-1 và có thể được lưu dưới dạng tệp có tên
In [2]: 100 * 2.5 + 50
236

Ví dụ 1-1. Định giá Monte Carlo về quyền chọn mua kiểu Châu Âu

In [2]: 100 * 2.5 + 50
28

Ví dụ thuật toán khá đơn giản trong tiểu mục này minh họa rằng

In [2]: 100 * 2.5 + 50
2, với chính cú pháp của nó, rất phù hợp để bổ sung cho bộ đôi ngôn ngữ khoa học cổ điển, tiếng Anh và Toán học. Có vẻ như việc thêm
In [2]: 100 * 2.5 + 50
2 vào bộ ngôn ngữ khoa học sẽ làm cho nó trở nên tròn trịa hơn. Chúng ta có

  • Tiếng Anh để viết, nói về các vấn đề khoa học và tài chính, v.v.
  • Toán học để mô tả và mô hình hóa chính xác và ngắn gọn các khía cạnh trừu tượng, thuật toán, số lượng phức tạp, v.v.
  • Python để lập mô hình kỹ thuật và triển khai các khía cạnh trừu tượng, thuật toán, số lượng phức tạp, v.v.

Toán học và Cú pháp Python

Hiếm có ngôn ngữ lập trình nào gần với cú pháp toán học như

In [2]: 100 * 2.5 + 50
2. Do đó, các thuật toán số rất đơn giản để dịch từ biểu diễn toán học sang triển khai
In [2]: 100 * 2.5 + 50
240. Điều này làm cho việc tạo nguyên mẫu, phát triển và bảo trì mã trong các lĩnh vực như vậy khá hiệu quả với
In [2]: 100 * 2.5 + 50
2

Ở một số khu vực, thông thường người ta sử dụng mã giả và sau đó giới thiệu thành viên họ ngôn ngữ thứ tư. Ví dụ, vai trò của mã giả là biểu diễn các thuật toán tài chính theo kiểu kỹ thuật hơn, vừa gần với biểu diễn toán học vừa khá gần với triển khai kỹ thuật. Ngoài bản thân thuật toán, mã giả còn tính đến nguyên tắc hoạt động của máy tính

Thực tiễn này thường có nguyên nhân của nó là với hầu hết các ngôn ngữ lập trình, việc triển khai kỹ thuật khá “xa vời” với biểu diễn toán học, chính thức của nó. Phần lớn các ngôn ngữ lập trình bắt buộc phải đưa vào quá nhiều yếu tố chỉ yêu cầu về mặt kỹ thuật nên khó thấy được sự tương đương giữa toán học và mã.

Ngày nay,

In [2]: 100 * 2.5 + 50
2 thường được sử dụng theo cách mã giả vì cú pháp của nó gần giống với toán học và vì “chi phí” kỹ thuật được giữ ở mức tối thiểu. Điều này được thực hiện bởi một số khái niệm cấp cao được thể hiện bằng ngôn ngữ không chỉ có lợi thế mà còn đi kèm với rủi ro và/hoặc các chi phí khác nói chung. Tuy nhiên, có thể nói rằng với
In [2]: 100 * 2.5 + 50
2, bất cứ khi nào có nhu cầu, bạn có thể tuân theo cùng một quy trình triển khai và viết mã nghiêm ngặt mà các ngôn ngữ khác có thể yêu cầu ngay từ đầu. Theo nghĩa đó,
In [2]: 100 * 2.5 + 50
2 có thể cung cấp những điều tốt nhất của cả hai thế giới. trừu tượng cấp cao và thực hiện nghiêm ngặt

Hiệu quả và năng suất thông qua Python

Ở cấp độ cao, lợi ích từ việc sử dụng

In [2]: 100 * 2.5 + 50
2 có thể được đo lường theo ba chiều

Hiệu quả Làm thế nào để

In [2]: 100 * 2.5 + 50
2 có thể giúp đạt được kết quả nhanh hơn, tiết kiệm chi phí và tiết kiệm thời gian?. ]?Chất lượng
In [2]: 100 * 2.5 + 50
2 cho phép chúng tôi làm điều gì mà chúng tôi không thể làm với các công nghệ thay thế?

Một cuộc thảo luận về các khía cạnh này về bản chất có thể không đầy đủ. Tuy nhiên, nó có thể làm nổi bật một số đối số như một điểm khởi đầu

Một lĩnh vực mà hiệu quả của

In [2]: 100 * 2.5 + 50
2 trở nên khá rõ ràng là phân tích dữ liệu tương tác. Đây là lĩnh vực được hưởng lợi mạnh mẽ từ các công cụ mạnh mẽ như
In [2]: 100 * 2.5 + 50
21 và các thư viện như
In [2]: 100 * 2.5 + 50
203

Hãy xem xét một sinh viên tài chính, đang viết luận văn thạc sĩ và quan tâm đến giá cổ phiếu của Google. Cô ấy muốn phân tích thông tin lịch sử về giá cổ phiếu trong 5 năm để xem mức độ biến động của giá cổ phiếu theo thời gian. Cô ấy muốn tìm bằng chứng cho thấy tính không ổn định, trái ngược với một số giả định điển hình của mô hình, dao động theo thời gian và không phải là hằng số. Kết quả cũng nên được hình dung. Cô ấy chủ yếu phải làm như sau

  • Tải xuống dữ liệu giá cổ phiếu của Google từ Web
  • Tính độ lệch chuẩn cán của nhật ký trả về [độ biến động]
  • Vẽ đồ thị dữ liệu giá cổ phiếu và kết quả

Những nhiệm vụ này phức tạp đến mức cách đây không lâu người ta có thể coi chúng là công việc dành cho các nhà phân tích tài chính chuyên nghiệp. Ngày nay, ngay cả sinh viên tài chính cũng có thể dễ dàng đối phó với những vấn đề như vậy. Hãy để chúng tôi xem chính xác nó hoạt động như thế nào—mà không cần lo lắng về các chi tiết cú pháp ở giai đoạn này [mọi thứ sẽ được giải thích chi tiết trong các chương tiếp theo]

Trước tiên, đảm bảo có sẵn tất cả các thư viện cần thiết

In [2]: 100 * 2.5 + 50
29

Thứ hai, truy xuất dữ liệu từ chính Google

In [2]: 100 * 2.5 + 50
30
In [2]: 100 * 2.5 + 50
31

Thứ ba, thực hiện các phân tích cần thiết cho các biến động

In [2]: 100 * 2.5 + 50
32

Thứ tư, vẽ biểu đồ kết quả. Để tạo một biểu đồ nội tuyến, chúng tôi sử dụng lệnh ma thuật

In [2]: 100 * 2.5 + 50
21
In [2]: 100 * 2.5 + 50
253 với tùy chọn
In [2]: 100 * 2.5 + 50
254

In [2]: 100 * 2.5 + 50
33

Hình 1-1 hiển thị kết quả đồ họa của phiên tương tác ngắn này với

In [2]: 100 * 2.5 + 50
21. Có thể coi là gần như tuyệt vời khi bốn dòng mã đủ để thực hiện ba tác vụ khá phức tạp thường gặp trong phân tích tài chính. thu thập dữ liệu, tính toán toán học phức tạp và lặp đi lặp lại và trực quan hóa kết quả. Ví dụ này minh họa rằng
In [2]: 100 * 2.5 + 50
203 giúp làm việc với toàn bộ chuỗi thời gian gần như đơn giản như thực hiện các phép toán trên các số dấu phẩy động

Hình 1-1. Giá đóng cửa của Google và biến động hàng năm

Được dịch sang bối cảnh tài chính chuyên nghiệp, ví dụ này ngụ ý rằng các nhà phân tích tài chính có thể—khi áp dụng các công cụ và thư viện

In [2]: 100 * 2.5 + 50
2 phù hợp, cung cấp khả năng trừu tượng ở mức độ cao—tập trung vào chính lĩnh vực của họ chứ không phải bản chất kỹ thuật. Các nhà phân tích có thể phản ứng nhanh hơn, cung cấp những hiểu biết có giá trị gần như trong thời gian thực và đảm bảo rằng họ đi trước đối thủ một bước. Ví dụ về hiệu quả tăng lên này có thể dễ dàng chuyển thành các hiệu ứng cuối cùng có thể đo lường được

Đảm bảo hiệu suất cao

Nói chung, người ta chấp nhận rằng

In [2]: 100 * 2.5 + 50
2 có cú pháp khá ngắn gọn và nó tương đối hiệu quả để viết mã với. Tuy nhiên, do bản chất của
In [2]: 100 * 2.5 + 50
2 là một ngôn ngữ được giải thích, vẫn tồn tại định kiến ​​rằng
In [2]: 100 * 2.5 + 50
2 nói chung là quá chậm đối với các tác vụ chuyên sâu về điện toán trong lĩnh vực tài chính. Thật vậy, tùy thuộc vào cách tiếp cận triển khai cụ thể,
In [2]: 100 * 2.5 + 50
2 có thể rất chậm. Nhưng nó không nhất thiết phải chậm—nó có thể đạt hiệu suất cao trong hầu hết mọi lĩnh vực ứng dụng. Về nguyên tắc, người ta có thể phân biệt ít nhất ba chiến lược khác nhau để đạt hiệu quả tốt hơn

Mô hình Nói chung, nhiều cách khác nhau có thể dẫn đến cùng một kết quả trong ________ 02, nhưng với các đặc điểm hiệu suất khá khác nhau; . g. , một thư viện cụ thể] có thể cải thiện đáng kể kết quả. Biên dịchNgày nay, có sẵn một số thư viện hiệu suất cung cấp các phiên bản đã biên dịch của các chức năng quan trọng hoặc biên dịch mã

In [2]: 100 * 2.5 + 50
2 tĩnh hoặc động [tại thời điểm chạy hoặc thời gian gọi] thành mã máy, có thể nhanh hơn nhiều; . Song song hóa Nhiều tác vụ tính toán, đặc biệt là trong lĩnh vực tài chính, có thể hưởng lợi rất nhiều từ việc thực thi song song;

Tính toán hiệu suất với Python

In [2]: 100 * 2.5 + 50
2 về bản chất không phải là công nghệ điện toán hiệu năng cao. Tuy nhiên,
In [2]: 100 * 2.5 + 50
2 đã phát triển thành một nền tảng lý tưởng để tiếp cận các công nghệ hiệu suất hiện tại. Theo nghĩa đó,
In [2]: 100 * 2.5 + 50
2 đã trở thành một thứ giống như ngôn ngữ kết dính cho tính toán hiệu suất

Các chương sau minh họa chi tiết cả ba kỹ thuật. Hiện tại, chúng tôi muốn sử dụng một ví dụ đơn giản nhưng vẫn thực tế, liên quan đến cả ba kỹ thuật

Một nhiệm vụ khá phổ biến trong phân tích tài chính là đánh giá các biểu thức toán học phức tạp trên các dãy số lớn. Để đạt được điều này, bản thân

In [2]: 100 * 2.5 + 50
2 cung cấp mọi thứ cần thiết

In [2]: 100 * 2.5 + 50
34
In [2]: 100 * 2.5 + 50
35

Trình thông dịch

In [2]: 100 * 2.5 + 50
2 cần 15 giây trong trường hợp này để đánh giá hàm
In [2]: 100 * 2.5 + 50
272 25.000.000 lần

Nhiệm vụ tương tự có thể được thực hiện bằng cách sử dụng

In [2]: 100 * 2.5 + 50
54, cung cấp tối ưu hóa [i. e. , được biên dịch sẵn], các hàm để xử lý các hoạt động dựa trên mảng đó

In [2]: 100 * 2.5 + 50
36
In [2]: 100 * 2.5 + 50
37

Sử dụng

In [2]: 100 * 2.5 + 50
54 giảm đáng kể thời gian thực hiện xuống còn 1. 7 giây

Tuy nhiên, thậm chí còn có một thư viện dành riêng cho loại nhiệm vụ này. Nó được gọi là

In [2]: 100 * 2.5 + 50
275, dành cho “biểu thức số. ” Ví dụ, nó biên dịch biểu thức để cải thiện hiệu suất của chức năng chung của
In [2]: 100 * 2.5 + 50
54 bằng cách tránh các bản sao trong bộ nhớ của các mảng trên đường đi

In [2]: 100 * 2.5 + 50
38
In [2]: 100 * 2.5 + 50
39

Sử dụng phương pháp chuyên biệt hơn này giúp giảm thời gian thực hiện xuống còn 1. 2 giây. Tuy nhiên,

In [2]: 100 * 2.5 + 50
275 cũng có các khả năng tích hợp sẵn để thực hiện song song hoạt động tương ứng. Điều này cho phép chúng tôi sử dụng tất cả các luồng có sẵn của CPU

In [2]: 100 * 2.5 + 50
0
In [2]: 100 * 2.5 + 50
1

Điều này mang lại thời gian thực hiện hơn nữa xuống 0. 5 giây trong trường hợp này, với hai lõi và bốn luồng được sử dụng. Nhìn chung, đây là một cải tiến hiệu suất gấp 30 lần. Đặc biệt, lưu ý rằng loại cải tiến này có thể thực hiện được mà không cần thay đổi vấn đề/thuật toán cơ bản và không cần biết gì về các vấn đề biên dịch và song song hóa. Các khả năng có thể truy cập từ cấp cao ngay cả bởi những người không phải là chuyên gia. Tuy nhiên, tất nhiên, người ta phải nhận thức được những khả năng nào tồn tại

Ví dụ cho thấy rằng

In [2]: 100 * 2.5 + 50
2 cung cấp một số tùy chọn để tận dụng tối đa các tài nguyên hiện có—i. e. , tăng năng suất. Với cách tiếp cận tuần tự, khoảng 21 triệu đánh giá mỗi giây được thực hiện, trong khi cách tiếp cận song song cho phép gần 48 triệu đánh giá mỗi giây—trong trường hợp này chỉ đơn giản bằng cách yêu cầu
In [2]: 100 * 2.5 + 50
2 sử dụng tất cả các luồng CPU có sẵn thay vì chỉ một

Từ nguyên mẫu đến sản xuất

Hiệu quả trong phân tích tương tác và hiệu suất khi nói đến tốc độ thực thi chắc chắn là hai lợi ích của

In [2]: 100 * 2.5 + 50
2 cần xem xét. Tuy nhiên, một lợi ích lớn khác của việc sử dụng
In [2]: 100 * 2.5 + 50
2 cho tài chính thoạt nhìn có vẻ tinh vi hơn một chút; . Đó là khả năng sử dụng
In [2]: 100 * 2.5 + 50
2 từ đầu đến cuối, từ nguyên mẫu đến sản xuất

Thực tiễn ngày nay tại các tổ chức tài chính trên toàn cầu, khi nói đến các quy trình phát triển tài chính, thường được đặc trưng bởi một quy trình hai bước riêng biệt. Một mặt, có các nhà phân tích định lượng [“quants”] chịu trách nhiệm phát triển mô hình và tạo nguyên mẫu kỹ thuật. Họ thích sử dụng các công cụ và môi trường như

In [2]: 100 * 2.5 + 50
218 và
In [2]: 100 * 2.5 + 50
219 cho phép phát triển ứng dụng tương tác nhanh chóng. Ở giai đoạn nỗ lực phát triển này, các vấn đề như hiệu suất, tính ổn định, quản lý ngoại lệ, tách quyền truy cập dữ liệu và phân tích, trong số những vấn đề khác, không quá quan trọng. Một người chủ yếu tìm kiếm bằng chứng về khái niệm và/hoặc nguyên mẫu thể hiện các tính năng mong muốn chính của thuật toán hoặc toàn bộ ứng dụng

Sau khi nguyên mẫu kết thúc, bộ phận CNTT cùng với các nhà phát triển của họ sẽ tiếp quản và chịu trách nhiệm dịch mã nguyên mẫu hiện có thành mã sản xuất đáng tin cậy, có thể bảo trì và hoạt động hiệu quả. Thông thường, ở giai đoạn này, có một sự thay đổi mô hình trong đó các ngôn ngữ như

In [2]: 100 * 2.5 + 50
285++ hoặc
In [2]: 100 * 2.5 + 50
286 hiện được sử dụng để đáp ứng các yêu cầu sản xuất. Ngoài ra, một quy trình phát triển chính thức với các công cụ chuyên nghiệp, kiểm soát phiên bản, v.v. được áp dụng

Cách tiếp cận hai bước này có một số hậu quả thường không lường trước được

Không hiệu quả Mã nguyên mẫu không thể tái sử dụng; . Các bộ kỹ năng đa dạng Các bộ phận khác nhau thể hiện các bộ kỹ năng khác nhau và sử dụng các ngôn ngữ khác nhau để thực hiện “những điều giống nhau. ”Mã kế thừa Mã có sẵn và phải được duy trì bằng các ngôn ngữ khác nhau, thường sử dụng các kiểu triển khai khác nhau [e. g. , từ quan điểm kiến ​​trúc]

Mặt khác, sử dụng

In [2]: 100 * 2.5 + 50
2 cho phép quy trình từ đầu đến cuối được sắp xếp hợp lý từ các bước tạo nguyên mẫu tương tác đầu tiên đến mã sản xuất có độ tin cậy cao và có thể bảo trì hiệu quả. Việc giao tiếp giữa các phòng ban khác nhau trở nên dễ dàng hơn. Việc đào tạo lực lượng lao động cũng tinh giản hơn ở chỗ chỉ có một ngôn ngữ chính bao quát mọi lĩnh vực xây dựng ứng dụng tài chính. Nó cũng tránh được sự kém hiệu quả và dư thừa vốn có khi sử dụng các công nghệ khác nhau trong các bước khác nhau của quy trình phát triển. Nói chung,
In [2]: 100 * 2.5 + 50
2 có thể cung cấp một khung công nghệ nhất quán cho hầu hết các nhiệm vụ trong phát triển ứng dụng tài chính và triển khai thuật toán

In [2]: 100 * 2.5 + 50
2 với tư cách là một ngôn ngữ—nhưng còn hơn thế nữa với tư cách là một hệ sinh thái—là một khuôn khổ công nghệ lý tưởng cho ngành tài chính. Nó được đặc trưng bởi một số lợi ích, chẳng hạn như cú pháp tao nhã, phương pháp phát triển hiệu quả và khả năng sử dụng để tạo mẫu và sản xuất, trong số những lợi ích khác. Với số lượng lớn các thư viện và công cụ có sẵn,
In [2]: 100 * 2.5 + 50
2 dường như có câu trả lời cho hầu hết các câu hỏi được đặt ra bởi những phát triển gần đây trong ngành tài chính về phân tích, khối lượng và tần suất dữ liệu, tuân thủ và quy định, cũng như bản thân công nghệ. Nó có khả năng cung cấp một khuôn khổ duy nhất, mạnh mẽ, nhất quán để hợp lý hóa các nỗ lực sản xuất và phát triển từ đầu đến cuối ngay cả giữa các tổ chức tài chính lớn hơn

Python có tốt cho phân tích tài chính không?

Python hiện đang trở thành ngôn ngữ lập trình số 1 cho khoa học dữ liệu. Do tính đơn giản và khả năng đọc cao của python, nên nó ngày càng trở nên quan trọng trong ngành tài chính . Khóa học kết hợp cả mã hóa python và các khái niệm thống kê và áp dụng vào việc phân tích dữ liệu tài chính, chẳng hạn như dữ liệu chứng khoán.

Python có được sử dụng trong Mô hình hóa tài chính không?

Python đã phát triển trở thành một trong những ngôn ngữ lập trình phổ biến nhất được sử dụng cho mô hình tài chính .

Chủ Đề